Amazon ECS 컨테이너 또는 Fargate에서 실행 중인 작업에 Amazon EFS 파일 시스템을 마운트하려면 어떻게 해야 합니까?

4분 분량
0

Amazon Elastic Container Service(Amazon ECS) 컨테이너 또는 태스크에 Amazon Elastic File System(Amazon EFS) 파일 시스템을 마운트하려고 합니다. Amazon ECS 컨테이너 또는 작업이 AWS Fargate에서 실행되고 있습니다.

해결 방법

Fargate 작업 또는 컨테이너에 Amazon EFS 파일 시스템을 마운트하려면 먼저 작업 정의를 생성해야 합니다. 다음으로 AWS 리전의 모든 가용 영역에 있는 작업 컨테이너에서 해당 작업 정의를 사용할 수 있게 합니다. 마지막으로 Fargate 작업은 Amazon EFS를 사용하여 작업 정의에 지정된 작업에 파일 시스템을 자동으로 마운트합니다.

중요: 다음 해결 방법은 Fargate 버전 1.4.0 이상에 적용됩니다. 이러한 버전에는 Amazon ECS의 작업 및 컨테이너 수준에서 정의할 수 있는 영구 스토리지가 있습니다. Fargate 버전 1.3.0 이하에서는 Amazon EFS에서 영구 스토리지를 사용할 수 없습니다.

사전 요구 사항

다음이 있어야 합니다.

Amazon EFS 파일 시스템 생성 및 구성

  1. Amazon EFS 파일 시스템을 생성한 다음, EFS ID와 보안 그룹 ID를 기록해 둡니다.
    참고: Amazon EFS 파일 시스템, Amazon ECS 클러스터 및 Fargate 작업은 모두 동일한 VPC에 있어야 합니다.
  2. 인바운드 연결을 허용하도록 EFS 파일 시스템의 보안 그룹 규칙을 편집합니다. Fargate 작업 또는 서비스와 연결된 보안 그룹의 포트 2049(Network File System 또는 NFS)에서 연결을 허용해야 합니다.
  3. 포트 2049에서 Amazon EFS 파일 시스템의 보안 그룹으로의 아웃바운드 연결을 허용하도록 Amazon ECS 서비스의 보안 그룹을 업데이트합니다.

작업 정의 생성

  1. Amazon ECS 클래식 콘솔을 엽니다.
  2. 탐색 창에서 Task Definitions(작업 정의)를 선택한 다음, Create new Task Definition(새 작업 정의 생성)을 선택합니다.
  3. Select launch type compatibility(시작 유형 호환성 선택) 섹션에서 FARGATE를 선택하고 Next Step(다음 단계)을 선택합니다.
  4. 작업 및 컨테이너 정의 구성 섹션에서 작업 정의 이름에 작업 정의의 이름을 입력합니다.
  5. Volume(볼륨) 섹션에서 Add volume(볼륨 추가)을 선택합니다.
  6. 이름에 해당 볼륨 이름을 입력합니다.
  7. Volume Type(볼륨 유형)에 EFS를 입력합니다.
  8. 파일 시스템 ID에는 Amazon EFS 파일 시스템의 ID를 입력합니다.
    참고: 루트 디렉터리, 전송 중 암호화, EFS AWS Identity and Access Management(IAM) 인증을 위한 사용자 지정 옵션을 지정할 수 있습니다. 또는 기본 옵션을 사용할 수 있습니다. 여기서 “/”는 루트 디렉터리입니다.
  9. Add(추가)를 선택합니다.
  10. Containers Definition(컨테이너 정의) 섹션에서 Add container(컨테이너 추가)를 선택합니다.
  11. STORAGE AND LOGGING(스토리지 및 로깅) 섹션의 Mount points(마운트 지점) 하위 섹션에서, 5단계에서 Source volume(소스 볼륨)에 대해 생성한 볼륨을 선택합니다.
  12. Container path(컨테이너 경로)의 경우 컨테이너 경로를 선택합니다.
  13. (선택 사항) ENVIRONMENT 섹션에서 Entry point의 경우 진입점을 입력합니다.
  14. Command의 경우 [df ,-h] 명령을 입력하여 마운트된 파일 시스템을 표시합니다.
    참고: 진입점과 명령을 사용하여 Amazon EFS 파일 시스템이 성공적으로 마운트되었는지 테스트할 수 있습니다. 기본적으로 df -h 명령이 성공적으로 실행된 후 컨테이너가 종료됩니다. 16단계의 JSON 태스크 정의 예제에서는 무한 while 루프를 사용하여 작업을 계속 실행합니다.
  15. Add(추가)를 선택합니다.
  16. 태스크 정의 마법사의 남은 필드를 작성한 다음 Create를 선택합니다.

