아마존 ECS CodeDeploy IAM 역할 - Amazon Elastic Container Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

아마존 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
  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 역할(Roles), 역할 생성(Creat role)을 선택합니다.

  3. 신뢰할 수 있는 유형의 엔터티 선택 섹션에서 AWS 서비스를 선택합니다.

  4. 이 역할을 사용할 서비스 선택에서 을 선택합니다 CodeDeploy.

  5. 사용 사례 선택에서 ECS, Next를 선택합니다CodeDeploy .

  6. 권한 추가 섹션에서 다음을 수행합니다.

    1. AWSCodeDeployRoleForECS정책이 선택되었는지 확인하십시오.

    2. 권한 경계 설정(Set permissions boundary)(선택 사항)에서 선택권한 경계 없이 역할 만들기(Create role without a permissions boundary)를 선택합니다.

    3. 다음을 선택합니다.

  7. 이름, 검토 및 생성에서 다음을 수행하십시오.

    1. Role name(역할 이름)에서 ecsCodeDeployRole을 입력하고 선택적으로 설명을 입력합니다.

    2. Add tags(태그 추가)(선택 사항)에서 정책과 연결할 사용자 지정 태그를 지정합니다.

  8. 역할 생성을 선택합니다.

AWS CLI

모든 사용자 입력을 자체 정보로 바꾸십시오.

  1. CodeDeploy IAM 역할에 사용할 신뢰 정책이 codedeploy-trust-policy.json 포함된 이름을 가진 파일을 생성합니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": ["codedeploy.amazonaws.com"] }, "Action": "sts:AssumeRole" } ] }
  2. 이전 단계에서 만든 신뢰 정책을 사용하여 ecsCodedeployRole이라는 IAM 역할을 생성합니다.

    aws iam create-role \ --role-name ecsCodedeployRole \ --assume-role-policy-document file://codedeploy-trust-policy.json
  3. AWSCodeDeployRoleForECS또는 AWSCodeDeployRoleForECSLimited 관리형 정책을 ecsTaskRole 역할에 연결합니다.

    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

블루/그린 배포를 위한 권한 추가

블루/그린 배포 유형을 사용하는 Amazon ECS 서비스의 작업에 작업 실행 역할 또는 작업 역할 재정의를 사용해야 하는 경우 각 작업 실행 역할 또는 작업 역할 재정의에 대한 iam:PassRole 권한을 CodeDeploy IAM 역할에 정책으로 추가해야 합니다. 자세한 내용은 Amazon ECS 태스크 실행 IAM 역할태스크 IAM 역할 섹션을 참조하세요.

다음 절차에 따라 정책 생성

AWS Management Console
JSON 정책 편집기를 사용하여 정책을 생성하려면
  1. AWS Management Console 로그인하고 https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.

  2. 왼쪽의 탐색 창에서 정책을 선택합니다.

    정책을 처음으로 선택하는 경우 관리형 정책 소개 페이지가 나타납니다. 시작하기를 선택합니다.

  3. 페이지 상단에서 정책 생성을 선택합니다.

  4. 정책 편집기 섹션에서 JSON 옵션을 선택합니다.

  5. 다음 JSON 정책 문서를 입력합니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": ["arn:aws:iam::<aws_account_id>:role/<ecsTaskExecutionRole_or_TaskRole_name>"] } ] }
  6. 다음을 선택합니다.

    참고

    언제든지 시각적 편집기 옵션과 JSON 편집기 옵션 간에 전환할 수 있습니다. 그러나 변경을 적용하거나 시각적 편집기에서 다음을 선택한 경우 IAM은 시각적 편집기에 최적화되도록 정책을 재구성할 수 있습니다. 자세한 내용은 IAM 사용 설명서정책 재구성을 참조하십시오.

  7. 검토 및 생성 페이지에서 생성하는 정책에 대한 정책 이름설명(선택 사항)을 입력합니다. 이 정책에 정의된 권한을 검토하여 정책이 부여한 권한을 확인합니다.

  8. 정책 생성을 선택하고 새로운 정책을 저장합니다.

정책을 생성한 후 정책을 CodeDeploy 역할에 연결합니다. 정책을 역할에 연결하는 방법에 대한 자세한 내용은 사용 설명서의 역할 권한 정책 수정 (콘솔) 을AWS Identity and Access Management 참조하십시오.

AWS CLI

모든 사용자 입력을 자체 정보로 바꾸십시오.

  1. 다음 콘텐츠를 통해 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>"] } ] }
  2. 다음 명령을 사용하여 JSON 정책 문서 파일을 사용하여 IAM 정책을 생성합니다.

    aws iam create-policy \ --policy-name cdTaskExecutionPolicy \ --policy-document file://blue-green-iam-passrole.json
  3. 다음 명령을 사용하여 생성한 IAM 정책의 ARN을 검색합니다.

    aws iam list-policies --scope Local --query 'Policies[?PolicyName==`cdTaskExecutionPolicy`].Arn'
  4. 다음 명령을 사용하여 정책을 CodeDeploy IAM 역할에 연결합니다.

    aws iam attach-role-policy \ --role-name ecsCodedeployRole \ --policy-arn arn:aws:iam:111122223333:aws:policy/cdTaskExecutionPolicy