Amazon ECS CodeDeploy IAM 角色
在将 CodeDeploy 蓝色/绿色部署类型用于 Amazon ECS 之前,CodeDeploy 服务需要获得代表您更新 Amazon ECS 服务的权限。这些权限是由 CodeDeploy IAM 角色 (ecsCodeDeployRole
) 提供的。
提供了两个托管策略。有关更多信息,请参阅《AWS 托管式策略参考指南》中的以下章节之一:
创建 CodeDeploy 角色
您可以使用以下过程为 Amazon ECS 创建 CodeDeploy 角色
- AWS Management Console
-
创建用于 CodeDeploy 的服务角色(IAM 控制台)
登录 AWS Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/。
-
在 IAM 控制台的导航窗格中,选择角色,然后选择创建角色。
-
对于 Trusted entity type(可信实体类型),选择 AWS 服务。
-
对于服务或使用案例,请选择 CodeDeploy,然后选择 CodeDeploy - ECS 使用案例。
-
选择下一步。
-
在附加权限策略部分中,确保选择了 AWSCodeDeployRoleForECS 策略。
-
选择下一步。
-
对于在角色名称,输入 ecsCodeDeployRole。
-
检查该角色,然后选择创建角色。
- AWS CLI
-
将所有用户输入
替换为您自己的信息。
-
创建一个名为 codedeploy-trust-policy.json
的文件,其中包含要用于 CodeDeploy IAM 角色的信任策略。
{
"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
权限作为策略添加到 Codeploy 角色。
任务执行角色权限
当服务中的任务需要某个任务执行角色时,必须将每个任务执行角色或任务角色覆盖的 iam:PassRole
权限作为策略添加到 Codeploy 角色。有关更多信息,请参阅Amazon ECS 任务执行 IAM 角色 和Amazon ECS 任务 IAM 角色。然后,将该策略附加到该 CodeDeploy 角色
创建策略
- AWS Management Console
-
使用 JSON 策略编辑器创建策略
登录AWS Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/。
-
在左侧的导航窗格中,选择策略。
如果这是您首次选择策略,则会显示欢迎访问托管式策略页面。选择开始使用。
-
在页面的顶部,选择创建策略。
-
在策略编辑器部分,选择 JSON 选项。
-
输入以下 JSON 策略文档:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": ["arn:aws:iam::<aws_account_id>:role/<ecsCodeDeployRole>"]
}
]
}
-
选择下一步。
您可以随时在可视化和 JSON 编辑器选项卡之间切换。不过,如果您进行更改或在可视化编辑器中选择下一步,IAM 可能会调整策略结构以针对可视化编辑器进行优化。有关更多信息,请参阅《IAM 用户指南》中的调整策略结构。
-
在查看并创建页面上,为您要创建的策略输入策略名称和描述(可选)。查看此策略中定义的权限以查看策略授予的权限。
-
选择创建策略可保存新策略。
创建策略后,将策略附加到 CodeDeploy 角色。有关如何将策略附加到角色的信息,请参阅《AWS Identity and Access Management 用户指南》中的更新角色权限。
- AWS CLI
-
将所有用户输入
替换为您自己的信息。
-
使用以下内容创建名为 blue-green-iam-passrole.json
的文件。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": ["arn:aws:iam::<aws_account_id>:role/<ecsCodeDeployRole>"]
}
]
}
-
使用以下命令通过 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