從 Systems Manager 參數存放區取得純文字值 - AWS CloudFormation

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

從 Systems Manager 參數存放區取得純文字值

建立 CloudFormation 範本時,您可能想要使用儲存在 參數存放區中的純文字值。參數存放區是 的功能 AWS Systems Manager。如需參數存放區的簡介,請參閱 AWS Systems Manager 使用者指南 中的AWS Systems Manager 參數存放區。

若要使用範本中參數存放區的純文字值,請使用ssm動態參考。此參考可讓您從 參數存放StringList區中的 類型 參數String或 存取值。

若要驗證要在堆疊操作中使用的ssm動態參考版本,請為堆疊操作建立變更集。然後,在範本索引標籤上檢閱已處理的範本。如需詳細資訊,請參閱 建立變更集檢視變更集

使用ssm動態參考時,請注意以下幾點重要事項:

  • CloudFormation 不支援動態參考上的偏離偵測。對於您尚未指定參數版本的ssm動態參考,建議您在 Systems Manager 中更新參數版本時,也對包含ssm動態參考的任何堆疊執行堆疊更新操作,以擷取最新的參數版本。

  • 若要在 CloudFormation 範本的 Parameters區段中使用ssm動態參考,您必須包含版本號碼。 CloudFormation 不允許您在本節中參考沒有版本號碼的參數存放區值。或者,您可以在範本中將 參數定義為 Systems Manager 參數類型。執行此操作時,您可以指定 Systems Manager 參數金鑰做為 參數的預設值。 然後, CloudFormation 會從 參數存放區擷取 參數值的最新版本,而不必指定版本編號。這可以讓您的範本更簡單易維護。如需詳細資訊,請參閱使用 CloudFormation提供的參數類型參考現有的資源和 Systems Manager 參數

  • 對於自訂資源, 會在將請求傳送至自訂資源之前 CloudFormation 解決ssm動態參考。

  • CloudFormation 不支援使用動態參考來參考從另一個 共用的參數 AWS 帳戶。

  • CloudFormation 不支援在動態參考中使用 Systems Manager 參數標籤。

許可

若要指定儲存在 Systems Manager 參數存放區中的參數,您必須具有呼叫 的許可 GetParameters 指定參數。若要了解如何建立提供特定 Systems Manager 參數存取權IAM的政策,請參閱 AWS Systems Manager 使用者指南中的使用IAM政策限制 Systems Manager 參數的存取權

參考模式

若要參考儲存在範本中 Systems Manager 參數存放區的 CloudFormation純文字值,請使用下列ssm參考模式。

{{resolve:ssm:parameter-name:version}}

針對 parameter-name 和 version,您的參考必須遵守下列規則表達式模式:

{{resolve:ssm:[a-zA-Z0-9_.\-/]+(:\d+)?}}
parameter-name

參數存放區中的參數名稱。函數名稱區分大小寫。

必要。

version

整數,指定要使用的參數版本。如果您未指定確切版本, 會在您建立或更新堆疊時, CloudFormation 使用最新版本的 參數。如需詳細資訊,請參閱 AWS Systems Manager 使用者指南 中的使用參數版本

選用。

範例

下列範例會建立EC2啟動範本,參考儲存在 參數存放區中的自訂 AMI ID。動態參考會從版本擷取 AMI ID 2golden-ami參數。

JSON

{ "Resources": { "MyLaunchTemplate": { "Type": "AWS::EC2::LaunchTemplate", "Properties": { "LaunchTemplateName": { "Fn::Sub": "${AWS::StackName}-launch-template" }, "LaunchTemplateData": { "ImageId": "{{resolve:ssm:golden-ami:2}}", "InstanceType": "t2.micro" } } } } }

YAML

Resources: MyLaunchTemplate: Type: AWS::EC2::LaunchTemplate Properties: LaunchTemplateName: !Sub ${AWS::StackName}-launch-template LaunchTemplateData: ImageId: '{{resolve:ssm:golden-ami:2}}' InstanceType: t2.micro