Amazon ECS CodeDeploy IAM 역할
Amazon ECS CodeDeploy IAM 역할
Amazon ECS와 함께 CodeDeploy 블루/그린 배포 유형을 사용하려면 먼저 CodeDeploy 서비스가 사용자를 대신해 Amazon ECS 서비스를 업데이트할 수 있는 권한이 필요해요. 이러한 권한은 CodeDeploy IAM 역할(ecsCodeDeployRole)로 제공돼요. 참고: 사용자도 CodeDeploy를 사용할 권한이 필요하며, 이러한 권한은 Required IAM permissions에 설명되어 있어요. 제공되는 관리형 정책은 두 가지가 있어요. 자세한 내용은 AWS Managed Policy Reference Guide에서 다음 중 하나를 참고하세요.
출처: 문서
본문
AWSCodeDeployRoleForECS– CodeDeploy에 연결된 액션을 사용해 모든 리소스를 업데이트할 권한을 부여해요.AWSCodeDeployRoleForECSLimited– CodeDeploy에 더 제한된 권한을 부여해요.
CodeDeploy 역할 생성 (Creating the CodeDeploy role)
다음 절차를 사용해 Amazon ECS용 CodeDeploy 역할을 만들 수 있어요.
AWS Management Console
CodeDeploy용 서비스 역할을 만들려면 (IAM 콘솔)
- AWS Management Console에 로그인하고 https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.
- IAM 콘솔의 탐색 창에서 Roles를 선택한 다음 Create role을 선택합니다.
- Trusted entity type에서 AWS service를 선택합니다.
- Service or use case에서 CodeDeploy를 선택한 다음 CodeDeploy - ECS 사용 사례를 선택합니다.
- Next를 선택합니다.
- Attach permissions policy 섹션에서
AWSCodeDeployRoleForECS정책이 선택되어 있는지 확인합니다. - Next를 선택합니다.
- Role name에
ecsCodeDeployRole을 입력합니다. - 역할을 검토한 다음 Create role을 선택합니다.
AWS CLI
모든 사용자 입력을 사용자의 정보로 바꾸세요.
- CodeDeploy IAM 역할에 사용할 신뢰 정책을 포함하는
codedeploy-trust-policy.json이라는 파일을 만듭니다.
JSON:
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": ["codedeploy.amazonaws.com"]
},
"Action": "sts:AssumeRole"
}
]
}
- 이전 단계에서 만든 신뢰 정책을 사용해
ecsCodedeployRole이라는 IAM 역할을 만듭니다.
aws iam create-role \
--role-name ecsCodedeployRole \
--assume-role-policy-document file://codedeploy-trust-policy.json
AWSCodeDeployRoleForECS또는AWSCodeDeployRoleForECSLimited관리형 정책을ecsTaskRole역할에 연결합니다. (참고: 원문은ecsTaskRole로 표기돼 있으나 실제로는 위에서 만든ecsCodedeployRole역할에 연결합니다.)
aws iam attach-role-policy \
--role-name ecsCodedeployRole \
--policy-arn arn:aws:iam::aws:policy/AWSCodeDeployRoleForECS
aws iam attach-role-policy \
--role-name ecsCodedeployRole \
--policy-arn arn:aws:iam::aws:policy/AWSCodeDeployRoleForECSLimited
태스크 실행 역할 권한 (Task execution role permissions)
서비스의 태스크에 태스크 실행 역할이 필요하면, 각 태스크 실행 역할 또는 태스크 역할 오버라이드에 대한 iam:PassRole 권한을 정책으로 CodeDeploy 역할에 추가해야 해요. 자세한 내용은 Amazon ECS task execution IAM role과 Amazon ECS task IAM role을 참고하세요. 그런 다음 해당 정책을 CodeDeploy 역할에 연결하세요.
정책 생성 (Create the policy)
AWS Management Console
JSON 정책 편집기를 사용해 정책을 만들려면
- AWS Management Console에 로그인하고 https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.
- 왼쪽 탐색 창에서 Policies를 선택합니다.
- 처음으로 Policies를 선택한 경우 Welcome to Managed Policies 페이지가 나타납니다. Get Started를 선택합니다.
- 페이지 상단에서 Create policy를 선택합니다.
- Policy editor 섹션에서 JSON 옵션을 선택합니다.
- 다음 JSON 정책 문서를 입력합니다:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": ["arn:aws:iam::<aws_account_id>:role/<ecsCodeDeployRole>"]
}
]
}
- Next를 선택합니다. 참고: 언제든지 Visual과 JSON 편집기 옵션을 전환할 수 있어요. 하지만 Visual 편집기에서 변경하거나 Next를 선택하면 IAM이 정책을 시각적 편집기에 최적화하도록 재구성할 수 있어요. 자세한 내용은 IAM User Guide의
Policy restructuring을 참고하세요. - Review and create 페이지에서 만드는 정책의 Policy name과 Description(선택 사항)을 입력합니다. Permissions defined in this policy를 검토해 정책이 부여하는 권한을 확인합니다.
- 새 정책을 저장하려면 Create policy를 선택합니다.
- 정책을 만든 후 CodeDeploy 역할에 정책을 연결합니다. 역할에 정책을 연결하는 방법은 AWS Identity and Access Management User Guide의
Update permissions for a role을 참고하세요.
AWS CLI
모든 사용자 입력을 사용자의 정보로 바꾸세요.
- 다음 내용으로
blue-green-iam-passrole.json이라는 파일을 만듭니다.
JSON:
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": ["arn:aws:iam::*:role/code-deploy-role"],
"Condition": {
"StringEquals": {"iam:PassedToService": "ecs.amazonaws.com"}
}
}
]
}
- JSON 정책 문서 파일을 사용해 IAM 정책을 만들려면 다음 명령을 사용합니다.
aws iam create-policy \
--policy-name cdTaskExecutionPolicy \
--policy-document file://blue-green-iam-passrole.json
- 다음 명령으로 만든 IAM 정책의 ARN을 검색합니다.
aws iam list-policies --scope Local --query 'Policies[?PolicyName==`cdTaskExecutionPolicy`].Arn'
- CodeDeploy IAM 역할에 정책을 연결하려면 다음 명령을 사용합니다.
aws iam attach-role-policy \
--role-name ecsCodedeployRole \
--policy-arn arn:aws:iam:111122223333:aws:policy/cdTaskExecutionPolicy