Amazon S3에 Amazon ECS 컨테이너 인스턴스 구성 저장 - Amazon Elastic Container Service

Amazon S3에 Amazon ECS 컨테이너 인스턴스 구성 저장

Amazon ECS 컨테이너 에이전트 구성은 환경 변수로 제어됩니다. Amazon ECS 최적화 AMI의 Linux 변형은 컨테이너 에이전트가 시작될 때 /etc/ecs/ecs.config에서 이들 변수를 확인하여 그에 따라 에이전트를 구성합니다. ECS_CLUSTER와 같이 일부 무해한 변수는 시작 시 Amazon EC2 사용자 데이터를 통해 컨테이너 인스턴스로 전달되고 이 파일에 기록될 수 있으며, 다만 아무런 영향도 없습니다. 하지만 AWS 자격 증명 또는 ECS_ENGINE_AUTH_DATA 변수와 같은 기타 민감한 정보는 사용자 데이터에서 인스턴스로 전달되거나 .bash_history 파일에 표시되도록 허용할 /etc/ecs/ecs.config에 기록되어서는 절대 안 됩니다.

Amazon S3에서 구성 정보를 프라이빗 버킷에 저장하고 컨테이너 인스턴스 IAM 역할에 읽기 전용 액세스를 부여하면 시작 시 컨테이너 인스턴스 구성을 안전하고 편리하게 허용할 수 있습니다. 프라이빗 버킷에 ecs.config 파일의 사본을 저장할 수 있습니다. 그런 다음 Amazon EC2 사용자 데이터를 사용하여 AWS CLI를 설치하고 인스턴스가 시작될 때 구성 정보를 /etc/ecs/ecs.config에 복사할 수 있습니다.

Amazon S3에 ecs.config 파일을 저장하는 방법
  1. Amazon S3에 대해 읽기 전용으로 액세스하려면 컨테이너 인스턴스 역할(ecsInstanceRole)에 권한을 부여해야 합니다. AmazonS3ReadOnlyAccessecsInstanceRole 역할에 할당하면 됩니다. 역할에 정책을 연결하는 방법에 대한 자세한 내용은 AWS Identity and Access Management 사용 설명서의 역할 권한 업데이트를 참조하세요.

  2. 다음 형식을 사용하여 유효한 Amazon ECS 에이전트 구성 변수를 포함하는 ecs.config 파일을 생성합니다. 이 예제에서는 프라이빗 레지스트리 인증을 구성합니다. 자세한 내용은 Amazon ECS에서 AWS 컨테이너가 아닌 이미지 사용 단원을 참조하십시오.

    ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"zq212MzEXAMPLE7o6T25Dk0i","email":"email@example.com"}}
    참고

    사용 가능한 Amazon ECS 에이전트 구성 변수의 전체 목록은 GitHub의 Amazon ECS Container Agent를 참조하세요.

  3. 구성 파일을 저장하려면 Amazon S3에 프라이빗 버킷을 만듭니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서에서 버킷 생성을 참조하세요.

  4. ecs.config 파일을 S3 버킷에 업로드합니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서버킷에 객체 추가를 참조하세요.

시작 시 Amazon S3에서 ecs.config 파일을 로드하려면
  1. 이 섹션에서 앞서 설명한 절차를 완료하여 컨테이너 인스턴스에 읽기 전용 Amazon S3 액세스를 부여하고 프라이빗 S3 버킷에 ecs.config 파일을 저장합니다.

  2. 새 컨테이너 인스턴스를 시작하고 EC2 사용자 데이터에서 다음 예제 스크립트를 사용합니다. 스크립트는 AWS CLI를 설치하고 구성 파일을 /etc/ecs/ecs.config에 복사합니다. 자세한 내용은 Amazon ECS Linux 컨테이너 인스턴스 시작 단원을 참조하십시오.

    #!/bin/bash yum install -y aws-cli aws s3 cp s3://your_bucket_name/ecs.config /etc/ecs/ecs.config