使用 Parameter StoreAWS Lambda 函數中的參數 - AWS Systems Manager

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

使用 Parameter StoreAWS Lambda 函數中的參數

Parameter Store是 的功能,為組態資料管理和秘密管理 AWS Systems Manager提供安全的階層式儲存。您可以儲存密碼、資料庫字串、Amazon Machine Image (AMI) IDs、 和 授權碼作為參數值。

若要從 使用參數 Parameter Store 在 AWS Lambda 函數中,不使用 SDK,您可以使用 AWS 參數和秘密 Lambda 延伸模組。此延伸會擷取參數值並對其進行快取以供今後使用。使用 Lambda 擴充功能可以透過減少 的API呼叫數量來降低成本 Parameter Store。 使用擴充功能也可以改善延遲,因為擷取快取的參數比從中擷取更快 Parameter Store.

Lambda 延伸是增強 Lambda 函數功能的隨附程序。延伸就像是與 Lambda 叫用平行執行的用戶端。此平行用戶端可在其生命週期中的任何時間點與您的功能連接。如需 Lambda 延伸模組的詳細資訊,請參閱 AWS Lambda 開發人員指南 中的 Lambda 延伸API模組。

AWS 參數和秘密 Lambda 延伸模組適用於兩者 Parameter Store 和 AWS Secrets Manager。若要了解如何將 Lambda 延伸模組與 Secrets Manager 的秘密搭配使用,請參閱 AWS Secrets Manager 使用者指南 中的在 AWS Lambda 函數中使用 AWS Secrets Manager 秘密

相關資訊

使用 AWS Parameter and Secrets Lambda 延伸模組快取參數和秘密 (AWS Compute Blog)

延伸運作方式

若要在不含 Lambda 擴充功能的 Lambda 函數中使用參數,您必須將 Lambda 函數設定為透過與 GetParameterAPI的動作整合來接收組態更新 Parameter Store.

當您使用 AWS Parameters and Secrets Lambda Extension 時,該延伸模組會從 擷取參數值 Parameter Store 並將其儲存在本機快取中。然後,快取值會用於進一步叫用,直至其過期。快取的值在傳遞其 time-to-live () 後過期TTL。您可以使用SSM_PARAMETER_STORE_TTL環境變數 來設定TTL值,如本主題稍後所述。

如果設定的快取TTL尚未過期,則會使用快取的參數值。如果時間過期,快取的值會失效,並從中擷取參數值 Parameter Store.

此外,系統會偵測經常使用的參數值,並將其保留在快取中,同時清除已過期或未使用的參數值。

實作詳細資訊

使用下列詳細資訊來協助您設定 AWS 參數和秘密 Lambda 延伸模組。

身分驗證

若要授權和驗證 Parameter Store 請求,延伸模組會使用與用來執行 Lambda 函數本身相同的憑證。因此,用於執行函數的 AWS Identity and Access Management (IAM) 角色必須具有下列許可,才能與 互動 Parameter Store:

  • ssm:GetParameter – 從 擷取參數所需的 Parameter Store

  • kms:Decrypt – 如果您要從 擷取SecureString參數,則需要 Parameter Store

如需詳細資訊,請參閱《AWS Lambda 開發人員指南》中的 AWS Lambda 執行角色

執行個體化

Lambda 會將與函數所要求並行層級相符的另外執行個體具現化。每個執行個體都彼此隔離,並維護自己組態資料的本機快取。如需有關 Lambda 執行個體的詳細資訊,請參閱《AWS Lambda 開發人員指南》中的設定預留並行一節。

無SDK相依性

AWS 參數和秘密 Lambda 擴充功能的運作與任何 AWS SDK語言程式庫無關。不需要向 AWS SDK提出GET請求 Parameter Store.

Localhost port

在GET請求localhost中使用 。延伸模組向 發出請求 localhost 連接埠 2773。您無需指定外部或內部端點即可使用延伸。您可以設定環境變數 PARAMETERS_SECRETS_EXTENSION_HTTP_PORT 來設定連接埠。

例如,在 Python 中,您的 GETURL看起來可能會類似下列範例。

