簡體   English   中英

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,
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM