步驟 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:建立服務角色,請參閱 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/

  2. 在導覽窗格中,選擇 Roles (角色),然後選擇 Create role (建立角色)

  3. 選擇AWS 服務,然後在使用案例下,從下拉式清單中選擇CodeDeploy

  4. 選擇您的使用案例:

    • 對於 EC2/內部部署,請選擇。CodeDeploy

    • 若為 AWS Lambda 部署,請選擇CodeDeploy 使用 Lambda

    • 對於 Amazon ECS 部署,請選擇 CodeDeploy -EC S。

  5. 選擇下一步

  6. 在 [新增權限] 頁面上,會顯示使用案例的正確權限原則。選擇下一步

  7. 在 [名稱、檢閱和建立] 頁面的 [角色名稱] 中,輸入服務角色的名稱 (例如,CodeDeployServiceRole),然後選擇 [建立角色]。

    您也可以在角色說明中輸入此服務角色的說明

  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://。這是此命令必要項目。

    在命令的輸出中,記下 Role 物件下 Arn 項目的值。您稍後將需要它來建立部署群組。若您忘記該值,請遵循取得服務角色 ARN (CLI) 中的說明。

  3. 您使用的受管原則取決於運算平台。

    • 如果您的部署是 EC2 /內部部署計算平台:

      呼叫命attach-role-policy令,根據名為CodeDeployServiceRole的 IAM 受管政策授予名為許可的服務角色AWSCodeDeployRole。例如:

      aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRole
    • 如果您的部署是使用 AWS Lambda 運算平台:

      呼叫命attach-role-policy令,根據名為CodeDeployServiceRoleAWSCodeDeployRoleForLambda或的 IAM 受管政策提供名為許可的服務角色AWSCodeDeployRoleForLambdaLimited。例如:

      aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRoleForLambda
    • 如果您的部署是 Amazon ECS 運算平台:

      呼叫命attach-role-policy令,根據名為CodeDeployServiceRoleAWSCodeDeployRoleForECS或的 IAM 受管政策提供名為許可的服務角色AWSCodeDeployRoleForECSLimited。例如:

      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/

  2. 在導覽窗格中,選擇角色

  3. Filter (篩選條件) 方塊中,輸入 CodeDeployServiceRole,然後按 Enter 鍵。

  4. 選擇CodeDeployServiceRole

  5. 記下 Role ARN (角色 ARN) 欄位的值。

取得服務角色 ARN (CLI)

若要使用取得服務角色的 ARN,請針對名CodeDeployServiceRole為 AWS CLI 以下服務角色呼叫get-role命令:

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

傳回的值即為服務角色的 ARN。