기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
아마존 ECS CodeDeploy IAM 역할
Amazon ECS에서 CodeDeploy 블루/그린 배포 유형을 사용하려면 먼저 CodeDeploy 서비스에 사용자를 대신하여 Amazon ECS 서비스를 업데이트할 권한이 있어야 합니다. 이러한 권한은 IAM 역할 () 에 CodeDeploy 의해 제공됩니다. ecsCodeDeployRole
참고
또한 사용자에게는 사용 권한이 필요합니다 CodeDeploy. 이러한 권한에 대한 설명은 에 블루/그린 배포에 필요한 IAM 권한 나와 있습니다.
관리형 정책은 2가지가 있습니다. 아래 표시된 AWSCodeDeployRoleForECS
정책은 관련 작업을 사용하여 모든 리소스를 업데이트할 수 있는 CodeDeploy 권한을 부여합니다. 아래에 표시된 AWSCodeDeployRoleForECSLimited
정책은 CodeDeploy 더 제한된 권한을 부여합니다.
- AWSCodeDeployRoleForECS
-
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ecs:DescribeServices", "ecs:CreateTaskSet", "ecs:UpdateServicePrimaryTaskSet", "ecs:DeleteTaskSet", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:ModifyListener", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:ModifyRule", "lambda:InvokeFunction", "cloudwatch:DescribeAlarms", "sns:Publish", "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "*", "Effect": "Allow" }, { "Action": ["iam:PassRole"], "Effect": "Allow", "Resource": "*", "Condition": { "StringLike": { "iam:PassedToService": ["ecs-tasks.amazonaws.com"] } } } ] }
- AWSCodeDeployRoleForECSLimited
-
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ecs:DescribeServices", "ecs:CreateTaskSet", "ecs:UpdateServicePrimaryTaskSet", "ecs:DeleteTaskSet", "cloudwatch:DescribeAlarms" ], "Resource": "*", "Effect": "Allow" }, { "Action": ["sns:Publish"], "Resource": "arn:aws:sns:*:*:CodeDeployTopic_*", "Effect": "Allow" }, { "Action": [ "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:ModifyListener", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:ModifyRule" ], "Resource": "*", "Effect": "Allow" }, { "Action": ["lambda:InvokeFunction"], "Resource": "arn:aws:lambda:*:*:function:CodeDeployHook_*", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "*", "Condition": { "StringEquals": {"s3:ExistingObjectTag/UseWithCodeDeploy": "true"} }, "Effect": "Allow" }, { "Action": ["iam:PassRole"], "Effect": "Allow", "Resource": [ "arn:aws:iam::*:role/ecsTaskExecutionRole", "arn:aws:iam::*:role/ECSTaskExecution*" ], "Condition": { "StringLike": { "iam:PassedToService": ["ecs-tasks.amazonaws.com"] } } } ] }
CodeDeployAWSCodeDeployRoleForECS
역할 생성
다음 절차를 사용하여 Amazon ECS의 CodeDeploy 역할을 생성할 수 있습니다.
- AWS Management Console
-
IAM 역할을 만들려면 CodeDeploy
https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
탐색 창에서 역할(Roles), 역할 생성(Creat role)을 선택합니다.
-
신뢰할 수 있는 유형의 엔터티 선택 섹션에서 AWS 서비스를 선택합니다.
-
이 역할을 사용할 서비스 선택에서 을 선택합니다 CodeDeploy.
-
사용 사례 선택에서 ECS, Next를 선택합니다CodeDeploy .
-
권한 추가 섹션에서 다음을 수행합니다.
-
AWSCodeDeployRoleForECS정책이 선택되었는지 확인하십시오.
-
권한 경계 설정(Set permissions boundary)(선택 사항)에서 선택권한 경계 없이 역할 만들기(Create role without a permissions boundary)를 선택합니다.
-
다음을 선택합니다.
-
-
이름, 검토 및 생성에서 다음을 수행하십시오.
-
Role name(역할 이름)에서
ecsCodeDeployRole
을 입력하고 선택적으로 설명을 입력합니다. -
Add tags(태그 추가)(선택 사항)에서 정책과 연결할 사용자 지정 태그를 지정합니다.
-
-
역할 생성을 선택합니다.
- AWS CLI
-
모든
사용자 입력을
자체 정보로 바꾸십시오.-
CodeDeploy IAM 역할에 사용할 신뢰 정책이
codedeploy-trust-policy.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
역할에 연결합니다.aws iam attach-role-policy \ --role-name
ecsCodedeployRole
\ --policy-arn arn:aws::iam::aws:policy/AWSCodeDeployRoleForECSaws iam attach-role-policy \ --role-name
ecsCodedeployRole
\ --policy-arn arn:aws::iam::aws:policy/AWSCodeDeployRoleForECSLimited
-
블루/그린 배포를 위한 권한 추가
블루/그린 배포 유형을 사용하는 Amazon ECS 서비스의 작업에 작업 실행 역할 또는 작업 역할 재정의를 사용해야 하는 경우 각 작업 실행 역할 또는 작업 역할 재정의에 대한 iam:PassRole
권한을 CodeDeploy IAM 역할에 정책으로 추가해야 합니다. 자세한 내용은 Amazon ECS 태스크 실행 IAM 역할 및 태스크 IAM 역할 섹션을 참조하세요.
다음 절차에 따라 정책 생성
- AWS Management Console
-
JSON 정책 편집기를 사용하여 정책을 생성하려면
AWS Management Console 로그인하고 https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.
-
왼쪽의 탐색 창에서 정책을 선택합니다.
정책을 처음으로 선택하는 경우 관리형 정책 소개 페이지가 나타납니다. 시작하기를 선택합니다.
-
페이지 상단에서 정책 생성을 선택합니다.
-
정책 편집기 섹션에서 JSON 옵션을 선택합니다.
-
다음 JSON 정책 문서를 입력합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": ["arn:aws:iam::<aws_account_id>:role/<ecsTaskExecutionRole_or_TaskRole_name>"] } ] }
-
다음을 선택합니다.
참고
언제든지 시각적 편집기 옵션과 JSON 편집기 옵션 간에 전환할 수 있습니다. 그러나 변경을 적용하거나 시각적 편집기에서 다음을 선택한 경우 IAM은 시각적 편집기에 최적화되도록 정책을 재구성할 수 있습니다. 자세한 내용은 IAM 사용 설명서의 정책 재구성을 참조하십시오.
-
검토 및 생성 페이지에서 생성하는 정책에 대한 정책 이름과 설명(선택 사항)을 입력합니다. 이 정책에 정의된 권한을 검토하여 정책이 부여한 권한을 확인합니다.
-
정책 생성을 선택하고 새로운 정책을 저장합니다.
정책을 생성한 후 정책을 CodeDeploy 역할에 연결합니다. 정책을 역할에 연결하는 방법에 대한 자세한 내용은 사용 설명서의 역할 권한 정책 수정 (콘솔) 을AWS Identity and Access Management 참조하십시오.
- AWS CLI
-
모든
사용자 입력을
자체 정보로 바꾸십시오.-
다음 콘텐츠를 통해
blue-green-iam-passrole.json
이라는 파일을 생성합니다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": ["arn:aws:iam::<aws_account_id>:role/<ecsTaskExecutionRole_or_TaskRole_name>"] } ] }
-
다음 명령을 사용하여 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
-