중요 데이터 지정Systems Manager파라미터 스토어 - Amazon Elastic Container Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

중요 데이터 지정Systems Manager파라미터 스토어

Amazon ECS를 사용하면 AWS Systems Manager 파라미터 스토어 파라미터에 중요한 데이터를 저장한 후 컨테이너 정의에서 참조하여 컨테이너에 중요한 데이터를 주입할 수 있습니다.

를 사용하여 중요한 데이터를 지정하는 고려 사항Systems Manager파라미터 스토어

Systems Manager 파라미터 스토어 파라미터를 사용하여 컨테이너에 중요한 데이터를 지정할 때 다음 사항을 고려해야 합니다.

  • Fargate 시작 유형을 사용하는 작업의 경우 이 기능을 사용하려면 플랫폼 버전 1.3.0 이상이 필요합니다. 자세한 정보는 AWS Fargate 플랫폼 버전 단원을 참조하십시오.

  • EC2 시작 유형을 사용하는 작업의 경우 이 기능을 사용하려면 컨테이너 인스턴스에 버전 1.22.0 이상의 컨테이너 에이전트가 있어야 합니다. 그러나 최신 버전의 컨테이너 에이전트를 사용하는 것이 좋습니다. 에이전트 버전을 확인하고 최신 버전으로 업데이트하는 방법에 대한 자세한 내용은 업데이트Amazon ECS컨테이너 에이전트 단원을 참조하십시오.

  • 컨테이너가 처음 시작될 때 해당 컨테이너에 중요한 정보가 주입됩니다. 암호 또는 Parameter Store 파라미터가 이후에 업데이트되거나 교체되면 컨테이너가 업데이트된 값을 자동으로 받지 않습니다. 새 작업을 시작해야 하거나 작업이 서비스의 일부인 경우 서비스를 업데이트하고 Force new deployment(새 배포 강제 적용)를 사용하여 서비스에서 새 작업을 시작하도록 강제로 지정할 수 있습니다.

  • awslogs 로깅 드라이버를 사용하도록 구성된 Windows 작업의 경우 컨테이너 인스턴스에 ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE 환경 변수도 설정해야 합니다. 이 작업은 다음 구문을 사용하는 사용자 데이터로 수행할 수 있습니다.

    <powershell> [Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine") Initialize-ECSAgent -Cluster <cluster name> -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]' </powershell>

필수IAM권한Amazon ECS보안 암호

이 기능을 사용하려면 Amazon ECS 작업 실행 역할이 있어야 하며 작업 정의에서 해당 역할을 참조해야 합니다. 이렇게 하면 컨테이너 에이전트가 필요한 AWS Systems Manager 리소스를 가져올 수 있습니다. 자세한 내용은 Amazon ECS작업 실행IAM역할 단원을 참조하세요.

중요

EC2 시작 유형을 사용하는 작업의 경우, 이 기능을 사용하려면 ECS 에이전트 구성 변수인 ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true를 사용해야 합니다. 컨테이너 인스턴스를 생성할 때 이를 ./etc/ecs/ecs.config 파일에 추가하거나 기존 인스턴스에 추가한 다음 ECS 에인전트를 다시 시작할 수 있습니다. 자세한 내용은 Amazon ECS컨테이너 에이전트 구성 단원을 참조하세요.

사용자가 생성하는 AWS Systems Manager 파라미터 스토어 파라미터에 액세스 권한을 부여하려면 작업 실행 역할에 다음 권한을 인라인 정책으로서 직접 추가하십시오. 자세한 내용은 IAM 정책 추가 및 제거 단원을 참조하십시오.

  • ssm:GetParameters—작업 정의에서 Systems Manager 파라미터 스토어 파라미터를 참조하는 경우에 필요합니다.

  • secretsmanager:GetSecretValue—Secrets Manager 암호를 직접 참조하는 경우 또는 Systems Manager 파라미터 스토어 파라미터가 작업 정의에서 Secrets Manager 암호를 참조하는 경우에 필요합니다.

  • kms:Decrypt—암호가 사용자 지정 KMS 키를 사용하고 기본 키를 사용하지 않는 경우에 필요합니다. 사용자 지정 키의 ARN을 리소스로 추가해야 합니다.

다음 예제에서는 인라인 정책이 필수 권한을 추가합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters", "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": [ "arn:aws:ssm:<region>:<aws_account_id>:parameter/<parameter_name>", "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:<secret_name>", "arn:aws:kms:<region>:<aws_account_id>:key/<key_id>" ] } ] }

민감한 데이터를 환경 변수로 주입

컨테이너 정의 내에서 컨테이너에 설정할 환경 변수의 이름으로 secrets를 지정하여 컨테이너에 제공할 중요한 데이터가 들어있는 Systems Manager 파라미터 스토어 파라미터의 전체 ARN을 지정합니다.

다음은 작업 정의를 참조할 때 형식을 나타내는 작업 정의의 예제 조각입니다.Systems ManagerParameter Store 파라미터 Systems Manager 파라미터 스토어 파라미터가 현재 실행 중인 작업과 동일한 리전에 있는 경우, 파라미터의 전체 ARN 또는 이름을 사용할 수 있습니다. 파라미터가 다른 리전에 있다면 전체 ARN을 지정해야 합니다.

{ "containerDefinitions": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name" }] }] }

로그 구성에 중요한 데이터 삽입

컨테이너 정의 내에서, logConfiguration을 정의할 때 컨테이너에 설정할 로그 드라이버 옵션의 이름과 컨테이너에 제공할 중요한 데이터가 들어있는 Systems Manager 파라미터 스토어 파라미터의 전체 ARN을 사용하여 secretOptions를 지정할 수 있습니다.

중요

Systems Manager 파라미터 스토어 파라미터가 현재 실행 중인 작업과 동일한 리전에 있는 경우, 파라미터의 전체 ARN 또는 이름을 사용할 수 있습니다. 파라미터가 다른 리전에 있다면 전체 ARN을 지정해야 합니다.

다음은 작업 정의를 참조할 때 형식을 나타내는 작업 정의의 예제 조각입니다.Systems ManagerParameter Store 파라미터

{ "containerDefinitions": [{ "logConfiguration": [{ "logDriver": "fluentd", "options": { "tag": "fluentd demo" }, "secretOptions": [{ "name": "fluentd-address", "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter:parameter_name" }] }] }] }

생성AWS Systems ManagerParameter Store 파라미터

AWS Systems Manager 콘솔을 사용하면 중요한 데이터에 대한 Systems Manager 파라미터 스토어 파라미터를 생성할 수 있습니다. 자세한 내용은 단원을 참조하십시오.연습: 명령에 파라미터 생성 및 사용 (콘솔)AWS Systems Manager 사용 설명서.

파라미터 스토어 파라미터를 생성하려면

  1. 열기AWS Systems Manager콘솔에서https://console.aws.amazon.com/시스템 관리자/.

  2. 탐색 창에서 파라미터 스토어, 파라미터 생성을 차례대로 선택합니다.

  3. 이름에서 계층 구조와 파라미터 이름을 입력합니다. 예를 들어 test/database_password를 입력합니다.

  4. 설명에 선택적 설명을 입력합니다.

  5. [Type]에서 [String], [StringList] 또는 [SecureString]을 선택합니다.

    참고
    • 를 선택한 경우SecureString,KMS keyID필드가 나타납니다. 를 제공하지 않으면KMS keyID를 반환합니다.KMS keyARN, 별칭 이름 또는 별칭 ARN 이 있는 경우 시스템에서alias/aws/ssm이며, 이는 기본KMS key용Systems Manager. 이 키의 사용을 방지하려면 사용자 지정 키를 선택합니다. 자세한 내용은 단원을 참조하십시오.보안 문자열 파라미터 사용AWS Systems Manager 사용 설명서.

    • 콘솔에서 보안 문자열 파라미터를 생성할 때는key-id매개 변수를 사용자 지정KMS key별칭 이름 또는 별칭 ARN 사용하려면 접두사를 지정해야 합니다.alias/별칭을 앞에 추가합니다. ARN 예제는 다음과 같습니다.

      arn:aws:kms:us-east-2:123456789012:alias/MyAliasName

      별칭 이름 예제는 다음과 같습니다.

      alias/MyAliasName
  6. 에 값을 입력합니다. 예: MyFirstParameter. SecureString을 선택한 경우, 입력하는 값이 마스킹됩니다.

  7. 파라미터 생성을 선택합니다.

중요 데이터를 참조하는 작업 정의 생성

Amazon ECS 콘솔을 사용하면 Systems Manager 파라미터 스토어 파라미터를 참조하는 작업 정의를 생성할 수 있습니다.

암호를 지정하는 작업 정의를 생성하려면

  1. https://console.aws.amazon.com/ecs/에서 Amazon ECS 콘솔을 엽니다.

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

  3. Select launch type compatibility(시작 유형 호환성 선택) 페이지에서 작업의 시작 유형을 선택한 다음, 다음 단계를 선택합니다.

    참고

    이 단계는 현재 AWS Fargate를 사용하여 Amazon ECS를 지원하는 리전에만 적용됩니다. 자세한 내용은 AWS Fargate에서 Amazon ECS 단원을 참조하세요.

  4. 작업 정의에서 작업 정의 이름을 입력합니다.최대 255개의 문자(대문자 및 소문자), 숫자, 하이픈 및 밑줄이 허용됩니다.

  5. Task execution role(작업 실행 역할)에서 기존 작업 실행 역할을 선택하거나, 혹은 새 역할 생성을 선택하여 사용자 역할을 하나 생성합니다. 이렇게 생성된 역할은 작업에 사용할 프라이빗 이미지를 가져올 수 있는 권한을 Amazon ECS에게 부여합니다. 자세한 내용은 필수IAM프라이빗 레지스트리 인증에 대한 사용 권한 단원을 참조하세요.

    중요

    작업 실행 역할 필드가 나타나지 않을 경우, Configure via JSON(JSON을 통한 구성)을 선택하고 executionRoleArn 필드를 수동으로 추가하여 작업 실행 역할을 지정하십시오. 다음 코드는 구문을 보여줍니다.

    "executionRoleArn": "arn:aws:iam::aws_account_id:role/ecsTaskExecutionRole"
  6. 작업 정의에서 각 컨테이너를 생성할 때마다 다음 단계를 수행합니다.

    1. Container Definitions(컨테이너 정의)에서 Add container(컨테이너 추가)를 선택합니다.

    2. Container name은 컨테이너의 이름을 입력합니다. 최대 255개의 문자(대문자 및 소문자), 숫자, 하이픈 및 밑줄이 허용됩니다.

    3. Image는 이미지 이름 또는 프라이빗 이미지 경로를 입력합니다. 최대 255개의 문자(대문자 및 소문자), 숫자, 하이픈 및 밑줄이 허용됩니다.

    4. Advanced container configuration(고급 컨테이너 구성)을 확장합니다.

    5. 환경 변수로 주입할 중요한 데이터의 경우, Environment(환경) 아래의 Environment variables(환경 변수)에서 다음 필드를 작성합니다.

      1. 에서 컨테이너에 설정할 해당 환경 변수의 이름을 입력합니다. 이것은 컨테이너 정의의 secrets 섹션에 있는 name 필드에 해당합니다.

      2. 에서 ValueFrom을 선택합니다. Add value(값 추가)에서 컨테이너에 환경 변수로 제공할 데이터가 들어 있는 AWS Systems Manager 파라미터 스토어 파라미터의 전체 ARN을 입력합니다.

        참고

        Systems Manager Parameter Store 파라미터가 현재 실행 중인 작업과 동일한 리전에 있으면 해당 암호의 전체 ARN 또는 이름을 사용할 수 있습니다. 파라미터가 다른 리전에 있다면 전체 ARN을 지정해야 합니다.

    6. 컨테이너에 대한 로그 구성에서 참조되는 암호의 경우, Storage and Logging(스토리지 및 로깅)에서 Log configuration(로그 구성)에 대해 다음 필드를 완료하십시오.

      1. Auto-configure(자동 구성) CloudWatch Logs 옵션 선택을 취소합니다.

      2. 로그 옵션에서 에 설정할 로그 구성 옵션의 이름을 입력하십시오.

      3. 에서 ValueFrom을 선택합니다. Add value(값 추가)에서 로그 구성에 로그 옵션으로 제공할 데이터가 들어 있는 AWS Systems Manager 파라미터 스토어 파라미터의 이름 또는 전체 ARN을 입력합니다.

        참고

        Systems Manager 파라미터 스토어 파라미터가 현재 실행 중인 작업과 동일한 리전에 있을 경우, 해당 암호의 전체 ARN 또는 이름을 사용할 수 있습니다. 파라미터가 다른 리전에 있다면 전체 ARN을 지정해야 합니다.

    7. 컨테이너 정의에서 사용할 나머지 필수 필드와 선택 필드를 작성합니다. Advanced container configuration(고급 컨테이너 구성) 메뉴에서는 더 많은 컨테이너 정의 파라미터가 사용됩니다. 자세한 내용은 작업 정의 파라미터 단원을 참조하세요.

    8. 추가를 선택합니다.

  7. 컨테이너를 추가하려면 생성을 선택합니다.