Amazon ECS CodeDeploy IAM 角色
在您搭配使用 CodeDeploy 藍/綠部署類型與 Amazon ECS 之前,CodeDeploy 服務需要許可來代您更新 Amazon ECS 服務。這些許可由 CodeDeploy IAM 角色 (ecsCodeDeployRole) 提供。
提供兩個受管政策。如需詳細資訊,請參閱 AWS Managed Policy Reference Guide 中的如下項目:
建立 CodeDeploy 角色
您可以透過如下程序建立 Amazon ECS 的 CodeDeploy 角色
- AWS Management Console
-
建立 CodeDeploy 的服務角色 (IAM 主控台)
登入 AWS Management Console,並前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。
-
在 IAM 主控台的導覽窗格中,選擇角色,然後選擇建立角色。
-
對於 Trusted entity type (信任的實體類型),請選擇 AWS 服務。
-
在服務或使用案例欄位中選擇 CodeDeploy,然後選擇 CodeDeploy – ECS 使用案例。
-
選擇下一步。
-
在連接許可政策區段中,確保已選取 AWSCodeDeployRoleForECS 政策。
-
選擇下一步。
-
在角色名稱欄位中輸入 ecsCodeDeployRole。
-
檢閱角色,然後選擇 Create role (建立角色)。
- AWS CLI
-
將所有 user input 取代為自己的資訊。
-
建立名為 codedeploy-trust-policy.json 的檔案,其中包含用於 CodeDeploy IAM 角色的信任政策。
JSON
- 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/AWSCodeDeployRoleForECS
aws iam attach-role-policy \
--role-name ecsCodedeployRole \
--policy-arn arn:aws:iam::aws:policy/AWSCodeDeployRoleForECSLimited
當服務中的任務需要任務執行角色時,您必須將每個任務執行角色或任務角色覆寫的 iam:PassRole 許可新增至 CodeDeploy 角色作為政策。
任務執行角色許可
當服務中的任務需要任務執行角色時,您必須將每個任務執行角色或任務角色覆寫的 iam:PassRole 許可新增至 CodeDeploy 角色作為政策。如需詳細資訊,請參閱Amazon ECS 任務執行 IAM 角色及Amazon ECS 任務 IAM 角色。然後,將該政策連接至 CodeDeploy 角色
建立政策
- AWS Management Console
-
若要使用 JSON 政策編輯器來建立政策
登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。
-
在左側的導覽窗格中,選擇 Policies (政策)。
如果這是您第一次選擇 Policies (政策),將會顯示 Welcome to Managed Policies (歡迎使用受管政策) 頁面。選擇 Get Started (開始使用)。
-
在頁面頂端,選擇 Create policy (建立政策)。
-
在政策編輯器中,選擇 JSON 選項。
-
輸入下列 JSON 政策文件:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": ["arn:aws:iam::<aws_account_id>:role/<ecsCodeDeployRole>"]
}
]
}
-
選擇下一步。
您可以隨時切換視覺化與 JSON 編輯器選項。不過,如果您進行變更或在視覺化編輯器中選擇下一步,IAM 就可能會調整您的政策結構,以便針對視覺化編輯器進行最佳化。如需詳細資訊,請參閱 IAM 使用者指南中的調整政策結構。
-
在檢視與建立頁面上,為您正在建立的政策輸入政策名稱與描述 (選用)。檢視此政策中定義的許可,來查看您的政策所授予的許可。
-
選擇 Create policy (建立政策) 儲存您的新政策。
建立政策後,請將政策連接至 CodeDeploy 角色。如需有關如何將政策連接至角色的資訊,請參閱 AWS Identity and Access Management User Guide 中的 Update permissions for a role。
- AWS CLI
-
將所有 user input 取代為自己的資訊。
-
建立稱為 blue-green-iam-passrole.json 的檔案,其中具有以下內容。
JSON
- JSON
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": ["arn:aws:iam::*:role/code-deploy-role"],
"Condition": {
"StringEquals": {"iam:PassedToService": "ecs.amazonaws.com"}
}
}
]
}
-
使用以下命令,透過 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