콘솔을 사용하여 Amazon ECS에서 Amazon EFS 파일 시스템 사용 - Amazon Elastic Container Service

콘솔을 사용하여 Amazon ECS에서 Amazon EFS 파일 시스템 사용

Amazon Elastic File System(Amazon EFS)은 Amazon ECS 태스크에 간단하고 확장 가능한 파일 스토리지를 제공합니다. Amazon EFS을 사용하면 파일을 추가하고 제거할 때마다 스토리지 용량이 탄력적으로 자동 확장 및 축소됩니다. 애플리케이션에서 스토리지가 필요할 때 필요한 만큼 확보할 수 있습니다.

Amazon ECS에 Amazon EFS 파일 시스템을 사용하여 Amazon ECS 작업 플릿 간에 파일 시스템 데이터에 액세스할 수 있습니다. 이렇게 하면 태스크는 해당 작업이 차지한 인프라 또는 컨테이너 인스턴스와 상관없이 동일한 영구 스토리지에 액세스할 수 있습니다. Amazon ECS 태스크 정의에서 Amazon EFS 파일 시스템 및 컨테이너 탑재 지점을 참조할 때 Amazon ECS에서 파일 시스템을 컨테이너에 탑재합니다. 다음 섹션은 Amazon ECS에서 Amazon EFS를 사용하기 시작하는 데 도움이 됩니다.

이 기능은 EC2 및 Fargate 시작 유형을 모두 사용하는 작업에서 지원되지만 이 자습서에서는 ECS 시작 유형을 사용하는 Amazon ECS 태스크를 사용합니다. 이 자습서는 또한 단계별로 따라야 하지만, 이러한 리소스 중 일부가 계정에 이미 생성된 경우 일부 단계를 건너뛸 수 있습니다.

참고

일부 리전에서는 Amazon EFS를 사용하지 못할 수 있습니다. Amazon EFS를 지원하는 리전에 대한 자세한 정보는 AWS 일반 참조Amazon Elastic File System Endpoints and Quotas를 참조하세요.

1단계: Amazon ECS 클러스터 생성

다음 단계에 따라 Amazon ECS 클러스터를 생성합니다.

새 클러스터 생성(Amazon ECS 콘솔)

시작하기 전에 적절한 IAM 권한을 할당합니다. 자세한 내용은 클러스터 예제 단원을 참조하십시오.

  1. https://console.aws.amazon.com/ecs/v2에서 콘솔을 엽니다.

  2. 탐색 모음에서 사용할 리전을 선택합니다.

  3. 탐색 창에서 클러스터(Clusters)를 선택합니다.

  4. 클러스터(Clusters) 페이지에서 클러스터 생성(Create cluster)을 선택합니다.

  5. Cluster configuration(클러스터 구성) 아래의 Cluster name(클러스터 이름)에 클러스터 이름으로 EFS-tutorial을 입력합니다.

  6. (선택 사항) 태스크와 서비스가 시작되는 VPC와 서브넷을 변경하려면 네트워킹(Networking)에서 다음 태스크 중 하나를 수행합니다.

    • 서브넷을 제거하려면서브넷(Subnets)에서 제거하려는 각 서브넷에 대해 X를 선택합니다.

    • 기본(default) VPC가 아닌 다른 VPC로 변경하려면 VPC에서 기존 VPC를 선택한 다음 서브넷(Subnets)에서 각 서브넷을 선택합니다.

  7. Amazon EC2 인스턴스를 클러스터에 추가하려면 인프라를 확장한 다음 Amazon EC2 인스턴스스를 선택합니다. 다음으로 용량 공급자 역할을 하는 Auto Scaling 그룹을 구성합니다.

    1. Auto Scaling 그룹을 생성하려면 Auto Scaling 그룹(ASG)(Auto Scaling group (ASG))에서 새 그룹 생성(Create new group)을 선택한 후 그룹에 대한 다음 세부 정보를 제공합니다.

      • Operating system/Architecture(운영 체제/아키텍처)에서 Amazon Linux 2를 선택합니다.

      • EC2 인스턴스 유형(EC2 instance type)t2.micro를 선택합니다.

        SSH 키 페어(SSH key pair)에서 인스턴스에 연결할 때 자격 증명을 증명하는 페어를 선택합니다.

      • 용량1을 입력합니다.

  8. 생성(Create)을 선택합니다.