다음 예제에서 JSON 태스크 정의는 무한 루프를 사용하여 작업을 계속 실행합니다. 태스크 정의는 이름이 efs-test인 데이터 볼륨을 생성합니다. nginx 컨테이너는 Any_Container_Path 경로에서 호스트 데이터 볼륨을 마운트합니다.

{
  "family": "sample-fargate-test",
  "networkMode": "awsvpc",
  "executionRoleArn": "arn:aws:iam::1234567890:role/ecsTaskExecutionRole",
  "containerDefinitions": [
    {
      "name": "fargate-app",
      "image": "nginx",
      "portMappings": [
        {
          "containerPort": 80,
          "hostPort": 80,
          "protocol": "tcp"
        }
      ],
      "essential": true,
      "entryPoint": [
        "sh",
        "-c"
      ],
      "command": [
        "df -h && while true; do echo \"RUNNING\"; done"
      ],
      "mountPoints": [
        {
          "sourceVolume": "efs-test",
          "containerPath": "Any_Container_Path"
        }
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "AWS_LOG_GROUP_PATH",
          "awslogs-region": "AWS_REGION",
          "awslogs-stream-prefix": "AWS_STREAM_PREFIX"
        }
      }
    }
  ],
  "volumes": [
    {
      "name": "efs-test",
      "efsVolumeConfiguration": {
        "fileSystemId": "fs-123xx4x5"
      }
    }
  ],
  "requiresCompatibilities": [
    "FARGATE"
  ],
  "cpu": "256",
  "memory": "512"
}

참고: fileSystemId, logConfiguration, containerPath 및 기타 자리 표시자 값을 다른 사용자 지정 구성 값으로 바꿉니다. 또한 작업 정의에 awslogs 로그 드라이버를 지원하는 실행 역할 Amazon 리소스 이름(ARN)이 있는지 확인하십시오.
여러 EFS를 서로 다른 대상(containerPath)에 마운트하려면 작업 정의에서 다양한 mountPoints볼륨을 정의할 수 있습니다.

Fargate 작업 실행 및 작업 로그 확인

  1. 이전에 만든 작업 정의를 사용하여 Fargate 작업을 실행합니다.
    중요: 작업을 실행하려면 Fargate 플랫폼 버전 1.4.0을 사용해야 합니다.
  2. Amazon EFS 파일 시스템이 Fargate 컨테이너에 성공적으로 마운트되었는지 확인하려면 작업 로그를 확인하십시오.
    다음과 비슷한 df-h 출력이 나타납니다.
    2020-10-27 15:15:35Filesystem 1K-blocks Used Available Use% Mounted on
    
    2020-10-27 15:15:35
    overlay 30832548 9859324 19383976 34% /
    
    2020-10-27 15:15:35
    tmpfs 65536 0 65536 0% /dev
    
    2020-10-27 15:15:35
    shm 2018788 0 2018788 0% /dev/shm
    
    2020-10-27 15:15:35
    tmpfs 2018788 0 2018788 0% /sys/fs/cgroup
    
    2020-10-27 15:15:35
    fs-xxxxxxxx.efs.us-east-1.amazonaws.com:/ 9007199254739968 0 9007199254739968 0% /Any_Container_Path
    
    2020-10-27 15:15:35
    /dev/xvdcz 30832548 9859324 19383976 34% /etc/hosts
    
    2020-10-27 15:15:35
    tmpfs 2018788 0 2018788 0% /proc/acpi
    
    2020-10-27 15:15:35
    tmpfs 2018788 0 2018788 0% /sys/firmware
    
    2020-10-27 15:15:35
    tmpfs 2018788 0 2018788 0% /proc/scsi
    
    RUNNING

관련 정보

Amazon EFS 볼륨에 대한 보안 및 액세스 제어

Amazon ECS 작업 정의에 Amazon EFS 파일 시스템 지정

콘솔을 사용하여 Amazon ECS용 Amazon EFS 파일 시스템 구성

AWS 공식
AWS 공식업데이트됨 19일 전