從 Systems Manager Parameter Store 取得純文字值 - AWS CloudFormation

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

從 Systems Manager Parameter Store 取得純文字值

建立 CloudFormation 範本時,建議您使用儲存在參數存放區中的純文字值。Parameter Store 是 AWS Systems Manager 的一個功能。如需 Parameter Store 的簡介,請參閱《AWS Systems Manager 使用者指南》中的 AWS Systems Manager Parameter Store

若要在範本中使用 Parameter Store 的純文字值,請使用 ssm 動態參考。此參考可讓您存取 Parameter Store 中 StringStringList 參數類型的值。

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

使用 ssm 動態參考時,需要謹記幾個重要事項:

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

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

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

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

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

許可

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

參考模式

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

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

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

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

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

必要。

version

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

選用。

範例

公有 AMI ID 參數

下列範例會建立參考公有 AMI 參數的 EC2 執行個體。動態參考會從公有參數中擷取最新的 Amazon Linux 2023 AMI ID。如需公有參數的詳細資訊,請參閱《AWS Systems Manager 使用者指南》中的探索參數存放區中的公有參數

JSON

{ "Resources": { "MyInstance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}", "InstanceType": "t2.micro" } } } }

YAML

Resources: MyInstance: Type: AWS::EC2::Instance Properties: ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}' InstanceType: t2.micro

自訂 AMI ID 參數

下列範例會建立 EC2 啟動範本,它可參考儲存在 Parameter Store 中的自訂 AMI ID。動態參考會在執行個體從啟動範本啟動時,從 golden-ami 參數的 2 版本中擷取 AMI ID。

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