【发布时间】:2023-02-21 23:15:53
【问题描述】:
我正在尝试使用 EcsDeployAction,我知道对于跨账户部署,我必须提供一个在 ECS 集群账户中创建的角色:
const service = ecs.BaseService.fromServiceArnWithCluster(this, 'Service', `arn:aws:ecs:${this.region}:${ACCOUNTS.dev}:service/${CLUSTER_NAME}/${SERVICE_NAME}`);
const deploymentRole = iam.Role.fromRoleArn(this, 'DeploymentRole', `arn:aws:iam::${ACCOUNTS.dev}:role/${DEPLOYMENT_ROLE_NAME}`)
const deploymentAction = new codepipelineActions.EcsDeployAction({
actionName: 'deploy',
service,
input: buildOutputFromDockerBuildInCodeBuild,
role: deploymentRole,
});
- 我如何使用 CDK(或 CLI 或其他 IAAC 但不是手动通过控制台)创建此角色 (
deploymentRole),以便 Codepipeline 可以在另一个帐户中进行部署? - 这个角色需要什么权限?
- 角色的信任/承担角色策略应该是什么?
- 创建此角色后,我是否缺少其他任何东西来让此 Codepipeline 操作正常工作?
我在网上找到了一些跨账户部署的示例,但找不到以这种方式记录 IAM 角色创建的 ECS 部署示例。 Codepipeline 自己的文档和其他一些跨帐户部署示例显示了一个只能访问 S3 的角色,而不是我正在部署的角色。
【问题讨论】:
标签: amazon-web-services amazon-iam amazon-ecs aws-cdk aws-codepipeline