Amazon ECS 배포 시 Amazon EBS 볼륨 구성 지정 - Amazon Elastic Container Service

Amazon ECS 배포 시 Amazon EBS 볼륨 구성 지정

configuredAtLaunch 파라미터가 true로 설정된 작업 정의를 등록한 후 독립 실행형 작업을 실행하거나 서비스를 생성 또는 업데이트할 때 배포 시 Amazon EBS 볼륨을 구성할 수 있습니다.

볼륨을 구성하려면 Amazon ECS API를 사용하거나 다음 AWS CLI 명령의 입력으로 JSON 파일을 전달할 수 있습니다.

  • run-task - 독립 실행형 ECS 작업을 실행합니다.

  • start-task -특정 컨테이너 인스턴스에서 독립 실행형 ECS 작업을 실행합니다. 이 명령은 Fargate 시작 유형 작업에는 적용할 수 없습니다.

  • create-service - 새 ECS 서비스를 생성합니다.

  • update-service - 기존 서비스를 업데이트합니다.

참고

작업의 컨테이너에서 탑재된 Amazon EBS 볼륨에 쓰려면 컨테이너를 루트 사용자로 실행해야 합니다.

또한 AWS Management Console을 사용하여 Amazon EBS 볼륨을 구성할 수도 있습니다. 자세한 내용은 애플리케이션을 Amazon ECS 태스크로 실행, 콘솔을 사용하여 Amazon ECS 서비스 생성, Amazon ECS 서비스 업데이트 섹션을 참조하세요.

다음 JSON 코드 조각은 배포 시 구성할 수 있는 Amazon EBS 볼륨의 모든 파라미터를 보여줍니다. 볼륨 구성에 이러한 파라미터를 사용하려면 user input placeholders를 사용자 정보로 바꿉니다. 이러한 파라미터에 대한 자세한 내용은 볼륨 구성을 참조하세요.