2단계: Amazon EC2 인스턴스 및 Amazon EFS 파일 시스템의 보안 그룹 생성

이 단계에서는 포트 80에서 인바운드 네트워크 트래픽을 허용하는 Amazon EC2 인스턴스 및 컨테이터 인스턴스에서 인바운드 액세스를 허용하는 Amazon EFS 파일 시스템의 보안 그룹을 생성합니다.

다음 옵션을 사용하여 Amazon EC2 인스턴스에 대한 보안 그룹을 생성합니다.

  • 보안 그룹 이름 - 보안 그룹의 고유한 이름입니다.

  • VPC - 클러스터에 대해 앞서 확인한 VPC입니다.

  • 인바운드 규칙

    • 유형 - HTTP

    • 소스 - 0.0.0.0/0.

다음 옵션을 사용하여 Amazon EFS 파일 시스템에 대한 보안 그룹을 생성합니다.

  • 보안 그룹 이름 - 보안 그룹의 고유한 이름입니다. 예를 들면 EFS-access-for-sg-dc025fa2입니다.

  • VPC - 클러스터에 대해 앞서 확인한 VPC입니다.

  • 인바운드 규칙

    • 유형 - NFS

    • 소스 - 인스턴스용으로 생성한 보안 그룹의 ID를 사용하여 사용자 지정합니다.

보안 그룹을 생성하는 방법에 대한 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서의 보안 그룹 생성을 참조하세요.

3단계: Amazon EFS 파일 시스템 생성

이 단계에서는 Amazon EFS 파일 시스템을 생성합니다.

