Lambda Python查询SSM参数存储值

时间:2019-09-04 14:28:43

标签: 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

下面是我的代码,对于为什么不返回预期结果的任何见解,将不胜感激。

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)

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

aws ssm get-parameters --names /aws/service/ami-windows-latest/Windows_Server-2019-English-Full-Base --region us-east-1

2 个答案:

答案 0 :(得分:1)

我在具有更多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']

答案 1 :(得分:0)

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