aws-kms的cdk结构
aws-cdk.aws-kms的Python项目详细描述
aws密钥管理服务构造库
定义KMS密钥:
importkms=require('@aws-cdk/aws-kms');newkms.Key(this,'MyKey',{enableKeyRotation: true});
添加几个别名:
constkey=newkms.Key(this,'MyKey');key.addAlias('alias/foo');key.addAlias('alias/bar');
在堆栈之间共享密钥
要在同一cdk应用程序的不同堆栈中使用kms密钥, 将构造传递到另一个堆栈:
/** * Stack that defines the key */classKeyStackextendscdk.Stack{publicreadonlykey: kms.Key;constructor(scope: cdk.App,id: string,props?: cdk.StackProps){super(scope,id,props);this.key=newkms.Key(this,'MyKey',{removalPolicy: RemovalPolicy.DESTROY});}}interfaceUseStackPropsextendscdk.StackProps{key: kms.IKey;// Use IKey here}/** * Stack that uses the key */classUseStackextendscdk.Stack{constructor(scope: cdk.App,id: string,props: UseStackProps){super(scope,id,props);// Use the IKey object here.newkms.Alias(this,'Alias',{aliasName:'alias/foo',targetKey: props.key});}}constkeyStack=newKeyStack(app,'KeyStack');newUseStack(app,'UseStack',{key: keyStack.key});< H3>导入现有密钥< EH3>
若要使用未在此CDK应用程序中定义但通过其他方式创建的KMS密钥,请使用
Key.fromKeyArn(parent, name, ref)
:
constmyKeyImported=kms.Key.fromKeyArn(this,'MyImportedKey','arn:aws:...');// you can do stuff with this imported key.myKeyImported.addAlias('alias/foo');
请注意,对myKeyImported
上的.addToPolicy(statement)
的调用将没有
对密钥策略的影响,因为它不属于堆栈。电话
将是一个禁区。