Amazon ECS 작업에 대한 Amazon EFS 파일 시스템 생성하기
  1. Amazon Elastic File System 콘솔(https://console.aws.amazon.com/efs/)을 엽니다.

  2. 파일 시스템 생성(Create file system)을 선택합니다.

  3. 파일 시스템의 이름을 입력한 다음 컨테이너 인스턴스가 호스팅되는 VPC를 선택합니다. 기본적으로 지정된 VPC의 각 서브넷은 해당 VPC의 기본 보안 그룹을 사용하는 탑재 대상을 수신합니다. 그런 다음 사용자 지정을 선택합니다.

    참고

    이 자습서에서는 Amazon EFS 파일 시스템, Amazon ECS 클러스터, 컨테이너 인스턴스 및 작업이 동일한 VPC에 있다고 가정합니다. 다른 VPC에서 파일 시스템을 탑재하는 방법에 대한 자세한 내용은 Amazon EFS 사용 설명서의 Walkthrough: Mount a file system from a different VPC를 참조하세요.

  4. 파일 시스템 설정 페이지에서 선택적 설정을 구성한 다음 성능 설정에서 파일 시스템의 버스트 처리량 모드를 선택합니다. 설정을 구성한 후 다음을 선택합니다.

    1. (선택 사항) 파일 시스템에 대한 태그를 추가합니다. 예를 들어, 이름(Name) 키 옆에 있는 값(Value) 열에 해당 이름을 입력하여 파일 시스템에 대한 고유한 이름을 지정할 수 있습니다.

    2. (선택 사항) 수명 주기 관리를 통해 자주 액세스하지 않는 스토리지에 드는 비용을 절감할 수 있습니다. 자세한 정보는 Amazon Elastic File System User GuideEFS 수명 주기 관리를 참조하세요.

    3. (선택 사항) 암호화를 활성화합니다. 유휴 상태인 Amazon EFS 파일 시스템의 암호화를 활성화하려면 확인란을 선택합니다.

  5. 네트워크 액세스 페이지의 탑재 대상에서 모든 가용 영역의 기존 보안 그룹 구성을 2단계: Amazon EC2 인스턴스 및 Amazon EFS 파일 시스템의 보안 그룹 생성에서 파일 시스템용으로 생성한 보안 그룹으로 바꾸고 다음을 선택합니다.

  6. 이 자습서에서는 파일 시스템 정책을 구성할 필요가 없으므로 다음을 선택하여 이 섹션을 건너뛰어도 됩니다.

  7. 파일 시스템 옵션을 검토하고 생성을 선택하여 프로세스를 완료합니다.

  8. 파일 시스템 화면에서 파일 시스템 ID를 기록합니다. 다음 단계에서는 Amazon ECS 태스크 정의에서 이 값을 참조합니다.

4단계: Amazon EFS 파일 시스템에 콘텐츠 추가

이 단계에서는 Amazon EFS 파일 시스템을 Amazon EC2 인스턴스에 탑재하고 콘텐츠를 추가합니다. 이는 데이터의 지속적인 특성을 설명하기 위해 이 자습서에서 테스트 목적으로 사용됩니다. 이 기능을 사용하면 일반적으로 애플리케이션이나 Amazon EFS 파일 시스템에 데이터를 쓰는 다른 방법이 있습니다.

Amazon EC2 인스턴스를 생성하고 Amazon EFS 파일 시스템을 탑재하려면
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 인스턴스 시작을 선택합니다.

  3. 애플리케이션 및 OS 이미지(Amazon Machine Image)에서 Amazon Linux 2 AMI(HVM)를 선택합니다.

  4. 인스턴스 유형에서 기본 인스턴스 유형 t2.micro를 유지합니다.

  5. 키 쌍(로그인)에서 인스턴스에 대한 SSH 액세스를 위한 키 쌍을 선택합니다.

  6. 네트워크 설정에서 Amazon EFS 파일 시스템 및 Amazon ECS 클러스터에 대해 지정한 VPC를 선택합니다. 서브넷과 2단계: Amazon EC2 인스턴스 및 Amazon EFS 파일 시스템의 보안 그룹 생성에서 생성한 인스턴스 보안 그룹을 선택합니다. 인스턴스의 보안 그룹을 구성합니다. 퍼블릭 IP 자동 할당이 활성화되어 있는지 확인합니다.

  7. 스토리지 구성에서 파일 시스템의 편집 버튼을 선택한 다음 EFS를 선택합니다. 3단계: Amazon EFS 파일 시스템 생성에서 생성한 파일 시스템을 선택합니다. 선택적으로 탑재 지점을 변경하거나 기본값을 그대로 둘 수 있습니다.

    중요

    서브넷을 선택해야만 인스턴스에 파일 시스템을 추가할 수 있습니다.

  8. 보안 그룹 자동 생성 및 연결을 선택 취소합니다. 다른 확인란은 선택된 상태로 둡니다. 공유 파일 시스템 추가(Add shared file system)를 선택합니다.

  9. 고급 세부 정보(Advanced Details)에서 Amazon EFS 파일 시스템 탑재 단계를 사용하여 사용자 데이터 스크립트가 자동으로 채워져 있는지 확인합니다.

  10. 요약에서 인스턴스 수1인지 확인합니다. 인스턴스 시작을 선택합니다.

  11. 인스턴스 시작 페이지에서 모든 인스턴스 보기를 선택하여 인스턴스의 상태를 확인합니다. 처음에는 인스턴스 상태PENDING입니다. 상태가 RUNNING으로 변경되고 인스턴스가 모든 상태 확인을 통과하면 인스턴스를 사용할 준비가 된 것입니다.

이제 Amazon EC2 인스턴스에 연결하고 Amazon EFS 파일 시스템에 콘텐츠를 추가합니다.

Amazon EC2 인스턴스에 연결하고 Amazon EFS 파일 시스템에 콘텐츠를 추가하려면
  1. SSH를 사용하여 생성된 Amazon EC2 인스턴스에 연결합니다. 자세한 정보는 Linux 인스턴스용 Amazon EC2 사용 설명서에서 Linux 인스턴스에 연결을 참조하세요.

  2. 터미널 창에서 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
  3. Amazon EFS 파일 시스템이 탑재된 디렉터리로 이동합니다. 위 예제에서는 /mnt/efs/fs1이 여기에 해당합니다.

  4. 다음 콘텐츠가 포함된 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단계: 태스크 정의 생성

다음 태스크 정의는 efs-html이라는 데이터 볼륨을 생성합니다. nginx 컨테이너는 NGINX 루트 /usr/share/nginx/html에서 호스트 데이터 볼륨을 탑재합니다.

Amazon ECS 콘솔을 사용하여 새 작업 정의를 생성하는 방법
  1. https://console.aws.amazon.com/ecs/v2에서 콘솔을 엽니다.

  2. 탐색 창에서 작업 정의를 선택합니다.

  3. 새 태스크 정의 생성(Create new task definition), JSON으로 새 태스크 정의 생성(Create new task definition with JSON)을 선택합니다.

  4. 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": "nginx" } ], "volumes": [ { "name": "efs-html", "efsVolumeConfiguration": { "fileSystemId": "fs-1324abcd", "transitEncryption": "ENABLED" } } ], "family": "efs-tutorial", "executionRoleArn":"arn:aws::iam::111122223333:role/ecsTaskExecutionRole" }
    참고

    Amazon ECS 작업 실행 IAM 역할에 다음 권한을 추가하여 Amazon ECS 에이전트가 시작 시 Amazon EFS 파일 시스템을 찾아 작업에 탑재할 수 있습니다.

    • elasticfilesystem:ClientMount

    • elasticfilesystem:ClientWrite

    • elasticfilesystem:DescribeMountTargets

    • elasticfilesystem:DescribeFileSystems

  5. 생성(Create)을 선택합니다.

6단계: 작업 실행 및 결과 보기

이제 Amazon EFS 파일 시스템이 생성되고 NGINX 컨테이너에 사용할 웹 콘텐츠가 있으므로 생성된 태스크 정의를 사용하여 태스크를 실행할 수 있습니다. NGINX 웹 서버는 간단한 HTML 페이지를 제공합니다. Amazon EFS 파일 시스템에서 콘텐츠를 업데이트한 경우 변경 사항이 해당 파일 시스템도 탑재한 컨테이너에 전파됩니다.

작업은 클러스터에 정의한 서브넷에서 실행됩니다.

콘솔을 사용하여 작업을 실행하고 결과를 보려면 다음을 수행하세요.
  1. https://console.aws.amazon.com/ecs/v2에서 콘솔을 엽니다.

  2. 클러스터 페이지에서 독립 실행형 태스크를 실행하는 클러스터를 선택합니다.

    서비스를 시작할 리소스를 결정합니다.

    서비스 시작 단계

    클러스터

    1. 클러스터 페이지에서 서비스를 생성할 클러스터를 선택합니다.

    2. 작업(Tasks) 탭에서 새 작업 실행(Run new task)을 선택합니다.

    시작 유형
    1. Task(작업) 페이지에서 작업 정의를 선택합니다.

    2. 개정이 둘 이상 있는 경우 개정을 선택합니다.

    3. Create(생성), Run task(작업 실행)를 선택합니다.

  3. (선택 사항) 예약된 태스크가 클러스터 인프라에 배포되는 방식을 선택합니다. 컴퓨팅 구성(Compute configuration)을 열고 다음을 수행합니다.

    배포 방법 단계
    시작 유형
    1. 컴퓨팅 옵션(Compute options) 섹션에서 시작 유형(Launch type)을 선택합니다.

    2. Launch Type(시작 유형)을 EC2로 선택합니다.

  4. 애플리케이션 유형(Application type)에서 작업(Task)을 선택합니다.

  5. 작업 정의의 경우 앞서 생성한 efs-tutorial 작업 정의를 선택합니다.

  6. Desired tasks(원하는 작업)에 1을 입력합니다.

  7. 생성(Create)을 선택합니다.

  8. Cluster(클러스터) 페이지에서 Infrastructure(인프라)를 선택합니다.

  9. 컨테이너 인스턴스에서 연결할 컨테이너 인스턴스를 선택합니다.

  10. 컨테이너 인스턴스페이지에서 네트워킹 아래에서 인스턴스의 퍼블릭 IP를 기록합니다.

  11. 브라우저를 열고 퍼블릭 IP 주소를 입력합니다. 다음과 메시지가 표시됩니다.

    It works! You are using an Amazon EFS file system for persistent container storage.
    참고

    메시지가 표시되지 않는 경우 컨테이너 인스턴스의 보안 그룹이 포트 80에서 인바운드 네트워크 트래픽을 허용하고 파일 시스템의 보안 그룹이 컨테이너 인스턴스에서 인바인드 액세스를 허용하는지 확인합니다.