콘솔을 사용한 Amazon ECS용 Amazon EFS 파일 시스템 구성
콘솔을 사용한 Amazon ECS용 Amazon EFS 파일 시스템 구성
Amazon ECS와 함께 Amazon Elastic File System(Amazon EFS) 파일 시스템을 사용하는 방법을 알아봅니다. 이 튜토리얼은 EFS 파일 시스템을 만들고 ECS 태스크에 마운트하는 전체 과정을 안내합니다.
출처: 문서
본문
Amazon ECS와 함께 Amazon Elastic File System(Amazon EFS) 파일 시스템을 사용하는 방법을 알아봅니다.
1단계: Amazon ECS 클러스터 생성 (Step 1: Create an Amazon ECS cluster)
다음 단계에 따라 Amazon ECS 클러스터를 만듭니다.
새 클러스터를 만들려면 (Amazon ECS 콘솔)
시작하기 전에 적절한 IAM 권한을 할당하세요. 자세한 내용은 Amazon ECS 클러스터 예시 문서를 참고하세요.
- 콘솔을 https://console.aws.amazon.com/ecs/v2 에서 엽니다.
- 탐색 표시줄에서 사용할 리전을 선택합니다.
- 탐색 창에서 Clusters를 선택합니다.
- Clusters 페이지에서 Create cluster를 선택합니다.
- Cluster configuration 아래의 Cluster name에 클러스터 이름으로
EFS-tutorial을 입력합니다. - (선택 사항) 태스크와 서비스가 실행되는 VPC와 서브넷을 변경하려면 Networking 아래에서 다음 작업 중 하나를 수행합니다:
- 서브넷을 제거하려면 Subnets 아래에서 제거할 각 서브넷의 X를 선택합니다.
- 기본 VPC가 아닌 다른 VPC로 변경하려면 VPC 아래에서 기존 VPC를 선택한 다음 Subnets 아래에서 각 서브넷을 선택합니다.
- 클러스터에 Amazon EC2 인스턴스를 추가하려면 Infrastructure를 확장하고 Amazon EC2 instances를 선택합니다. 다음으로 capacity provider 역할을 하는 Auto Scaling 그룹을 구성합니다:
- Auto Scaling 그룹을 만들려면 **Auto Scaling group (ASG)**에서 Create new group을 선택한 다음 그룹에 대한 다음 세부 정보를 제공합니다:
- Operating system/Architecture에서
Amazon Linux 2를 선택합니다. - EC2 instance type에서
t2.micro를 선택합니다. - SSH key pair에서 인스턴스에 연결할 때 사용자의 신원을 증명하는 페어를 선택합니다.
- Capacity에
1을 입력합니다.
- Operating system/Architecture에서
- Auto Scaling 그룹을 만들려면 **Auto Scaling group (ASG)**에서 Create new group을 선택한 다음 그룹에 대한 다음 세부 정보를 제공합니다:
- Create를 선택합니다.
2단계: Amazon EC2 인스턴스와 Amazon EFS 파일 시스템용 보안 그룹 생성 (Step 2: Create a security group)
이 단계에서는 포트 80의 인바운드 네트워크 트래픽을 허용하는 Amazon EC2 인스턴스용 보안 그룹과, 컨테이너 인스턴스에서의 인바운드 접근을 허용하는 Amazon EFS 파일 시스템용 보안 그룹을 만듭니다.
다음 옵션으로 Amazon EC2 인스턴스용 보안 그룹을 만듭니다:
- Security group name — 보안 그룹의 고유한 이름
- VPC — 앞서 클러스터용으로 식별한 VPC
- Inbound rule
- Type — HTTP
- Source —
0.0.0.0/0
다음 옵션으로 Amazon EFS 파일 시스템용 보안 그룹을 만듭니다:
- Security group name — 보안 그룹의 고유한 이름. 예:
EFS-access-for-sg-dc025fa2 - VPC — 앞서 클러스터용으로 식별한 VPC
- Inbound rule
- Type — NFS
- Source — 인스턴스용으로 만든 보안 그룹의 ID가 있는 Custom
보안 그룹 생성 방법에 대한 자세한 내용은 Amazon EC2 사용자 가이드의 Amazon EC2 인스턴스용 보안 그룹 생성 문서를 참고하세요.
3단계: Amazon EFS 파일 시스템 생성 (Step 3: Create an Amazon EFS file system)
이 단계에서는 Amazon EFS 파일 시스템을 만듭니다.
Amazon ECS 태스크용 Amazon EFS 파일 시스템을 만들려면
- https://console.aws.amazon.com/efs/ 에서 Amazon Elastic File System 콘솔을 엽니다.
- Create file system을 선택합니다.
- 파일 시스템의 이름을 입력한 다음 컨테이너 인스턴스가 호스팅되는 VPC를 선택합니다. 기본적으로 지정된 VPC의 각 서브넷은 해당 VPC의 기본 보안 그룹을 사용하는 마운트 대상(mount target)을 받습니다. 그런 다음 Customize를 선택합니다.
- 참고: 이 튜토리얼은 Amazon EFS 파일 시스템, Amazon ECS 클러스터, 컨테이너 인스턴스, 태스크가 같은 VPC에 있다고 가정합니다. 다른 VPC에서 파일 시스템을 마운트하는 방법에 대한 자세한 내용은 Amazon EFS 사용자 가이드의 연습: 다른 VPC에서 파일 시스템 마운트 문서를 참고하세요.
- File system settings 페이지에서 선택적 설정을 구성한 다음 Performance settings 아래에서 파일 시스템의 Bursting throughput mode를 선택합니다. 설정을 구성한 후 Next를 선택합니다.
- (선택 사항) 파일 시스템에 태그를 추가합니다. 예를 들어 Name 키 옆 Value 열에 이름을 입력하여 파일 시스템의 고유한 이름을 지정할 수 있어요.
- (선택 사항) 자주 액세스하지 않는 스토리지에 대한 비용을 절약하려면 수명 주기 관리(lifecycle management)를 활성화합니다. 자세한 내용은 Amazon Elastic File System 사용자 가이드의 EFS Lifecycle Management 문서를 참고하세요.
- (선택 사항) 암호화를 활성화합니다. Amazon EFS 파일 시스템의 저장 데이터(at rest) 암호화를 활성화하려면 확인란을 선택합니다.
- Network access 페이지의 Mount targets 아래에서 모든 가용 영역의 기존 보안 그룹 구성을 2단계에서 파일 시스템용으로 만든 보안 그룹으로 교체한 다음 Next를 선택합니다.
- 이 튜토리얼에서는 File system policy를 구성할 필요가 없으므로 Next를 선택하여 섹션을 건너뜁니다.
- 파일 시스템 옵션을 검토하고 Create를 선택하여 프로세스를 완료합니다.
- File systems 화면에서 File system ID를 기록해 둡니다. 다음 단계에서 이 값을 Amazon ECS 태스크 정의에서 참조합니다.
4단계: Amazon EFS 파일 시스템에 콘텐츠 추가 (Step 4: Add content to the Amazon EFS file system)
이 단계에서는 Amazon EFS 파일 시스템을 Amazon EC2 인스턴스에 마운트하고 콘텐츠를 추가합니다. 이 튜토리얼에서는 데이터의 지속성(permanent)을 설명하기 위한 테스트 목적입니다. 이 기능을 사용할 때는 일반적으로 애플리케이션이나 다른 방법으로 Amazon EFS 파일 시스템에 데이터를 쓰게 됩니다.
Amazon EC2 인스턴스를 만들고 Amazon EFS 파일 시스템을 마운트하려면
- https://console.aws.amazon.com/ec2/ 에서 Amazon EC2 콘솔을 엽니다.
- Launch Instance를 선택합니다.
- Application and OS Images (Amazon Machine Image) 아래에서
Amazon Linux 2 AMI (HVM)을 선택합니다. - Instance type 아래에서 기본 인스턴스 유형인
t2.micro를 유지합니다. - Key pair (login) 아래에서 인스턴스에 SSH 접근하기 위한 키 페어를 선택합니다.
- Network settings 아래에서 Amazon EFS 파일 시스템과 Amazon ECS 클러스터에 지정한 VPC를 선택합니다. 서브넷과 2단계에서 만든 인스턴스 보안 그룹을 선택합니다. 인스턴스의 보안 그룹을 구성합니다. Auto-assign public IP가 활성화되어 있는지 확인하세요.
- Configure storage 아래에서 파일 시스템에 대해 Edit 버튼을 선택한 다음 EFS를 선택합니다. 3단계에서 만든 파일 시스템을 선택합니다. 선택적으로 마운트 포인트를 변경하거나 기본값을 그대로 둘 수 있어요.
- 중요: 인스턴스에 파일 시스템을 추가하려면 먼저 서브넷을 선택해야 합니다.
- Automatically create and attach security groups를 선택 해제합니다. 다른 확인란은 선택된 상태로 둡니다. Add shared file system을 선택합니다.
- Advanced Details 아래에서 사용자 데이터 스크립트에 Amazon EFS 파일 시스템 마운트 단계가 자동으로 채워져 있는지 확인합니다.
- Summary 아래에서 Number of instances가 1인지 확인합니다. Launch instance를 선택합니다.
- Launch an instance 페이지에서 View all instances를 선택하여 인스턴스 상태를 확인합니다. 처음에는 Instance state 상태가
PENDING입니다. 상태가RUNNING으로 변경되고 인스턴스가 모든 상태 확인을 통과하면 인스턴스를 사용할 준비가 된 것입니다.
Amazon EC2 인스턴스에 연결하고 Amazon EFS 파일 시스템에 콘텐츠를 추가하려면
- 만든 Amazon EC2 인스턴스에 SSH로 연결합니다. 자세한 내용은 Amazon EC2 사용자 가이드의 SSH를 사용한 Linux 인스턴스 연결 문서를 참고하세요.
- 터미널 창에서
df -T명령을 실행해 Amazon EFS 파일 시스템이 마운트되었는지 확인합니다. 다음 출력에서 Amazon EFS 파일 시스템 마운트를 강조 표시했습니다.
$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
devtmpfs devtmpfs 485468 0 485468 0% /dev
tmpfs tmpfs 503480 0 503480 0% /dev/shm
tmpfs tmpfs 503480 424 503056 1% /run
tmpfs tmpfs 503480 0 503480 0% /sys/fs/cgroup
/dev/xvda1 xfs 8376300 1310952 7065348 16% /
127.0.0.1:/ nfs4 9007199254739968 0 9007199254739968 0% /mnt/efs/fs1
tmpfs tmpfs 100700 0 100700 0% /run/user/1000
- Amazon EFS 파일 시스템이 마운트된 디렉터리로 이동합니다. 앞선 예시에서 그 위치는
/mnt/efs/fs1입니다. - 다음 콘텐츠로
index.html파일을 만듭니다:
<html>
<body>
<h1>It Works!</h1>
<p>You are using an Amazon EFS file system for persistent container storage.</p>
</body>
</html>
5단계: 태스크 정의 생성 (Step 5: Create a task definition)
다음 태스크 정의는 efs-html이라는 데이터 볼륨을 만듭니다. nginx 컨테이너는 호스트 데이터 볼륨을 NGINX 루트인 /usr/share/nginx/html에 마운트합니다.
Amazon ECS 콘솔을 사용해 새 태스크 정의를 만들려면
- 콘솔을 https://console.aws.amazon.com/ecs/v2 에서 엽니다.
- 탐색 창에서 Task definitions를 선택합니다.
- Create new task definition, Create new task definition with JSON을 선택합니다.
- JSON 편집기 상자에 다음 JSON 텍스트를 복사하여 붙여넣고,
fileSystemId를 Amazon EFS 파일 시스템의 ID로 바꿉니다.
{
"containerDefinitions": [
{
"memory": 128,
"portMappings": [
{
"hostPort": 80,
"containerPort": 80,
"protocol": "tcp"
}
],
"essential": true,
"mountPoints": [
{
"containerPath": "/usr/share/nginx/html",
"sourceVolume": "efs-html"
}
],
"name": "nginx",
"image": "public.ecr.aws/docker/library/nginx:latest"
}
],
"volumes": [
{
"name": "efs-html",
"efsVolumeConfiguration": {
"fileSystemId": "fs-1324abcd",
"transitEncryption": "ENABLED"
}
}
],
"family": "efs-tutorial",
"executionRoleArn":"arn:aws:iam::111122223333:role/ecsTaskExecutionRole"
}
참고: Amazon ECS 태스크 실행 IAM 역할은 Amazon EFS 파일 시스템을 마운트하기 위해 특정 Amazon EFS 관련 권한이 필요하지 않습니다. 기본적으로 Amazon EFS 리소스 기반 정책이 없으면 파일 시스템 생성 시 모든 보안 주체(
*)에게 접근이 부여됩니다. Amazon ECS 태스크 역할은 Amazon ECS 태스크 정의에서 "EFS IAM authorization"이 활성화된 경우에만 필요합니다. 활성화되면 태스크 역할 ID가 Amazon EFS 리소스 기반 정책에서 Amazon EFS 파일 시스템에 접근하도록 허용되어야 하며, 익명 접근은 비활성화되어야 합니다.
- Create를 선택합니다.
6단계: 태스크 실행 및 결과 확인 (Step 6: Run a task and view the results)
이제 Amazon EFS 파일 시스템이 생성되었고 NGINX 컨테이너가 서비스할 웹 콘텐츠가 있으므로, 만든 태스크 정의를 사용해 태스크를 실행할 수 있어요. NGINX 웹 서버는 간단한 HTML 페이지를 서비스합니다. Amazon EFS 파일 시스템의 콘텐츠를 업데이트하면 해당 변경 사항은 파일 시스템을 마운트한 모든 컨테이너에도 전파됩니다.
태스크는 클러스터에 대해 정의한 서브넷에서 실행됩니다.
콘솔을 사용해 태스크를 실행하고 결과를 보려면
- 콘솔을 https://console.aws.amazon.com/ecs/v2 에서 엽니다.
- Clusters 페이지에서 독립 실행형 태스크를 실행할 클러스터를 선택합니다.
- 서비스를 시작할 리소스를 결정합니다.
- Clusters에서: Clusters 페이지에서 서비스를 만들 클러스터를 선택합니다. Tasks 탭에서 Run new task를 선택합니다.
- Task 페이지에서 태스크 정의를 선택합니다. 개정이 둘 이상이면 개정을 선택합니다. Create, Run task를 선택합니다.
- (선택 사항) 예약된 태스크가 클러스터 인프라에 분산되는 방식을 선택합니다. Compute configuration을 확장하고 다음을 수행합니다:
- Launch type 배포 방식: Compute options 섹션에서 Launch type을 선택합니다. Launch type에서
EC2를 선택합니다.
- Launch type 배포 방식: Compute options 섹션에서 Launch type을 선택합니다. Launch type에서
- Application type에서
Task를 선택합니다. - Task definition에서 앞서 만든
efs-tutorial태스크 정의를 선택합니다. - Desired tasks에
1을 입력합니다. - Create를 선택합니다.
- Cluster 페이지에서 Infrastructure를 선택합니다.
- Container Instances 아래에서 연결할 컨테이너 인스턴스를 선택합니다.
- Container Instance 페이지의 Networking 아래에서 인스턴스의 Public IP를 기록합니다.
- 브라우저를 열고 퍼블릭 IP 주소를 입력합니다. 다음 메시지가 표시되어야 합니다:
It works!
You are using an Amazon EFS file system for persistent container storage.
참고: 메시지가 표시되지 않으면 컨테이너 인스턴스의 보안 그룹이 포트 80의 인바운드 네트워크 트래픽을 허용하고, 파일 시스템의 보안 그룹이 컨테이너 인스턴스에서의 인바운드 접근을 허용하는지 확인하세요.
더 알아보기 (Learn more)
- Amazon EFS 볼륨과 Amazon EFS IAM 인가에 대한 자세한 내용은 AWS 개발자 가이드의 관련 문서를 참고하세요.