AWS Secrets Manager 보안 암호를 사용하는 작업을 Amazon Elastic Container Service(Amazon ECS)에 배치하려고 하면 오류 메시지가 표시됩니다.
간략한 설명
Amazon ECS에 Secrets Manager 보안 암호를 사용해 작업을 배치하지 못하면 다음 오류 메시지 중 하나가 표시될 수 있습니다.
"ResourceInitializationError error on AWS Fargate AccessDenied error on Amazon Elastic Compute Cloud (Amazon EC2)"
"The task is unable to retrieve secrets from Secrets Manager and fails."
"ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve secret from asm: service call has been retried 1 time(s): failed to fetch secret"
"AccessDeniedException: User: arn:aws:sts::XXXXXXXX:assumed-role/test-ecs-execution-role-no-secrets/XXXXXXXXXXX is not authorized to perform:"
이러한 오류 메시지가 발생하는 이유는 다음 중 하나입니다.
- Amazon ECS 작업 실행 역할에 Secrets Manager 보안 암호에 액세스하는 데 필요한 권한이 없습니다.
- Secrets Manager에서 지정된 보안 암호를 찾을 수 없습니다.
- 보안 암호 이름의 끝 부분은 하이픈 위에 6개의 문자가 오는 형태이며, Amazon 리소스 이름(ARN)의 일부를 사용하여 보안 암호를 검색할 수 있습니다.
- Amazon Virtual Private Cloud(Amazon VPC) 네트워킹 구성에 문제가 있습니다.
Amazon ECS 작업의 시작 실패 오류를 해결하려면 AWSSupport-TroubleshootECSTaskFailedToStart 런북을 사용하십시오. 그런 다음 문제에 맞는 해결 단계를 참조하십시오.
해결 방법
전제 조건: AWS Identify and Access Management(IAM) 사용자 또는 역할에 런북을 사용하는 데 필요한 권한이 있어야 합니다. 자세한 내용은 AWSSupport-TroubleshootECSTaskFailedToStart의 필수 IAM 권한 섹션을 참조하십시오.
Amazon ECS 클러스터 리소스가 위치한 AWS 리전과 동일한 리전에서 AWSSupport-TroubleshootECSTaskFailedToStart 런북을 사용합니다.
가장 최근에 실패한 작업 ID를 사용합니다. 실패한 작업이 Amazon ECS 서비스의 일부인 경우, 서비스에서 가장 최근에 실패한 작업을 사용합니다. 실패한 작업은 자동화 실행 중에 ECS:DescribeTasks에 표시되어야 합니다. 기본적으로 중지된 Amazon ECS 작업은 중지됨 상태로 전환된 후 1시간 동안 표시됩니다.
AWS Systems Manager 런북 실행
다음 단계를 완료하십시오.
- Systems Manager 콘솔을 엽니다.
- 탐색 창에서 Documents(문서)를 선택합니다.
- 검색 창에 TroubleshootECSTaskFailedToStart를 입력합니다.
- AWSSupport-TroubleshootECSTaskFailedToStart 문서를 선택합니다.
- Execute automation(자동화 실행)을 선택합니다.
- Execute(실행)를 선택합니다.
- 자동화가 완료되면 출력 섹션에서 세부 결과를 검토한 후 다음 수동 문제 해결 단계 중 하나를 사용합니다.
Amazon ECS 작업 실행 역할 권한 확인
다음 단계를 완료하십시오.
- IAM 콘솔을 엽니다.
- 탐색 창에서 Roles(역할)를 선택합니다.
- 역할 목록에서 Amazon ECS 작업에 사용되는 작업 실행 역할을 검색합니다.
- 작업 실행 역할에 Secrets Manager 리소스에 액세스하는 데 필요한 권한을 부여했는지 확인합니다.
Secrets Manager 보안 암호가 있는지 확인
다음 단계를 완료하십시오.
- Secrets Manager 콘솔을 엽니다.
- 탐색 창에서 Secrets(보안 암호)를 선택한 다음 Amazon ECS 작업에서 사용하는 보안 암호를 선택합니다.
- Amazon ECS 작업 정의에 이러한 특정 보안 암호 이름이 포함되어 있는지 확인합니다. 보안 암호에 추가 파라미터를 지정한 경우, 보안 암호에 지정된 json-key/version-stage/version-id가 작업 정의에 포함되어 있는지 확인합니다.
Secrets Manager 보안 암호 이름과 ARN 확인
보안 암호 이름의 끝 부분이 하이픈 뒤에 6개의 문자가 오는 형태인지 확인합니다. 예를 들면 myappsecret-xxxxxx입니다. Secrets Manager는 ARN 끝에 있는 보안 암호 이름 뒤에 하이픈과 임의의 문자 6개를 자동으로 추가합니다. 보안 암호 이름 뒤에 하이픈과 6개의 문자를 붙이지 않는 것이 모범 사례입니다.
이 문제를 해결하려면 Secrets Manger 보안 암호에 추가 하이픈과 6자를 포함한 전체 ARN을 사용합니다.
Amazon VPC 네트워킹 구성 확인
다음 조건을 충족하는 경우 Secrets Manager의 인터페이스 Amazon VPC 엔드포인트를 만듭니다.
- Secrets Manager 보안 암호를 참조하는 작업 정의를 사용하여 컨테이너의 민감한 데이터를 검색합니다.
- 인터페이스 Amazon VPC 엔드포인트를 사용합니다.
또한 Amazon VPC 엔드포인트의 보안 그룹에서 Amazon ECS 인프라가 해당 엔드포인트를 사용하도록 허용하는지 확인합니다.
Secrets Manager용 Amazon VPC 엔드포인트가 있는지 확인하려면 다음 단계를 완료하십시오.
- Amazon VPC 콘솔을 엽니다.
- 탐색 창에서 Endpoints(엔드포인트)를 선택합니다.
- Secrets Manager에 Amazon VPC 엔드포인트 com.amazonaws.example-region.secretsmanager를 지정해야 합니다.
- 엔드포인트를 선택한 다음, 서브넷 탭을 선택합니다. 이 엔드포인트의 서브넷에 Amazon ECS 작업에서 사용하는 엔드포인트가 포함되어 있는지 확인합니다.
참고: 서브넷이 없는 경우 Manage Subnets(서브넷 관리)를 선택합니다. Availability Zone(가용 영역)을 기준으로 서브넷을 선택한 다음 Modify Subnets(서브넷 수정)를 선택합니다.
엔드포인트 com.amazonaws.example-region.secretsmanager에 연결된 보안 그룹이 Amazon ECS 작업에서 들어오는 연결을 포트 443에서 허용하는지 확인하려면 다음 단계를 완료하십시오.
- Amazon VPC 콘솔을 엽니다.
- 탐색 창에서 Endpoints(엔드포인트)를 선택합니다.
- 엔드포인트를 선택합니다.
- Security Groups(보안 그룹) 탭을 선택합니다.
- 확인하려는 보안 그룹의 Group ID(그룹 ID)를 선택합니다.
- Inbound rules(인바운드 규칙) 탭을 선택합니다.
- 인바운드 규칙 목록에 Amazon ECS 작업의 443 연결을 허용하는 규칙이 포함되어 있는지 확인합니다.
관련 정보
Amazon ECS 작업의 컨테이너에 보안 암호나 민감한 정보를 어떻게 안전하게 전달합니까?
AWS Secrets Manager 문제 해결