parameter_url = ('http://localhost:' + port + '/systemsmanager/parameters/get/?name=' + ssm_parameter_path)
TTL 過期前參數值的變更

延伸模組不會偵測到參數值的變更,也不會在 TTL過期之前執行自動重新整理。如果您變更參數值,則使用快取參數值的操作可能會失敗,直至下次重新整理快取為止。如果您預期參數值經常變更,建議您設定較短TTL的值。

標頭要求

若要從延伸快取擷取參數,GET請求的標頭必須包含X-Aws-Parameters-Secrets-Token參考。將字符設定為 AWS_SESSION_TOKEN,這會由 Lambda 針對所有運行中的函數提供。使用此標頭表示呼叫者位於 Lambda 環境中。

範例

下列 Python 範例示範了擷取快取參數值的基本請求。

import urllib.request import os import json aws_session_token = os.environ.get('AWS_SESSION_TOKEN') def lambda_handler(event, context): # Retrieve /my/parameter from Parameter Store using extension cache req = urllib.request.Request('http://localhost:2773/systemsmanager/parameters/get?name=%2Fmy%2Fparameter') req.add_header('X-Aws-Parameters-Secrets-Token', aws_session_token) config = urllib.request.urlopen(req).read() return json.loads(config)
ARM 支援

延伸模組不支援ARM架構, AWS 區域 其中 x86_64 以及 x86 支援 架構。

如需延伸模組 的完整清單ARNs,請參閱 AWS 參數和秘密 Lambda 延伸模組 ARNs

日誌

Lambda 使用 Amazon CloudWatch Logs 記錄有關延伸項目的執行資訊以及 函數。根據預設,延伸模組會將最少量的資訊記錄到 CloudWatch。若要記錄更多詳細資訊,請將環境變數 PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL 設定為 DEBUG

將延伸新增至 Lambda 函數

若要使用 AWS Parameters and Secrets Lambda 延伸模組,您可以將延伸模組作為層新增至 Lambda 函數。

使用以下方法之一將延伸新增至您的函數。

AWS Management Console (新增圖層選項)
  1. 在 開啟 AWS Lambda 主控台https://console.aws.amazon.com/lambda/

  2. 選擇函數。在 Layers (圖層) 區域中,選擇 Add a layer (新增圖層)。

  3. 選擇圖層區域中,選擇 AWS 圖層選項。

  4. 針對 AWS 圖層,選擇 AWS-Parameters-and-Secrets-Lambda-Extension,並選擇版本,然後選擇新增

AWS Management Console (指定ARN選項)
  1. 在 開啟 AWS Lambda 主控台https://console.aws.amazon.com/lambda/

  2. 選擇函數。在 Layers (圖層) 區域中,選擇 Add a layer (新增圖層)。

  3. 選擇圖層區域中,選擇指定ARN選項。

  4. 對於指定 ARN,輸入 AWS 區域 和 架構 ARN的延伸,然後選擇新增

AWS Command Line Interface

在 AWS CLI中執行以下命令。取代每個 example resource placeholder 使用您自己的資訊。

aws lambda update-function-configuration \ --function-name function-name \ --layers layer-ARN

相關資訊

搭配使用圖層和 Lambda 函數

設定延伸 (.zip 檔案封存)

AWS 參數和秘密 Lambda 延伸環境變數

您可以變更下列環境變數來設定延伸。若要查看目前的設定,請將 PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL 設定為 DEBUG。如需詳細資訊,請參閱 AWS Lambda 開發人員指南 中的使用 AWS Lambda 環境變數

注意

AWS Lambda 在 Amazon CloudWatch Logs 中記錄 Lambda 延伸模組和 Lambda 函數的操作詳細資訊。

環境變數 詳細資訊 必要 有效值 預設值

SSM_PARAMETER_STORE_TIMEOUT_MILLIS

請求的逾時,以毫秒為單位 Parameter Store.

0 (零) 值表示沒有逾時。

所有整數 0 (零)

SECRETS_MANAGER_TIMEOUT_MILLIS

對 Secrets Manager 的請求逾時 (以毫秒為單位)。

0 (零) 值表示沒有逾時。

