2단계: 서비스 역할 만들기 CodeDeploy - AWS CodeDeploy

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

2단계: 서비스 역할 만들기 CodeDeploy

에서 AWS서비스 역할은 서비스에 권한을 부여하여 리소스에 액세스할 AWS 수 있도록 하는 데 사용됩니다. AWS 서비스 역할에 연결하는 정책에 따라 서비스가 액세스할 수 있는 리소스와 서비스가 그러한 리소스로 수행할 수 있는 작업이 결정됩니다.

생성 대상 서비스 역할에는 컴퓨팅 플랫폼에 필요한 권한을 CodeDeploy 부여해야 합니다. 둘 이상의 컴퓨팅 플랫폼에 배포하는 경우 플랫폼별로 서비스 역할을 하나씩 생성합니다. 권한을 추가하려면 다음 AWS 제공된 정책 중 하나 이상을 첨부하십시오.

EC2/온프레미스 배포의 경우 AWSCodeDeployRole 정책을 연결합니다. 이 정책은 서비스 역할에서 다음을 수행하는 데 필요한 권한을 제공합니다.

  • Amazon EC2 Auto Scaling 그룹 이름으로 인스턴스의 태그를 읽거나 Amazon EC2 인스턴스를 식별합니다.

  • Amazon EC2 Auto Scaling 그룹, 수명 주기 후크 및 크기 조정 정책을 읽고, 생성하고, 업데이트하고, 삭제합니다.

  • Amazon SNS 주제로 정보를 게시합니다.

  • CloudWatch 경보에 대한 정보를 검색합니다.

  • Elastic Load Balancing을 읽고 업데이트합니다.

    참고

    시작 템플릿으로 Auto Scaling 그룹을 생성한 경우 다음 권한을 추가해야 합니다.

    • ec2:RunInstances

    • ec2:CreateTags

    • iam:PassRole

    자세한 내용은 2단계: 서비스 역할 생성, Auto Scaling 그룹을 위한 시작 템플릿 만들기Amazon EC2 Auto Scaling 사용 설명서시작 템플릿 지원을 참조하세요.

Amazon ECS 배포에 대해 지원 서비스에 대한 전체 액세스 권한을 부여하려는 경우 AWSCodeDeployRoleForECS 정책을 연결합니다. 이 정책은 서비스 역할에서 다음을 수행하는 데 필요한 권한을 제공합니다.

  • Amazon ECS 작업 세트를 읽고, 업데이트하고, 삭제합니다.

  • Elastic Load Balancing 대상그룹, 리스너 및 규칙을 업데이트합니다.

  • 함수 호출 AWS Lambda .

  • Amazon S3 버킷에 있는 개정 파일에 액세스합니다.

  • CloudWatch 경보에 대한 정보를 검색합니다.

  • Amazon SNS 주제로 정보를 게시합니다.

Amazon ECS 배포의 경우 서비스 지원을 위한 액세스를 제한하려면 AWSCodeDeployRoleForECSLimited 정책을 사용합니다. 이 정책은 서비스 역할에서 다음을 수행하는 데 필요한 권한을 제공합니다.

  • Amazon ECS 작업 세트를 읽고, 업데이트하고, 삭제합니다.

  • CloudWatch 경보에 대한 정보를 검색합니다.

  • Amazon SNS 주제로 정보를 게시합니다.

AWS Lambda 배포의 경우 Amazon SNS로의 게시를 허용하려면 정책을 첨부하십시오. AWSCodeDeployRoleForLambda 이 정책은 서비스 역할에서 다음을 수행하는 데 필요한 권한을 제공합니다.

  • 함수와 별칭을 읽고, 업데이트하고, AWS Lambda 호출할 수 있습니다.

  • Amazon S3 버킷에 있는 개정 파일에 액세스합니다.

  • 경보에 CloudWatch 대한 정보를 검색합니다.

  • Amazon SNS 주제로 정보를 게시합니다.

AWS Lambda 배포의 경우 Amazon SNS에 대한 액세스를 제한하려면 정책을 첨부하십시오. AWSCodeDeployRoleForLambdaLimited 이 정책은 서비스 역할에서 다음을 수행하는 데 필요한 권한을 제공합니다.

  • 함수와 별칭을 읽고, 업데이트하고, AWS Lambda 호출할 수 있습니다.

  • Amazon S3 버킷에 있는 개정 파일에 액세스합니다.

  • 경보에 CloudWatch 대한 정보를 검색합니다.

