为 aws-cdk 管道的跨账户执行角色添加权限

Add permissions to aws-cdk pipelines' cross account execution role

我有三个 AWS 账户:

Shared账户拥有对应zone的route53域名。

我确实想让 DevelopmentProduction 能够使用这些域名(附上 dns 记录,比如 dev.domainname.com)

编辑:我还需要访问共享帐户中的其他资源(s3 存储桶、certificatemanager 等),这是为了简化问题。

我引导了 pipeline stages works as per this guide

的账户和跨账户部署

如果我尝试部署一个使用域的堆栈,它会按预期失败,因为 Development 堆栈中的角色 (cfn-exec-role) 没有资源权限共享堆栈。

我可以在共享堆栈中附加必要的策略,允许 DevelopmentProduction 堆栈中的角色访问必要的资源,但有没有办法根据“基础设施即代码”在代码中解决这个问题?

这需要获得 DevelopmentProduction 帐户的执行角色,并在 Shared[ 中附加权限=48=] 帐号

因为Route53支持,可以避免跨账户的资源共享或权限。在您的开发帐户中创建一个 dev.domainname.com 托管区域,在您的生产帐户中创建一个 domainname.com 托管区域。

const hostedZone = HostedZone.fromLookup(this, 'HostedZone', {
  // synth-time hosted zone lookup
  domainName: props.isProd ? 'domainname.com' : 'dev.domainname.com',
});

所以我假设您想要这样的东西 (GitHub): 主要区别在于您不想在 prod/dev 帐户中手动创建角色,并且您的 dev-env 也在不同的帐户中。

我将通过创建一个不同的 CDK 堆栈来扩展它,该堆栈在产品上创建角色 CodePipelineCrossAccountRole (policy) and CloudFormationDeploymentRole (policy)。在您的情况下,开发人员也需要同样的东西。在 dev 和 prod 中部署这些堆栈,您可以通过管道堆栈中的 ARN 访问角色。并且以类似的方式,您可以扩展它以提供对其他共享资源的跨帐户访问权限,就像已经为工件存储桶 en KMS 实现的那样。