所有整數

0 (零)

SSM_PARAMETER_STORE_TTL

快取中參數失效之前的最大有效期限 (以秒為單位)。0 (零) 值表示應略過快取。如果 PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE 的值為 0 (零),則會忽略此變數。

0 (零) 至 300 秒 (五分鐘) 300 秒 (五分鐘)

SECRETS_MANAGER_TTL

快取中機密失效之前的最大有效期限 (以秒為單位)。0 (零) 值表示略過快取。如果 PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE 的值為 0 (零),則會忽略此變數。

0 (零) 至 300 秒 (五分鐘) 300 秒 (5 分鐘)
PARAMETERS_SECRETS_EXTENSION_CACHE_ENABLED

確定是否啟用此延伸的快取。有效值:TRUE | FALSE

TRUE | FALSE TRUE
PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE

在項目數方面的快取大小上限。0 (零) 值表示略過快取。如果兩個快取TTL值都是 0 (零),則會忽略此變數。

0 (零) 至 1000

1000

PARAMETERS_SECRETS_EXTENSION_HTTP_PORT 本機HTTP伺服器的連接埠。 1 - 65535

2773

PARAMETERS_SECRETS_EXTENSION_MAX_CONNECTIONS

擴充功能用來向 發出請求之HTTP用戶端的連線數目上限 Parameter Store 或 Secrets Manager。這是 Secrets Manager 用戶端和 連線數目的每個用戶端組態 Parameter Store 用戶端對後端服務進行 。

最少 1 個;沒有上限。

3

PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL

延伸日誌中報告的詳細資訊層級。

我們建議您在設定和測試延伸時,使用 DEBUG 了解快取組態的大多數詳細資訊。

Lambda 操作的日誌會自動推送至相關聯的 CloudWatch 日誌群組。

DEBUG | WARN | ERROR | NONE | INFO

INFO

使用 的範例命令 AWS Systems Manager Parameter Store 和 AWS Secrets Manager 延伸模組

本節中的範例示範搭配 使用API的動作 AWS Systems Manager Parameter Store 和 AWS Secrets Manager 擴充功能。

的範例命令 Parameter Store

Lambda 延伸模組會使用 GetParameterAPI動作的唯讀存取權。

若要呼叫此動作,請進行類似下列的HTTPGET呼叫。此命令格式可讓您存取標準參數層中的參數。

GET http://localhost:port/systemsmanager/parameters/get?name=parameter-name&version=version&label=label&withDecryption={true|false}

就本範例而言,parameter-name 代表不在階層中的參數,或名為 /Dev/Production/East/Project-ABC/MyParameter且屬於階層一部分的%2FDev%2FProduction%2FEast%2FProject-ABC%2FMyParameter參數的完整參數名稱MyParameter,例如 。

注意

使用 GET 呼叫時,參數值必須編碼為 HTTP,以保留特殊字元。例如, 不會將階層式路徑格式化為 /a/b/c,而是編碼可以解譯為 一部分的字元URL,例如 %2Fa%2Fb%2Fc

version 以及 label 是可用於 GetParameter動作的選取器。

GET http://localhost:port/systemsmanager/parameters/get/?name=MyParameter&version=5

若要呼叫階層中的參數,請進行類似下列的HTTPGET呼叫。

GET http://localhost:port/systemsmanager/parameters/get?name=%2Fa%2Fb%2F&label=release

若要呼叫公有 (全域) 參數,請進行類似下列的HTTPGET呼叫。

GET http://localhost:port/systemsmanager/parameters/get/?name=%2Faws%2Fservice%20list%2F…

使用 HTTPGET呼叫 Secrets Manager 秘密 Parameter Store 參考,進行類似下列的HTTPGET呼叫。

GET http://localhost:port/systemsmanager/parameters/get?name=%2Faws%2Freference%2Fsecretsmanager%2F…

若要使用 參數的 Amazon Resource Name (ARN) 進行呼叫,請進行類似下列的HTTPGET呼叫。

GET http://localhost:port/systemsmanager/parameters/get?name=arn:aws:ssm:us-east-1:123456789012:parameter/MyParameter

若要進行存取具有解密之SecureString參數的呼叫,請進行類似下列的HTTPGET呼叫。

GET http://localhost:port/systemsmanager/parameters/get?name=MyParameter&withDecryption=true

您可以省略 withDecryption 或明確地將其設定為 false,藉此來指定不解密的參數。您還可以指定版本或標籤,但不能同時指定兩者。如果您這樣做,只會URL使用 中問號 (?) 之後放置的第一個。

AWS 參數和秘密 Lambda 延伸模組 ARNs

下表ARNs為支援的架構和區域提供擴充功能。

ARNs 的擴充功能 x86_64 以及 x86 架構

最後更新日期:2024 年 9 月 19 日

區域 ARN

美國東部 (俄亥俄)

arn:aws:lambda:us-east-2:590474943231:layer:AWS-Parameters-and-Secrets-Lambda-Extension:14

美國東部 (維吉尼亞北部)

arn:aws:lambda:us-east-1:177933569100:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

美國西部 (加利佛尼亞北部)

arn:aws:lambda:us-west-1:997803712105:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

美國西部 (奧勒岡)

arn:aws:lambda:us-west-2:345057560386:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

非洲 (開普敦)

arn:aws:lambda:af-south-1:317013901791:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

Asia Pacific (Hong Kong)

arn:aws:lambda:ap-east-1:768336418462:layer:AWS-Parameters-and-Secrets-Lambda-Extension:14

亞太區域 (海德拉巴)

arn:aws:lambda:ap-south-2:070087711984:layer:AWS-Parameters-and-Secrets-Lambda-Extension:9

亞太區域 (雅加達)

arn:aws:lambda:ap-southeast-3:490737872127:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

亞太區域 (墨爾本)

arn:aws:lambda:ap-southeast-4:090732460067:layer:AWS-Parameters-and-Secrets-Lambda-Extension:2

亞太區域 (馬來西亞)

arn:aws:lambda:ap-southeast-5:090732460067:layer:AWS-Parameters-and-Secrets-Lambda-Extension:1

亞太區域 (孟買)

arn:aws:lambda:ap-south-1:176022468876:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

亞太區域 (大阪)

arn:aws:lambda:ap-northeast-3:576959938190:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

亞太區域 (首爾)

arn:aws:lambda:ap-northeast-2:738900069198:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

亞太區域 (新加坡)

arn:aws:lambda:ap-southeast-1:044395824272:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

亞太區域 (雪梨)

arn:aws:lambda:ap-southeast-2:665172237481:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

亞太區域 (東京)

arn:aws:lambda:ap-northeast-1:133490724326:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

加拿大 (中部)

arn:aws:lambda:ca-central-1:200266452380:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

加拿大西部 (卡加利) arn:aws:lambda:ca-west-1:243964427225:layer:AWS-Parameters-and-Secrets-Lambda-Extension:2
中國 (北京)

arn:aws-cn:lambda:cn-north-1:287114880934:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

中國 (寧夏)

arn:aws-cn:lambda:cn-northwest-1:287310001119:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

歐洲 (法蘭克福)

arn:aws:lambda:eu-central-1:187925254637:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

歐洲 (愛爾蘭)

arn:aws:lambda:eu-west-1:015030872274:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

歐洲 (倫敦)

arn:aws:lambda:eu-west-2:133256977650:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

歐洲 (米蘭)

arn:aws:lambda:eu-south-1:325218067255:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

Europe (Paris)

arn:aws:lambda:eu-west-3:780235371811:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

歐洲 (西班牙) 區域

arn:aws:lambda:eu-south-2:524103009944:layer:AWS-Parameters-and-Secrets-Lambda-Extension:9

歐洲 (斯德哥爾摩)

arn:aws:lambda:eu-north-1:427196147048:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

以色列 (特拉維夫)

arn:aws:lambda:il-central-1:148806536434:layer:AWS-Parameters-and-Secrets-Lambda-Extension:2

歐洲 (蘇黎世) 區域

arn:aws:lambda:eu-central-2:772501565639:layer:AWS-Parameters-and-Secrets-Lambda-Extension:9

Middle East (Bahrain)

