7

我想在 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
4

3 回答 3

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']
于 2019-09-05T20:24:06.880 回答
0
于 2019-09-04T16:13:18.227 回答
0

您可以使用这个具有开箱即用错误处理功能的库: AWSstanding

from awstanding.parameter_store import load_parameters

LOOKUP_DICT = {
  '/aws/service/ami-windows-latest/Windows_Server-2019-English-Full-Base': 'CONVENIENT_NAME'
}

load_parameters(LOOKUP_DICT)

os.environ.get('CONVENIENT_NAME')

这里的优点是您可以以最小的开销轻松加载大量参数。

于 2021-10-06T20:34:06.677 回答