서비스 역할을 설정하는 과정에서 액세스 권한을 부여하려는 엔드포인트를 지정하도록 신뢰 관계를 업데이트합니다.

IAM 콘솔 AWS CLI, 또는 IAM API를 사용하여 서비스 역할을 생성할 수 있습니다.

서비스 역할 생성(콘솔)

  1. 에 AWS Management Console 로그인하고 https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 역할을 선택한 후 역할 생성을 선택합니다.

  3. AWS 서비스를 선택하고 사용 사례의 드롭다운 목록에서 선택합니다. CodeDeploy

  4. 사용 사례를 선택합니다.

    • EC2/온프레미스 배포의 경우 선택하십시오. CodeDeploy

    • AWS Lambda 배포의 경우 Lambda를 선택하십시오. CodeDeploy

    • Amazon ECS 배포의 경우 - ECS를 선택하십시오CodeDeploy .

  5. 다음을 선택합니다.

  6. 권한 추가 페이지에는 사용 사례에 대한 올바른 권한 정책이 표시됩니다. 다음을 선택합니다.

  7. 이름 지정, 검토 및 생성 페이지의 역할 이름에 서비스 역할의 이름(예: CodeDeployServiceRole)을 입력한 후 역할 생성을 선택합니다.

    이 서비스 역할에 대한 설명을 역할 설명(Role description)에 입력할 수도 있습니다.

  8. 이 서비스 역할이 현재 지원되는 모든 엔드포인트에 대한 액세스 권한을 갖도록 하려면 여기서 이 절차를 마칩니다.

    이 서비스 역할이 일부 엔드포인트에 액세스하지 못하도록 제한하려면 이 절차의 나머지 단계를 계속 진행합니다.

  9. 역할 목록에서 방금 생성한 역할(CodeDeployServiceRole)을 검색하고 선택합니다.

  10. 신뢰 관계 탭을 선택합니다.

  11. 신뢰 정책 편집을 선택합니다.

    다음 정책은 지원되는 모든 엔드포인트에 액세스할 수 있는 권한을 서비스 역할에 부여합니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

    서비스 역할에 지원되는 일부 엔드포인트에 대한 액세스 권한만 부여하려면 신뢰 정책 텍스트 상자의 콘텐츠를 다음 정책으로 바꿉니다. 액세스를 방지하려는 엔드포인트 행을 제거한 후, 정책 업데이트를 선택합니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.us-east-1.amazonaws.com", "codedeploy.us-east-2.amazonaws.com", "codedeploy.us-west-1.amazonaws.com", "codedeploy.us-west-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.ap-east-1.amazonaws.com", "codedeploy.ap-northeast-1.amazonaws.com", "codedeploy.ap-northeast-2.amazonaws.com", "codedeploy.ap-northeast-3.amazonaws.com", "codedeploy.ap-southeast-1.amazonaws.com", "codedeploy.ap-southeast-2.amazonaws.com", "codedeploy.ap-southeast-3.amazonaws.com", "codedeploy.ap-southeast-4.amazonaws.com", "codedeploy.ap-south-1.amazonaws.com", "codedeploy.ap-south-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.eu-west-1.amazonaws.com", "codedeploy.eu-west-2.amazonaws.com", "codedeploy.eu-west-3.amazonaws.com", "codedeploy.eu-central-1.amazonaws.com", "codedeploy.eu-central-2.amazonaws.com", "codedeploy.eu-north-1.amazonaws.com", "codedeploy.eu-south-1.amazonaws.com", "codedeploy.eu-south-2.amazonaws.com", "codedeploy.il-central-1.amazonaws.com", "codedeploy.me-central-1.amazonaws.com", "codedeploy.me-south-1.amazonaws.com", "codedeploy.sa-east-1.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

서비스 역할 생성에 대한 자세한 내용은 IAM 사용 설명서의 AWS 서비스에 권한을 위임하기 위한 역할 생성을 참조하십시오.