arn:aws:lambda:me-south-1:832021897121:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

中東 (UAE) arn:aws:lambda:me-central-1:858974508948:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

南美洲 (聖保羅)

arn:aws:lambda:sa-east-1:933737806257:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

AWS GovCloud (美國東部)

arn:aws-us-gov:lambda:us-gov-east-1:129776340158:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

AWS GovCloud (美國西部)

arn:aws-us-gov:lambda:us-gov-west-1:127562683043:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12

ARNs 的擴充功能 ARM64 以及 Mac with Apple silicon 架構

最後更新日期:2024 年 9 月 19 日

區域 ARN

美國東部 (俄亥俄)

arn:aws:lambda:us-east-2:590474943231:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:14

美國東部 (維吉尼亞北部)

arn:aws:lambda:us-east-1:177933569100:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:12

美國西部 (加利佛尼亞北部) 區域

arn:aws:lambda:us-west-1:997803712105:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:9

美國西部 (奧勒岡)

arn:aws:lambda:us-west-2:345057560386:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:12

非洲 (開普敦) 區域

arn:aws:lambda:af-south-1:317013901791:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:9

亞太區域 (香港) 區域

arn:aws:lambda:ap-east-1:768336418462:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:11

亞太區域 (海德拉巴)

arn:aws:lambda:ap-south-2:070087711984:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arn64:1

亞太區域 (雅加達)

arn:aws:lambda:ap-southeast-3:490737872127:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:9

亞太區域 (墨爾本)

arn:aws:lambda:ap-southeast-4:090732460067:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:1

亞太區域 (馬來西亞)

arn:aws:lambda:ap-southeast-5:090732460067:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:1

亞太區域 (孟買)

arn:aws:lambda:ap-south-1:176022468876:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:12

亞太區域 (大阪)

arn:aws:lambda:ap-northeast-3:576959938190:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:9

亞太 (首爾) 區域

arn:aws:lambda:ap-northeast-2:738900069198:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:9

亞太區域 (新加坡)

arn:aws:lambda:ap-southeast-1:044395824272:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:12

亞太區域 (雪梨)

arn:aws:lambda:ap-southeast-2:665172237481:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:12

亞太區域 (東京)

arn:aws:lambda:ap-northeast-1:133490724326:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:12

加拿大 (中部) 區域

arn:aws:lambda:ca-central-1:200266452380:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:9

加拿大西部 (卡加利) arn:aws:lambda:ca-west-1:243964427225:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:1
中國 (北京)

arn:aws-cn:lambda:cn-north-1:287114880934:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:1

中國 (寧夏)

arn:aws-cn:lambda:cn-northwest-1:287310001119:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:1

歐洲 (法蘭克福)

arn:aws:lambda:eu-central-1:187925254637:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:12

歐洲 (愛爾蘭)

arn:aws:lambda:eu-west-1:015030872274:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:12

歐洲 (倫敦)

arn:aws:lambda:eu-west-2:133256977650:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:12

Europe (Milan) Region

arn:aws:lambda:eu-south-1:325218067255:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:9

歐洲 (巴黎) 區域

arn:aws:lambda:eu-west-3:780235371811:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:9

歐洲 (西班牙) 區域

arn:aws:lambda:eu-south-2:524103009944:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:1

歐洲 (斯德哥爾摩) 區域

arn:aws:lambda:eu-north-1:427196147048:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:9

以色列 (特拉維夫)

arn:aws:lambda:il-central-1:148806536434:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:1

歐洲 (蘇黎世) 區域

arn:aws:lambda:eu-central-2:772501565639:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm:1

Middle East (Bahrain) Region

arn:aws:lambda:me-south-1:832021897121:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:9

中東 (UAE) arn:aws:lambda:me-central-1:858974508948:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm:1

南美洲 (聖保羅) 區域

arn:aws:lambda:sa-east-1:933737806257:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:9

AWS GovCloud (美國東部)

arn:aws-us-gov:lambda:us-gov-east-1:129776340158:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:1

AWS GovCloud (美國西部)

arn:aws-us-gov:lambda:us-gov-west-1:127562683043:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:1