为 aws-cdk 管道的跨账户执行角色添加权限
Add permissions to aws-cdk pipelines' cross account execution role
我有三个 AWS 账户:
- 共享(aws-cdk 管道所在的位置)
- 发展
- 生产
Shared账户拥有对应zone的route53域名。
我确实想让 Development 和 Production 能够使用这些域名(附上 dns 记录,比如 dev.domainname.com
)
编辑:我还需要访问共享帐户中的其他资源(s3 存储桶、certificatemanager 等),这是为了简化问题。
我引导了 pipeline stages works as per this guide
的账户和跨账户部署
如果我尝试部署一个使用域的堆栈,它会按预期失败,因为 Development 堆栈中的角色 (cfn-exec-role
) 没有资源权限共享堆栈。
我可以在共享堆栈中附加必要的策略,允许 Development 和 Production 堆栈中的角色访问必要的资源,但有没有办法根据“基础设施即代码”在代码中解决这个问题?
这需要获得 Development 和 Production 帐户的执行角色,并在 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 实现的那样。
我有三个 AWS 账户:
- 共享(aws-cdk 管道所在的位置)
- 发展
- 生产
Shared账户拥有对应zone的route53域名。
我确实想让 Development 和 Production 能够使用这些域名(附上 dns 记录,比如 dev.domainname.com
)
编辑:我还需要访问共享帐户中的其他资源(s3 存储桶、certificatemanager 等),这是为了简化问题。
我引导了 pipeline stages works as per this guide
的账户和跨账户部署如果我尝试部署一个使用域的堆栈,它会按预期失败,因为 Development 堆栈中的角色 (cfn-exec-role
) 没有资源权限共享堆栈。
我可以在共享堆栈中附加必要的策略,允许 Development 和 Production 堆栈中的角色访问必要的资源,但有没有办法根据“基础设施即代码”在代码中解决这个问题?
这需要获得 Development 和 Production 帐户的执行角色,并在 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):
我将通过创建一个不同的 CDK 堆栈来扩展它,该堆栈在产品上创建角色 CodePipelineCrossAccountRole
(policy) and CloudFormationDeploymentRole
(policy)。在您的情况下,开发人员也需要同样的东西。在 dev 和 prod 中部署这些堆栈,您可以通过管道堆栈中的 ARN 访问角色。并且以类似的方式,您可以扩展它以提供对其他共享资源的跨帐户访问权限,就像已经为工件存储桶 en KMS 实现的那样。