[英]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,
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.