View a markdown version of this page

參數存放區參考 - AWS Systems Manager

• 2026 年 4 月 30 日之後將不再提供 AWS Systems Manager CloudWatch Dashboard。客戶可以繼續使用 Amazon CloudWatch 主控台來檢視、建立和管理其 Amazon CloudWatch 儀表板,就像現在一樣。如需詳細資訊,請參閱 Amazon CloudWatch Dashboard 文件

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

參數存放區參考

參數是存放在 中的任何資料片段Parameter Store,例如文字區塊、名稱清單、AMIID、商家 ID 或其他組態值。您可以在指令碼、命令和 SSM 文件中集中參考此資料。

當您參考參數時,您可以使用下列慣例指定參數名稱。

{{ssm:parameter-name}}

注意

不能在其他參數的值中參考或巢套參數。參數值中不能包含 {{}}{{ssm:parameter-name}}

Parameter Store支援三種參數:StringStringListSecureString

除了一個例外狀況,當您建立或更新參數時,將參數值輸入為純文字,並且 Parameter Store 不對輸入的文字執行驗證。但是,對於 String 參數,您可以將資料類型指定為 aws:ec2:image,而 Parameter Store 便會驗證您輸入的數值是否為 Amazon EC2 AMI 的正確格式;例如:ami-12345abcdeEXAMPLE

參數類型:String

依預設,String 參數的值由您輸入的任何文字區塊組成。例如:

  • abc123

  • Example Corp

  • <img src="images/bannerImage1.png"/>

參數類型:StringList

StringList 參數的值包含以逗號分隔的值清單,如下列範例所示。

Monday,Wednesday,Friday

CSV,TSV,CLF,ELF,JSON

參數類型:SecureString

SecureString 用於需要加密的組態值,例如服務端點和帳戶識別符。對於資料庫登入資料、API 金鑰或字符等秘密,我們建議提供專門建置的安全控制 AWS Secrets Manager,包括自動輪換和跨區域複寫。

只有 參數值會加密。參數名稱、描述和其他中繼資料不會加密。

Parameter Store 使用 AWS KMS 金鑰加密和解密SecureString參數值。您可以使用 AWS 受管金鑰 的預設值Parameter Store或客戶受管金鑰。當您需要限制哪些委託人可以解密特定參數時,請使用客戶受管金鑰。如需詳細資訊,請參閱使用 AWS KMS 金鑰加密和解密參數

重要

記下以下重要資訊。

  • 如果您管理需要自動輪換、跨帳戶存取或精細稽核記錄的登入資料,建議您使用 AWS Secrets Manager。Secrets Manager 專為管理秘密而打造,例如資料庫登入資料、API 金鑰和支援的第三方軟體提供的秘密。如需詳細資訊,請參閱什麼是 AWS Secrets Manager? AWS Secrets Manager 《 使用者指南》中的 。

  • 請勿在 StringStringList 參數中存放敏感資料。對於所有必須保持加密的敏感資料,請僅使用 SecureString 參數類型。

  • 僅加密 SecureString 參數的。參數名稱、說明和其他屬性不會加密。

您可以搭配其他 使用SecureString參數 AWS 服務。下列 Lambda 函數會從 /myapp/dev/vendor/merchant-id 參數擷取加密的商家 ID。函數使用 值,而不將其寫入函數日誌或在回應中傳回。

import json import boto3 ssm = boto3.client("ssm", region_name="us-east-1") def lambda_handler(event, context): response = ssm.get_parameter( Name="/myapp/dev/vendor/merchant-id", WithDecryption=True ) merchant_id = response["Parameter"]["Value"] # Use merchant_id when communicating with the vendor system. # Don't write the value to logs or include it in the response. return { "statusCode": 200, "body": json.dumps("Vendor configuration retrieved.") }
AWS KMS 加密和定價

當您建立SecureString參數時,Systems Manager 會使用 AWS KMS 來加密參數值。

重要

Parameter Store 只支援對稱加密 KMS 金鑰。您無法使用非對稱加密 KMS 金鑰來加密您的參數。如需判斷 KMS 金鑰為對稱或非對稱的說明,請參閱《AWS Key Management Service 開發人員指南》中的識別對稱鍵和非對稱金鑰

Parameter Store 建立SecureString參數無需支付 的費用,但 AWS KMS 使用 可能會產生費用。如需詳細資訊,請參閱 AWS Key Management Service 定價

如需 AWS 受管金鑰 和客戶受管金鑰的詳細資訊,請參閱《 AWS Key Management Service 開發人員指南》中的AWS Key Management Service 概念。如需 Parameter Store如何使用 的詳細資訊 AWS KMS,請參閱 AWS Systems Manager Parameter Store如何使用 AWS KMS

注意

若要檢視 AWS 受管金鑰 的預設值Parameter Store,請執行下列命令。

aws kms describe-key \ --region us-east-1 \ --key-id alias/aws/ssm

參數名稱限制條件

使用此主題中的資訊,在建立參數時協助您為參數名稱指定有效的值。

此資訊可補充 AWS Systems Manager API 參考PutParameter 主題的詳細資訊,它還提供有關 AllowedPattern (允許的模式)、Description (說明)、KeyId (金鑰 ID)、Overwrite (覆寫)、Type (類型) 以及 Value (值) 等值的資訊。

參數名稱的要求和條件約束包含下列項目:

  • 區分大小寫:參數名稱一律區分大小寫。

  • 空格:參數名稱不可包含空格。

  • 有效字元:參數名稱只能包含下列符號和字母:a-zA-Z0-9_.-

    此外,斜線字元 (/) 用於在參數名稱中描述階層。例如:/Dev/Production/East/Project-ABC/MyParameter

  • 有效的 AMI 格式:當您選擇 aws:ec2:image 做為 String 參數的資料類型時,您輸入的 ID 必須是有效的 AMI ID 格式 ami-12345abcdeEXAMPLE

  • 完整:當您在階層中建立或參考參數時,包含前置正斜線字元 (/)。如果您參考的參數屬於階層一部分,則指定整個階層路徑,包括初始斜線 (/)。

    • 完整參數名稱:MyParameter1/MyParameter2/Dev/Production/East/Project-ABC/MyParameter

    • 非完整參數名稱:MyParameter3/L1

  • 長度:您指定的參數名稱的長度上限為 1,011 個字元。1,011 個字元計數包括 ARN 中您指定的名稱前面的字元,例如 arn:aws:ssm:us-east-2:111122223333:parameter/ 中的 45 個字元。

  • 字首:參數名稱的字首不得為「aws」或「ssm」(無論大小寫)。例如,嘗試使用以下名稱建立參數將會失敗及例外狀況:

    • awsTestParameter

    • SSM-testparameter

    • /aws/testparam1

    注意

    當您在 SSM 文件、命令或指令碼中指定參數時,您在語法中包含 ssm。例如:{{ssm:parameter_name}} 及 {{ ssm:parameter-name }},例如 {{ssm:MyParameter}}{{ ssm:MyParameter }}.

  • 唯一性:參數名稱在一個 AWS 區域中必須是唯一的。例如,Systems Manager 會將以下視為不同的參數,如果它們存在於相同的區域:

    • /Test/TestParam1

    • /TestParam1

    以下範例也都是唯一的:

    • /Test/TestParam1/Logpath1

    • /Test/TestParam1

    不過,如果位在同一區域,則以下範例不是唯一的:

    • /TestParam1

    • TestParam1

  • 階層深度:如果您指定參數階層,階層深度最多為 15 個層級。您可以定義任何層級的參數。以下兩個範例在結構上都是有效的:

    • /Level-1/L2/L3/L4/L5/L6/L7/L8/L9/L10/L11/L12/L13/L14/parameter-name

    • parameter-name

    嘗試建立以下參數將會失敗並出現 HierarchyLevelLimitExceededException 例外狀況:

    • /Level-1/L2/L3/L4/L5/L6/L7/L8/L9/L10/L11/L12/L13/L14/L15/L16/parameter-name

重要

如果使用者擁有路徑的存取權限,則該使用者可存取該路徑的所有層級。例如,如果使用者擁有存取路徑 /a 的許可,則該使用者也可以存取 /a/b。即使使用者在 參數 AWS Identity and Access Management (IAM) 中明確遭到拒絕存取/a/b,他們仍然可以遞迴呼叫 的 GetParametersByPath API 操作/a並檢視 /a/b