View a markdown version of this page

步驟 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

    如需詳細資訊,請參閱《Amazon EC2 Auto Scaling 使用者指南》中的 步驟 2:建立服務角色、建立 Auto Scaling 群組的啟動範本,以及啟動範本支援。 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 APIs 建立服務角色。

建立服務角色 (主控台)

  1. 登入 AWS 管理主控台 並開啟位於 https://https://console.aws.amazon.com/iam/ 的 IAM 主控台。

  2. 在導覽窗格中,選擇角色,然後選擇建立角色。

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

  4. 選擇您的使用案例:

    • 針對 EC2/現場部署,選擇 CodeDeploy。

    • 針對 AWS Lambda 部署,選擇 CodeDeploy for Lambda。

    • 針對 Amazon ECS 部署,選擇 CodeDeploy - ECS。

  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命令,根據名為 的 IAM 受管政策CodeDeployServiceRole,為名為 的服務角色提供許可AWSCodeDeployRole。例如:

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

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

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

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

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

如需建立服務角色的詳細資訊,請參閱《IAM 使用者指南》中的為 AWS 服務建立角色。

取得服務角色 ARN (主控台)

若要使用 IAM 主控台取得服務角色的 ARN:

  1. 登入 AWS 管理主控台 ,並在 https://https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

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

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

  4. 選擇 CodeDeployServiceRole。

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

取得服務角色 ARN (CLI)

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

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

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