환경 변수 지정 - Amazon Elastic Container Service

환경 변수 지정

환경 변수는 다음과 같은 방법으로 컨테이너에 전달할 수 있습니다.

  • environment 컨테이너 정의 파라미터를 개별적으로 사용합니다. 이것은 docker run에 대한 --env 옵션에 매핑됩니다.

  • 대량으로 environmentFiles 컨테이너 정의 파라미터를 사용하여 환경 변수를 포함하는 하나 이상의 파일을 나열합니다. 파일은 Amazon S3에서 호스팅되어야 합니다. 이것은 docker run에 대한 --env-file 옵션에 매핑됩니다.

파일에 환경 변수를 지정하면 환경 변수를 개별적으로 지정하는 것이 아니라 대량으로 주입할 수 있습니다. 컨테이너 정의 내에서 환경 변수 파일이 포함된 Amazon S3 버킷 목록을 이용해 environmentFiles 객체를 지정합니다. 파일의 확장명은 .env여야 하며 태스크 정의당 파일 10개로 제한됩니다.

환경 변수에 용량 제한이 적용되지는 않지만 용량이 큰 환경 변수 파일로 인해 디스크 공간이 가득 찰 수도 있습니다. 환경 변수 파일을 사용하는 각 태스크는 해당 파일 사본을 디스크에 다운로드합니다. 태스크 정리 시 파일이 제거됩니다.

다음은 개별 환경 변수를 지정하는 방법을 보여주는 태스크 정의의 조각입니다.

{ "family": "", "containerDefinitions": [ { "name": "", "image": "", ... "environment": [ { "name": "variable", "value": "value" } ], ... } ], ... }

다음은 환경 변수 파일을 지정하는 방법을 보여주는 태스크 정의의 조각입니다.

{ "family": "", "containerDefinitions": [ { "name": "", "image": "", ... "environmentFiles": [ { "value": "arn:aws:s3:::s3_bucket_name/envfile_object_name.env", "type": "s3" } ], ... } ], ... }

환경 변수 파일 지정에 대한 고려 사항

컨테이너 정의에서 환경 변수 파일을 지정할 때는 다음 사항을 고려해야 합니다.

  • Amazon EC2에 있는 Amazon ECS 태스크의 경우 이 기능을 사용하기 위해 컨테이너 인스턴스에 버전 1.39.0 이상의 컨테이너 에이전트가 필요합니다. 에이전트 버전을 확인하고 최신 버전으로 업데이트하는 방법에 대한 자세한 내용은 Amazon ECS 컨테이너 에이전트 업데이트 섹션을 참조하세요.

  • AWS Fargate에 있는 Amazon ECS 태스크의 경우 이 기능을 사용하기 위해 플랫폼 버전 1.4.0 이상을 사용해야 합니다. 자세한 내용은 AWS Fargate 플랫폼 버전 섹션을 참조하세요.

  • 파일은 .env 파일 확장명과 UTF-8 인코딩을 사용해야 합니다.

  • 환경 파일의 각 줄에는 VARIABLE=VALUE 형식의 환경 변수가 포함되어야 합니다. 공백이나 인용 부호는 값의 일부로 포함됩니다. #으로 시작하는 줄은 주석으로 처리되며 무시됩니다. 환경 변수 파일 구문에 대한 자세한 내용은 파일에서 기본 환경 변수 선언을 참조하세요.

    다음은 사용해야 하는 구문을 보여주는 예제입니다.

    #This is a comment and will be ignored VARIABLE=VALUE ENVIRONMENT=PRODUCTION
  • 컨테이너 정의에서 environment 파라미터를 사용하여 지정된 환경 변수가 있는 경우 환경 파일 내에 포함된 변수보다 우선합니다.

  • 동일한 변수를 포함하는 여러 환경 파일이 지정된 경우 위에서 아래로 처리됩니다. 고유한 변수 이름을 사용하는 것이 좋습니다.

  • 환경 파일이 컨테이너 재정의로 지정된 경우 해당 파일이 사용되며 컨테이너 정의에 지정된 다른 환경 파일은 무시됩니다.

필수 IAM 권한

Amazon ECS 태스크 실행 역할은 이 기능을 사용해야 합니다. 이렇게 하면 컨테이너 에이전트가 Amazon S3에서 환경 변수 파일을 가져올 수 있습니다. 자세한 내용은 Amazon ECS 태스크 실행 IAM 역할 섹션을 참조하세요.

생성하는 Amazon S3 객체에 액세스 권한을 부여하려면 다음 권한을 인라인 정책으로 태스크 실행 역할에 수동으로 추가하세요. Resource 파라미터를 사용하여 환경 변수 파일이 포함된 Amazon S3 버킷에 대한 권한 범위를 지정합니다. 자세한 내용은 IAM 정책 추가 및 제거 섹션을 참조하세요.

  • s3:GetObject

  • s3:GetBucketLocation

권한을 추가하는 예제 인라인 정책은 아래와 같습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::examplebucket/folder_name/env_file_name" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::examplebucket" ] } ] }