내용으로 건너뛰기

ECS 서비스 생성 중 B/G 옵션에 대한 오류 발생

0

ECS 서비스를 생성하는 중 다음과 같은 오류가 발생했습니다.

Resource handler returned message: "Invalid IAM Role ARN in loadBalancers[].advancedConfiguration.roleArn. Expected format: arn:aws:iam::<account>:role/<name> (Service: Ecs, Status Code: 400) (SDK Attempt Count: 1)" (HandlerErrorCode: GeneralServiceException)

서비스 옵션 중 B/G 배포를 선택하였습니다. Rolling 배포 사용 시 오류 없이 정상 생성 되었으나, B/G 배포에서만 다음과 같은 오류가 발생합니다. 이전에 성공적이었던 B/G 배포와 비교해보니CloudFormation의 json 템플릿에 존재하지 않았던 새로운 파라미터가 생긴 것을 확인하였습니다. "AdvancedConfiguration": { "AlternateTargetGroupArn": "arn:aws:elasticloadbalancing:ap-northeast-2:-:targetgroup/-/-", "RoleArn": "arn:aws:iam::-:role/aws-service-role/ecs.amazonaws.com/AWSServiceRoleForECS", "ProductionListenerRule": "arn:aws:elasticloadbalancing:ap-northeast-2:-:listener-rule/app/-/-/-/-" }

또한 이전 템플릿에는 있던 CodeDeploy에 대한 정확한 생성 파라미터가 사라진 것을 확인했습니다. "CodeDeployDeploymentGroup": { "Type": "AWS::CodeDeploy::DeploymentGroup", "Properties": { "ApplicationName": { "Ref": "ApplicationName" }, ... } }

무슨 문제가 있는 걸까요? 왜 기존과 CloudFormation 템플릿 양식이 달라진 건가요?

1개 답변
0

오류 메시지를 분석해보면, ECS 서비스 생성 시 Blue/Green 배포 옵션에서 IAM Role ARN 형식이 올바르지 않아 발생한 문제입니다.

최근 Amazon ECS에서 Blue/Green 배포 방식이 변경되었습니다. 이전에는 CodeDeploy를 통해 Blue/Green 배포를 구현했지만, 이제는 ECS 자체적으로 로드 밸런서 리소스를 관리하는 방식으로 변경되었습니다. 이로 인해 CloudFormation 템플릿의 구조가 달라졌습니다.

새로운 Blue/Green 배포 방식에서는 다음 구성 요소가 필요합니다:

  1. targetGroupArn: 기본(블루) 서비스 리비전의 대상 그룹 ARN
  2. alternateTargetGroupArn: 대체(그린) 서비스 리비전의 대상 그룹 ARN
  3. productionListenerRule 또는 productionListenerArn: 프로덕션 트래픽을 위한 리스너 규칙 또는 리스너 ARN
  4. roleArn: ECS가 로드 밸런서 리소스를 관리할 수 있는 권한이 있는 역할의 ARN

오류의 원인은 roleArn 파라미터에 잘못된 형식의 IAM 역할 ARN이 지정되었기 때문입니다. 현재 사용 중인 "arn:aws:iam::-:role/aws-service-role/ecs.amazonaws.com/AWSServiceRoleForECS" 형식이 아닌, "arn:aws:iam::<account-id>:role/<role-name>" 형식의 IAM 역할이 필요합니다.

해결 방법:

  1. ECS가 로드 밸런서 리소스를 관리할 수 있는 적절한 권한을 가진 IAM 역할을 생성하거나 기존 역할을 사용하세요.
  2. 해당 역할의 ARN을 올바른 형식(arn:aws:iam::<account-id>:role/<role-name>)으로 지정하세요.
  3. 서비스 역할(AWSServiceRoleForECS)이 아닌 일반 IAM 역할을 사용해야 합니다.

이전 템플릿에 있던 CodeDeploy 관련 구성이 사라진 이유는 ECS가 이제 자체적으로 Blue/Green 배포를 관리하기 때문입니다. 더 이상 CodeDeploy를 통한 배포가 아닌, ECS 내장 Blue/Green 배포 기능을 사용하게 되었습니다.
Sources
Network Load Balancer resources for Amazon ECS blue/green deployments - Amazon Elastic Container Service
Application Load Balancer resources for blue/green deployments - Amazon Elastic Container Service

답변함 3달 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

관련 콘텐츠