"volumeConfigurations": [ { "name": "ebs-volume", "managedEBSVolume": { "encrypted": true, "kmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "volumeType": "gp3", "sizeInGiB": 10, "snapshotId": "snap-12345", "volumeInitializationRate":100, "iops": 3000, "throughput": 125, "tagSpecifications": [ { "resourceType": "volume", "tags": [ { "key": "key1", "value": "value1" } ], "propagateTags": "NONE" } ], "roleArn": "arn:aws:iam::1111222333:role/ecsInfrastructureRole", "terminationPolicy": { "deleteOnTermination": true//can't be configured for service-managed tasks, always true }, "filesystemType": "ext4" } } ]
중요

구성에서 지정하는 volumeName이 작업 정의에서 지정하는 volumeName과 같은지 확인합니다.

볼륨 연결 상태를 확인하는 방법에 대한 자세한 내용은 Amazon ECS 작업에 Amazon EBS 볼륨 연결 관련 문제 해결 섹션을 참조하세요. EBS 볼륨 연결에 필요한 Amazon ECS 인프라 AWS Identity and Access Management(IAM) 역할에 대한 자세한 내용은 Amazon ECS 인프라 IAM 역할 섹션을 참조하세요.

다음은 Amazon EBS 볼륨의 구성을 보여주는 JSON 코드 조각 예제입니다. 코드 조각을 JSON 파일에 저장하고 --cli-input-json file://filename 파라미터를 사용하여 파일을 AWS CLI 명령의 파라미터로 전달하여 이 예제를 사용할 수 있습니다. user input placeholders를 사용자의 정보로 대체합니다.

독립 실행형 작업에 대한 볼륨 구성

다음 코드 조각은 Amazon EBS 볼륨을 독립 실행형 작업에 연결하도록 구성하는 구문을 보여줍니다. 다음 JSON 코드 조각은 volumeType, sizeInGiB, encrypted, kmsKeyId 설정을 구성하는 구문을 보여줍니다. JSON 파일에 지정된 구성은 EBS 볼륨을 생성하여 독립 실행형 작업에 연결하는 데 사용됩니다.

{ "cluster": "mycluster", "taskDefinition": "mytaskdef", "volumeConfigurations": [ { "name": "datadir", "managedEBSVolume": { "volumeType": "gp3", "sizeInGiB": 100, "roleArn":"arn:aws:iam::1111222333:role/ecsInfrastructureRole", "encrypted": true, "kmsKeyId": "arn:aws:kms:region:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } } ] }

서비스 생성 시 볼륨 구성

다음 코드 조각은 서비스에서 관리하는 작업에 연결하도록 Amazon EBS 볼륨을 구성하는 구문을 보여줍니다. 볼륨은 snapshotId 파라미터를 사용하여 지정된 스냅샷에서 200MiB/s의 속도로 소싱됩니다. JSON 파일에 지정된 구성은 EBS 볼륨을 생성하여 서비스에서 관리하는 각 작업에 연결하는 데 사용됩니다.

{ "cluster": "mycluster", "taskDefinition": "mytaskdef", "serviceName": "mysvc", "desiredCount": 2, "volumeConfigurations": [ { "name": "myEbsVolume", "managedEBSVolume": { "roleArn":"arn:aws:iam::1111222333:role/ecsInfrastructureRole", "snapshotId": "snap-12345", "volumeInitializationRate": 200 } } ] }

서비스 업데이트 시 볼륨 구성

다음 JSON 코드 조각은 이전에 작업에 연결하도록 Amazon EBS 볼륨을 구성하지 않았던 서비스를 업데이트하는 구문을 보여줍니다. configuredAtLaunchtrue로 설정된 작업 정의 개정의 ARN을 제공해야 합니다. 다음 JSON 코드 조각은 volumeType, sizeInGiB, throughput, iops, filesystemType 설정을 구성하는 구문을 보여줍니다. 이 구성은 EBS 볼륨을 생성하여 서비스에서 관리하는 각 작업에 연결하는 데 사용됩니다.

{ "cluster": "mycluster", "taskDefinition": "mytaskdef", "service": "mysvc", "desiredCount": 2, "volumeConfigurations": [ { "name": "myEbsVolume", "managedEBSVolume": { "roleArn":"arn:aws:iam::1111222333:role/ecsInfrastructureRole", "volumeType": "gp3", "sizeInGiB": 100, "iops": 3000, "throughput": 125, "filesystemType": "ext4" } } ] }

Amazon EBS 볼륨을 더 이상 사용하지 않도록 서비스 구성

다음 JSON 코드 조각은 Amazon EBS 볼륨을 더 이상 사용하지 않도록 서비스를 업데이트하는 구문을 보여줍니다. configuredAtLaunchfalse로 설정된 작업 정의 또는 configuredAtLaunch 파라미터가 없는 작업 정의의 ARN을 제공해야 합니다. 또한 빈 volumeConfigurations 객체를 제공해야 합니다.

{ "cluster": "mycluster", "taskDefinition": "mytaskdef", "service": "mysvc", "desiredCount": 2, "volumeConfigurations": [] }

Amazon EBS 볼륨에 대한 종료 정책

Amazon ECS 작업이 종료되면 Amazon ECS는 deleteOnTermination 값을 사용하여 종료된 작업에 연결된 Amazon EBS 볼륨을 삭제할지 여부를 결정합니다. 기본적으로 작업에 연결된 EBS 볼륨은 작업이 종료될 때 삭제됩니다. 독립 실행형 작업의 경우 이 설정을 변경하여 대신 작업 종료 시 볼륨을 보존할 수 있습니다.

참고

서비스에서 관리하는 작업에 연결된 볼륨은 보존되지 않으며 작업 종료 시 항상 삭제됩니다.

Amazon EBS 볼륨 태그 지정

tagSpecifications 객체를 사용하여 Amazon EBS 볼륨에 태그를 지정할 수 있습니다. 객체를 사용하여 볼륨이 독립 실행형 작업에 연결되었는지 또는 서비스 내 작업에 연결되었는지에 따라 자체 태그를 제공하고 작업 정의 또는 서비스에서 태그 전파를 설정할 수 있습니다. 볼륨에 연결할 수 있는 최대 태그 수는 50개입니다.

중요

Amazon ECS는 Amazon EBS 볼륨에 예약된 태그 AmazonECSCreatedAmazonECSManaged를 자동으로 연결합니다. 즉, 볼륨에 최대 48개의 추가 태그 연결을 제어할 수 있습니다. 이러한 추가 태그는 사용자 정의 태그, ECS 관리형 태그 또는 전파된 태그일 수 있습니다.

Amazon ECS 관리형 태그를 볼륨에 추가하려면 UpdateService, CreateService, RunTask 또는 StartTask 직접 호출에서 enableECSManagedTagstrue로 설정해야 합니다. Amazon ECS 관리형 태그를 켜면 Amazon ECS에서 클러스터 및 서비스 정보(aws:ecs:clusterNameaws:ecs:serviceName)로 볼륨에 태그를 자동 지정합니다. Amazon ECS 리소스 태그 지정에 대한 자세한 내용은 Amazon ECS 리소스 태그 지정을 참조하세요.

다음 JSON 코드 조각은 사용자 정의 태그를 사용하여 서비스의 각 작업에 연결된 각 Amazon EBS 볼륨에 사용자 정의 태그를 지정하는 구문을 보여줍니다. 서비스를 생성하는 데 이 예제를 사용하려면 user input placeholders를 사용자 정보로 바꿉니다.

{ "cluster": "mycluster", "taskDefinition": "mytaskdef", "serviceName": "mysvc", "desiredCount": 2, "enableECSManagedTags": true, "volumeConfigurations": [ { "name": "datadir", "managedEBSVolume": { "volumeType": "gp3", "sizeInGiB": 100, "tagSpecifications": [ { "resourceType": "volume", "tags": [ { "key": "key1", "value": "value1" } ], "propagateTags": "NONE" } ], "roleArn":"arn:aws:iam:1111222333:role/ecsInfrastructureRole", "encrypted": true, "kmsKeyId": "arn:aws:kms:region:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } } ] }
중요

Amazon EBS 볼륨에 태그를 지정하려면 volume 리소스 유형을 지정해야 합니다.