Fargate에서 실행 중인 Amazon ECS 컨테이너 또는 태스크에 Amazon EFS 파일 시스템을 마운트하려면 어떻게 해야 하나요?

최종 업데이트 날짜: 2020년 12월 17일

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

간략한 설명

Fargate 태스크 또는 컨테이너에 Amazon EFS 파일 시스템을 마운트하려면 태스크 정의를 생성한 다음, 해당 태스크 정의를 AWS 리전의 모든 가용 영역에 있는 태스크의 컨테이너에서 사용할 수 있도록 해야 합니다. 그러면 Fargate 태스크는 Amazon EFS를 사용하여 사용자가 태스크 정의에 지정한 태스크에 파일 시스템을 자동으로 마운트합니다.

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

해결 방법 섹션의 단계를 완료하기 전에 다음 항목이 있는지 확인합니다.

해결 방법

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

1.    Amazon EFS 파일 시스템을 생성한 후 EFS ID 및 보안 그룹 ID를 기록합니다.

참고: Amazon EFS 파일 시스템, Amazon ECS 클러스터 및 Fargate 태스크는 모두 동일한 VPC에 있어야 합니다.

2.    Fargate 태스크 또는 서비스와 연결된 보안 그룹에서 포트 2049(네트워크 파일 시스템 또는 NFS)의 인바운드 연결을 허용하도록 EFS 파일 시스템의 보안 그룹 규칙을 편집합니다.

3.    Amazon EFS 파일 시스템의 보안 그룹에 대한 포트 2049의 아웃바운드 연결을 허용하도록 Amazon ECS 서비스의 보안 그룹을 업데이트합니다.

태스크 정의 생성

1.    Amazon ECS 콘솔을 여십시오.

2.    탐색 창에서 [작업 정의]를 선택하고 [새 작업 정의 생성]을 선택합니다.

3.    [시작 유형 호환성 선택(Select launch type compatibility)] 섹션에서 [FARGATE]를 선택하고 [다음 단계(Next Step)]를 선택합니다.

4.    [태스크 및 컨테이너 정의 구성(Configure task and container definitions)] 섹션에서 [태스크 정의 이름(Task Definition Name)]에 태스크 정의의 이름을 입력합니다.

5.    [볼륨(Volumes)] 섹션에서 [볼륨 추가(Add volume)]를 선택합니다.

6.    [이름(Name)]에 볼륨 이름을 입력합니다.

7.    [볼륨 유형(Volume type)]에 EFS를 입력합니다.

8.    [파일 시스템 ID(File system ID)]에 Amazon EFS 파일 시스템 ID를 입력합니다.

참고: [루트 디렉터리(Root directory)], [전송 중 암호화(Encryption in transit)] 및 [EFS IAM 권한 부여(EFS IAM authorization)]에 대한 사용자 지정 옵션을 지정할 수 있습니다. 아니면 기본값을 그대로 사용할 수 있습니다. 여기서, “/”는 루트 디렉터리입니다.

9.    [추가(Add)]를 선택합니다.

10.    [컨테이너 정의(Container Definitions)] 섹션에서 [컨테이너 추가(Add container)]를 선택합니다.

11.    [스토리지 및 로깅(STORAGE AND LOGGING)] 섹션의 [마운트 지점(Mount points)] 하위 섹션에서 5단계의 소스 볼륨에 대해 생성한 볼륨을 선택합니다.

12.    [컨테이너 경로(Container path)]에서 컨테이너 경로를 선택합니다.

13.    (선택 사항) [환경(ENVIRONMENT)] 섹션의 [진입점(Entry point)]에 진입점을 입력합니다.

14.    [명령(Command)]에 [df ,-h] 명령을 입력하여 마운트된 파일 시스템을 표시합니다. 

참고: 진입점 및 명령을 사용하여 Amazon EFS 파일 시스템이 마운트되었는지 테스트할 수 있습니다. 기본적으로 df -h 명령이 성공적으로 실행되면 컨테이너가 종료됩니다. 16단계의 JSON 태스크 정의 예제에서는 무한 while 루프를 사용하여 태스크를 계속 실행합니다.

15.    [추가(Add)]를 선택합니다.

16.    태스크 정의 마법사의 나머지 필드를 채운 다음 [생성(Create)]을 선택합니다.

다음 예에서 태스크 정의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)이 있는지 확인합니다.

Fargate 태스크 실행 및 태스크 로그 확인

1.    앞에서 생성한 태스크 정의를 사용하여 Fargate 태스크를 실행합니다.

중요: Fargate 플랫폼 버전 1.4.0에서 태스크를 실행해야 합니다.

2.    Amazon EFS 파일 시스템이 Fargate 컨테이너에 마운트되었는지 확인하려면 태스크 로그를 확인하세요.

df-h 출력은 다음과 유사합니다.

2020-10-27 15:15:35
Filesystem 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

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?