AWS-CDK 资源
AWS-CDK Resources
使用 CDK 为我的项目创建 KMS 密钥(以及与此相关的其他资源)并希望确保我正确处理资源。
在我的开发阶段,我可能会进行部署,做一些开发工作,然后发布 cdk destroy
来清理项目,因为我知道我几天内不会再回来了。
如果我不将代码包装在导入中,我会发现正在创建重复键,或者对于 DynamoDB 等某些资源,它会因资源已存在而失败:
try {
const keyRef = kms.Alias.fromAliasName(this, 'SomeKey', 'SomeKey');
} catch {
const keyRef = new kms.Key(this, 'SomeKey', {
description: 'Some descriptive text',
enableKeyRotation: true,
trustAccountIdentities: true
});
keyRef .grantEncryptDecrypt(lambdaFunc);
}
任何人都可以提出更好的处理方法吗?或者这是预期的?
在开发我的项目时,我不喜欢在解决方案至少处于 Alpha 阶段之前让资源发挥作用。
创建KMS时,可以定义一个RemovalPolicy:
它的默认值为 RETAIN
,这意味着即使您删除了堆栈,KMS 密钥仍会保留在您的帐户中。这对生产环境很有用,在生产环境中,您通常希望保留堆栈外部资源可能使用的密钥。
在您的开发环境中,您可以将其设置为 DESTROY
,它将与您的堆栈一起删除。
您应该在代码中捕获此逻辑。像
const keyRef = new kms.Key(this, 'SomeKey', {
description: 'Some descriptive text',
enableKeyRotation: true,
trustAccountIdentities: true,
// define a method to check if it's a dev environment
// and set removalPolicy accordingly
removalPolicy: isDevEnv() ? cdk.RemovalPolicy.DESTROY : cdk.RemovalPolicy.RETAIN,
});
使用 CDK 为我的项目创建 KMS 密钥(以及与此相关的其他资源)并希望确保我正确处理资源。
在我的开发阶段,我可能会进行部署,做一些开发工作,然后发布 cdk destroy
来清理项目,因为我知道我几天内不会再回来了。
如果我不将代码包装在导入中,我会发现正在创建重复键,或者对于 DynamoDB 等某些资源,它会因资源已存在而失败:
try {
const keyRef = kms.Alias.fromAliasName(this, 'SomeKey', 'SomeKey');
} catch {
const keyRef = new kms.Key(this, 'SomeKey', {
description: 'Some descriptive text',
enableKeyRotation: true,
trustAccountIdentities: true
});
keyRef .grantEncryptDecrypt(lambdaFunc);
}
任何人都可以提出更好的处理方法吗?或者这是预期的?
在开发我的项目时,我不喜欢在解决方案至少处于 Alpha 阶段之前让资源发挥作用。
创建KMS时,可以定义一个RemovalPolicy:
它的默认值为 RETAIN
,这意味着即使您删除了堆栈,KMS 密钥仍会保留在您的帐户中。这对生产环境很有用,在生产环境中,您通常希望保留堆栈外部资源可能使用的密钥。
在您的开发环境中,您可以将其设置为 DESTROY
,它将与您的堆栈一起删除。
您应该在代码中捕获此逻辑。像
const keyRef = new kms.Key(this, 'SomeKey', {
description: 'Some descriptive text',
enableKeyRotation: true,
trustAccountIdentities: true,
// define a method to check if it's a dev environment
// and set removalPolicy accordingly
removalPolicy: isDevEnv() ? cdk.RemovalPolicy.DESTROY : cdk.RemovalPolicy.RETAIN,
});