환경 변수를 Amazon ECS 컨테이너로 전달 - Amazon Elastic Container Service

환경 변수를 Amazon ECS 컨테이너로 전달

중요

민감한 데이터는 AWS Secrets Manager 암호 또는 AWS Systems Manager 파라미터 스토어 파라미터에 저장하는 것이 좋습니다. 자세한 내용은 Amazon ECS 컨테이너로 민감한 데이터 전달 섹션을 참조하세요.

환경 변수 파일은 Amazon S3의 객체이며 모든 Amazon S3 보안 고려 사항이 적용됩니다.

Windows 컨테이너와 Fargate의 Windows 컨테이너에서는 environmentFiles 파라미터를 사용할 수 없습니다.

환경 변수 파일을 생성하고 Amazon S3에 저장하여 컨테이너로 환경 변수를 전달할 수 있습니다.

파일에 환경 변수를 지정하여 환경 변수를 대량으로 주입할 수 있습니다. 컨테이너 정의 내에서 환경 변수 파일이 포함된 Amazon S3 버킷 목록을 이용해 environmentFiles 객체를 지정합니다.

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

지원되는 환경 변수에 대한 자세한 내용은 Advanced container definition parameters- Environment를 참조하세요.

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

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

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

    변수가 운영 체제 플랫폼에 대해 지원되는지 확인합니다. 자세한 내용은 컨테이너 정의기타 태스크 정의 파라미터 단원을 참조하세요.

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

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

  • 작업 정의당 파일 수는 10개로 제한됩니다.

  • 환경 파일의 각 줄에는 VARIABLE=VALUE 형식의 환경 변수를 포함합니다. 공백이나 인용 부호는 Amazon ECS 파일 값의 일부로 포함됩니다. #으로 시작하는 줄은 주석으로 처리되며 무시됩니다. 환경 변수 파일 구문에 대한 자세한 내용은 Docker 설명서의 환경 변수 설정(-e, --env, --env-file)을 참조하세요.

    다음은 적절한 구문입니다.

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

  • 여러 환경 파일이 지정되고 동일한 변수를 포함하는 경우 입력 순서대로 처리됩니다. 즉, 변수의 첫 번째 값이 사용되고 중복 변수의 후속 값은 무시됩니다. 고유한 변수 이름을 사용하는 것이 좋습니다.

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

  • Fargate 시작 유형에는 다음 규칙이 적용됩니다.

    • 파일은 네이티브 Docker env 파일과 유사하게 처리됩니다.

    • 비어 있는 상태로 Amazon S3에 저장된 환경 변수를 참조하는 컨테이너 정의는 컨테이너에 표시되지 않습니다.

    • 셸 이스케이프 처리는 지원되지 않습니다.

    • 컨테이너 진입점은 VARIABLE 값을 해석합니다.

예제

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

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