這是 AWS CDK v2 開發人員指南。較舊的 CDK v1 已於 2022 年 6 月 1 日進入維護,並於 2023 年 6 月 1 日結束支援。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS Cloud Development Kit (AWS CDK) 可以擷取 AWS Systems Manager 參數存放區屬性的值。在合成期間, AWS CDK 會產生權杖,並在部署 AWS CloudFormation 期間由 解析。
AWS CDK 支援擷取純值和安全值。您可以請求任何一種值的特定版本。對於純值,您可以從請求中省略版本,以擷取最新版本。對於安全值,您必須在請求安全屬性的值時指定版本。
注意
本主題說明如何從 AWS Systems Manager 參數存放區讀取屬性。您也可以從 讀取秘密 AWS Secrets Manager (請參閱 從 取得值 AWS Secrets Manager)。
部署時間讀取 Systems Manager 值
若要從 Systems Manager 參數存放區讀取值,請使用 valueForStringParameter 和 valueForSecureStringParameter 方法。根據您想要的屬性是純字串或安全字串值,選擇方法。這些方法會傳回字符,而不是實際值。值會在部署 AWS CloudFormation 期間由 解析。以下是範例:
import * as ssm from 'aws-cdk-lib/aws-ssm';
// Get latest version or specified version of plain string attribute
const latestStringToken = ssm.StringParameter.valueForStringParameter(
this, 'my-plain-parameter-name'); // latest version
const versionOfStringToken = ssm.StringParameter.valueForStringParameter(
this, 'my-plain-parameter-name', 1); // version 1
// Get specified version of secure string attribute
const secureStringToken = ssm.StringParameter.valueForSecureStringParameter(
this, 'my-secure-parameter-name', 1); // must specify version
目前支援此功能AWS 的服務數量有限。
合成時讀取 Systems Manager 值
有時,在合成時提供參數很有用。透過這樣做, AWS CloudFormation 範本將一律使用相同的值,而不是在部署期間解析該值。
若要在合成時間從 Systems Manager 參數存放區讀取值,請使用 valueFromLookup 方法 (Python:value_from_lookup
)。此方法會將 參數的實際值傳回為內容值和 AWS CDK值。如果該值尚未快取cdk.json
或傳遞到命令列,則會從目前 AWS 帳戶擷取。因此,堆疊必須合成明確 AWS 的環境資訊。
以下是範例:
import * as ssm from 'aws-cdk-lib/aws-ssm';
const stringValue = ssm.StringParameter.valueFromLookup(this, 'my-plain-parameter-name');
只能擷取純 Systems Manager 字串。無法擷取安全字串。一律會傳回最新版本。無法請求特定版本。
重要
擷取的值最終將出現在您的合成 AWS CloudFormation 範本中。這可能是安全風險,取決於誰可以存取您的 AWS CloudFormation 範本及其價值類型。一般而言,請勿將此功能用於密碼、金鑰或其他您想要保持私密的值。
將值寫入 Systems Manager
您可以使用 AWS CLI AWS Management Console、 或 AWS SDK 來設定 Systems Manager 參數值。下列範例使用 ssm put-parameter CLI 命令。
aws ssm put-parameter --name "parameter-name" --type "String" --value "parameter-value" aws ssm put-parameter --name "secure-parameter-name" --type "SecureString" --value "secure-parameter-value"
更新已存在的 SSM 值時,請同時包含 --overwrite
選項。
aws ssm put-parameter --overwrite --name "parameter-name" --type "String" --value "parameter-value" aws ssm put-parameter --overwrite --name "secure-parameter-name" --type "SecureString" --value "secure-parameter-value"