설명
AWS::ECS::Service의 Role은 서비스가 로드 밸런서에 접근할 IAM 역할을 지정하는 속성입니다. AWS::IAM::Policy 리소스를 참조해도 역할을 지정한 것이 되지 않습니다.
잠재적 영향
정책을 역할로 잘못 지정하면 서비스 생성이나 로드 밸런서 연동이 실패할 수 있습니다.
해결 방법
구성에 맞는 서비스 연결 역할을 사용하거나, 별도 역할을 허용하는 구성이라면 실제 IAM 역할을 지정하세요. awsvpc 네트워크 모드에서는 서비스 연결 역할을 사용하며 Role을 지정하지 않습니다.
예시
잘못된 정책 참조를 제거하고 서비스 연결 역할을 사용하는 발췌입니다. 필요한 역할, 클러스터, 리스너, 대상 그룹과 작업 정의는 생략했습니다. 이전 예시의 광범위한 정책은 사용하지 마세요.
변경 전
yaml
Resources:
InlinePolicy:
Type: AWS::ECS::Service
DependsOn:
- Listener
Properties:
Role:
Ref: IAMPolicy
LoadBalancers:
- TargetGroupArn:
Ref: TargetGroup
ContainerPort: 80
ContainerName: sample-app
Cluster:
Ref: ECSCluster
IAMPolicy:
Type: 'AWS::IAM::Policy'
Properties:
PolicyName: root
Roles:
- !Ref ECSServiceRole
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action: '*'
Resource: '*'
변경 후
yaml
Resources:
InlinePolicy:
Type: AWS::ECS::Service
DependsOn:
- Listener
Properties:
LoadBalancers:
- TargetGroupArn:
Ref: TargetGroup
ContainerPort: 80
ContainerName: sample-app
Cluster:
Ref: ECSCluster