Lambda Python 查询 SSM 参数存储值

TIM*_*144 5 python python-3.x aws-lambda aws-ssm

我想在 AWS Lambda 中编写 Python 3.6 查询以获取有关 AWS SSM 参数存储的详细信息,但我得到了空响应。如果我通过 AWS CLI 查询,我会得到参数存储项的详细信息,包括我的最终目标 AMI ID。参数存储路径为:

/aws/service/ami-windows-latest/Windows_Server-2019-English-Core-Base-2019.07.12
Run Code Online (Sandbox Code Playgroud)

我的代码如下,任何有关为什么这不返回预期结果的见解将不胜感激。

import json
import boto3

def lambda_handler(event, context):
    client = boto3.client('ssm')
    response=client.get_parameters(Names=['/aws/service/ami-windows-latest/Windows_Server-2019-English-Full-Base']),
    #return "Success"
    print (response)
Run Code Online (Sandbox Code Playgroud)

我期待在运行以下 AWS CLI 命令时获得相同的输出。

aws ssm get-parameters --names /aws/service/ami-windows-latest/Windows_Server-2019-English-Full-Base --region us-east-1
Run Code Online (Sandbox Code Playgroud)

TIM*_*144 8

我在一位具有更多 Python 经验的同事的帮助下发现了这一点。代码如下。

import boto3

client = boto3.client('ssm')

def lambda_handler(event, context):
    parameter = client.get_parameter(Name='/aws/service/ami-windows-latest/Windows_Server-2019-English-Full-Base', WithDecryption=True)
    print(parameter)
    return parameter ['Parameter']['Value']
Run Code Online (Sandbox Code Playgroud)


ami*_*ttn 1

  • 值得检查您的 lambda 是否有足够的权限与 aws SSM 交互。只是为了进行初步检查,我建议使用策略授予完全访问权限policy/AmazonSSMFullAccess
  • Lambda IAM 角色应具有上述策略。
  • 文档aws boto3 文档