使用AWS CDK部署栈时如何为其指定服务角色?
CDK指定CloudFormation服务角色的实现方式
CDK有两种方式可以实现和原生CloudFormation命令--role-arn参数完全等效的栈服务角色指定效果:
方式1:部署时通过命令行参数传入
执行cdk deploy命令时直接添加--role-arn参数即可,示例如下:
cdk deploy ${STACK_NAME} --role-arn ${SERVICE_ROLE_ARN}
如果需要同时部署多个栈,也可以为每个栈单独指定对应的服务角色:
cdk deploy StackA StackB --role-arn StackA=arn:aws:iam::1234567890:role/cfn-role-a --role-arn StackB=arn:aws:iam::1234567890:role/cfn-role-b
优先级说明:命令行传入的
--role-arn参数优先级最高,会覆盖代码中静态配置的服务角色。
方式2:栈代码中静态指定角色
如果希望固定栈使用的服务角色,不需要每次部署手动传参,可以在初始化Stack实例时通过role属性传入IAM角色对象,以下为TypeScript示例,其他语言语法逻辑一致:
import { Stack, StackProps, Role } from 'aws-cdk-lib'; import { Construct } from 'constructs'; export class YourCustomStack extends Stack { constructor(scope: Construct, id: string, props?: StackProps) { // 导入已存在的服务角色 const cfnServiceRole = Role.fromRoleArn( this, 'CfnServiceRole', 'arn:aws:iam::123456789012:role/你的服务角色ARN' ); super(scope, id, { ...props, // 此处指定当前栈使用的服务角色 role: cfnServiceRole }); // 后续栈内资源定义逻辑 } }
注意:所使用的服务角色必须提前配置好允许CloudFormation服务担任的信任策略,且包含部署栈内所有资源所需的权限,否则部署会触发权限错误。
内容的提问来源于stack exchange,提问作者SpaDev
相关产品推荐
相关产品推荐

