SSMパラメータストアから複数のパラメータを一括で取得したい!というときにはget_parameters
やget_parameters_by_path
を使うといい感じに取れる。
ただ、これ知らなかったが一度に10件までしか取得できないようで、それ以降取得するには返却されるトークンを使ってリトライしないといけないらしい。
SSMパラメータストアの/HOGE/
以下のパスに11件のパラメータを作っておきlambda(python3.8)で実験。
lambda
import json
import boto3
ssm = boto3.client("ssm")
def lambda_handler(event, context):
params = dict()
responseSSM = ssm.get_parameters_by_path(
Path = "/HOGE",
WithDecryption = False
)
for param in responseSSM["Parameters"]:
params[ param["Name"] ] = param["Value"]
while True:
if not "NextToken" in responseSSM:
break
responseSSM = ssm.get_parameters_by_path(
NextToken = responseSSM["NextToken"],
Path = "/HOGE",
WithDecryption = False
)
for param in responseSSM["Parameters"]:
params[ param["Name"] ] = param["Value"]
for prm in params:
print(prm)
# params["/HOGE/FUGA1"] 等そのままパラメータ名を指定してアクセスできる。
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
IAMロールにSSMFullAccess権限を与えておき実行。
出力は以下のようになっている。10件以上取得できることが確認できた。
順番は。。謎。
log
/HOGE/FUGA1
/HOGE/FUGA10
/HOGE/FUGA11
/HOGE/FUGA2
/HOGE/FUGA4
/HOGE/FUGA5
/HOGE/FUGA6
/HOGE/FUGA7
/HOGE/FUGA8
/HOGE/FUGA9
/HOGE/FUGA3