서비스 역할 생성(CLI)

  1. 개발 머신에서 텍스트 파일을 작성합니다(예: CodeDeployDemo-Trust.json). 이 파일은 사용자를 대신하여 작업할 수 있도록 CodeDeploy 하는 데 사용됩니다.

    다음 중 하나를 수행하십시오.

    • 지원되는 모든 AWS 지역에 액세스 권한을 부여하려면 파일에 다음 콘텐츠를 저장하세요.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    • 지원되는 일부 리전에만 액세스를 허용하려면, 파일에 다음 내용을 입력한 후 액세스를 제한할 리전 행을 제거합니다.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.us-east-1.amazonaws.com", "codedeploy.us-east-2.amazonaws.com", "codedeploy.us-west-1.amazonaws.com", "codedeploy.us-west-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.ap-east-1.amazonaws.com", "codedeploy.ap-northeast-1.amazonaws.com", "codedeploy.ap-northeast-2.amazonaws.com", "codedeploy.ap-northeast-3.amazonaws.com", "codedeploy.ap-southeast-1.amazonaws.com", "codedeploy.ap-southeast-2.amazonaws.com", "codedeploy.ap-southeast-3.amazonaws.com", "codedeploy.ap-southeast-4.amazonaws.com", "codedeploy.ap-south-1.amazonaws.com", "codedeploy.ap-south-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.eu-west-1.amazonaws.com", "codedeploy.eu-west-2.amazonaws.com", "codedeploy.eu-west-3.amazonaws.com", "codedeploy.eu-central-1.amazonaws.com", "codedeploy.eu-central-2.amazonaws.com", "codedeploy.eu-north-1.amazonaws.com", "codedeploy.eu-south-1.amazonaws.com", "codedeploy.eu-south-2.amazonaws.com", "codedeploy.il-central-1.amazonaws.com", "codedeploy.me-central-1.amazonaws.com", "codedeploy.me-south-1.amazonaws.com", "codedeploy.sa-east-1.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
      참고

      목록에서 마지막 엔드포인트 뒤에는 쉼표를 사용하지 마세요.

  2. 동일한 디렉터리에서 create-role 명령을 호출하여 방금 만든 텍스트 파일의 정보를 바탕으로 CodeDeployServiceRole이라는 서비스 역할을 만듭니다.

    aws iam create-role --role-name CodeDeployServiceRole --assume-role-policy-document file://CodeDeployDemo-Trust.json
    중요

    파일 이름 앞에 file://를 포함해야 합니다. 이 명령에 필수적입니다.

    명령의 출력에서 Arn 객체 아래의 Role 항목 값을 적어 둡니다. 이 값은 나중에 배포 그룹을 만들 때 필요합니다. 값을 잊어버린 경우, 서비스 역할 ARN 확인(CLI) 의 지침을 따릅니다.

  3. 사용하는 관리형 정책은 컴퓨팅 플랫폼에 따라 다릅니다.

    • EC2/온프레미스 컴퓨팅 플랫폼에 배포하는 경우:

      attach-role-policy 명령을 호출하여 CodeDeployServiceRole이라는 서비스 역할에 AWSCodeDeployRole이라는 IAM 관리형 정책에 기반한 권한을 부여합니다. 예:

      aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRole
    • AWS Lambda 컴퓨팅 플랫폼에 배포하는 경우:

      attach-role-policy 명령을 호출하여 CodeDeployServiceRole이라는 서비스 역할에 AWSCodeDeployRoleForLambda 또는 AWSCodeDeployRoleForLambdaLimited라는 IAM 관리형 정책에 기반한 권한을 부여합니다. 예:

      aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRoleForLambda
    • Amazon ECS 컴퓨팅 플랫폼에 배포하는 경우:

      attach-role-policy 명령을 호출하여 CodeDeployServiceRole이라는 서비스 역할에 AWSCodeDeployRoleForECS 또는 AWSCodeDeployRoleForECSLimited라는 IAM 관리형 정책에 기반한 권한을 부여합니다. 예:

      aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/AWSCodeDeployRoleForECS

서비스 역할 생성에 대한 자세한 내용은 IAM 사용 설명서의 AWS 서비스 역할 생성을 참조하십시오.

서비스 역할 ARN 확인(콘솔)

IAM 콘솔을 사용하여 서비스 역할의 ARN을 확인하려면:

  1. 에 AWS Management Console 로그인하고 https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 역할을 선택합니다.

  3. 필터 상자에 CodeDeployServiceRole을 입력한 후 Enter 키를 누릅니다.

  4. 선택하세요 CodeDeployServiceRole.

  5. 역할 ARN 필드의 값을 기록해 둡니다.

서비스 역할 ARN 확인(CLI)

를 사용하여 서비스 역할의 ARN을 AWS CLI 가져오려면 다음과 같은 서비스 역할에 대해 get-role 명령을 호출하십시오. CodeDeployServiceRole

aws iam get-role --role-name CodeDeployServiceRole --query "Role.Arn" --output text

반환되는 값은 서비스 역할의 ARN입니다.