python-3.x - Lambda Python 查询 SSM 参数存储 - 获取值失败
问题描述
我无法获得参数的值。
我正在使用 Python 中的lambda。
ssm =boto3.client('ssm')
def eslam(event, context):
parameters = ssm.get_parameters(
Names=[
'/dev/es/ad-es-to-s3',
],
WithDecryption=False
)
x = parameters.values()
print(x)
'''
This print: dict_values([[{'Name': '/dev/es/ad-es-to-s3', 'Type': 'String', **'Value': "'k1':'valor1', 'k2':'valor2', 'k3':'valor3'"**, 'Version': 1, 'LastModifiedDate': datetime.datetime(2019, 10, 16, 16, 50, 38, 155000, tzinfo=tzlocal()), 'ARN': 'arn:aws:ssm:us-east-1:xxxxxxxxxx:parameter/dev/es/ad-es-to-s3'}], [], {'RequestId': 'xxxxxxxx1', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': 'xxxxxxxxxx', 'content-type': 'application/x-amz-json-1.1', 'content-length': '260', 'date': 'Wed, 16 Oct 2019 17:01:38 GMT'}, 'RetryAttempts': 0}])
'''
print(parameters)
'''
this print: {'Parameters': [{'Name': '/dev/es/ad-es-to-s3', 'Type': 'String', **'Value': "'k1':'valor1', 'k2':'valor2', 'k3':'valor3'"**, 'Version': 1, 'LastModifiedDate': datetime.datetime(2019, 10, 16, 16, 50, 38, 155000, tzinfo=tzlocal()), 'ARN': 'arn:aws:ssm:us-east-1:xxxxxxxxxxx:parameter/dev/es/ad-es-to-s3'}], 'InvalidParameters': [], 'ResponseMetadata': {'RequestId': 'xxxxxxxxxx', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': 'xxxxxxxxx', 'content-type': 'application/x-amz-json-1.1', 'content-length': '260', 'date': 'Wed, 16 Oct 2019 17:01:38 GMT'}, 'RetryAttempts': 0}}
'''
print(parameters['Parameter']['Value'])
# this raise the error: "errorType": "KeyError"
return parameters.get('Parameter', {}).get('Name')
# this return a null value, **I want to get 'Value': "'k1':'valor1', 'k2':'valor2', 'k3':'valor3'"**
解决方案
您正在使用 get_parameters(复数)方法,导致代码出现以下问题:
- 参数存储在“参数”键下,而不是“参数”
- 值
list
不是一个单一的dict
为了获取该值,请使用 get_parameter (单数)方法或执行类似的操作来打印所请求参数的名称和值:
for parameter in parameters.get('Parameters', []):
print(parameter['Name'], '=', parameter['Value'])
推荐阅读
- gradle - 通过 Gradle 为 IntelliJ 插件添加源
- java - 即使明确提供了模块路径,Eclipse 也找不到模块
- javascript - 获取当前工作目录名称而不是 Node.js 中的路径
- javascript - 根据多个选择输入返回不同的内容
- php - PHP 警告:SimpleXMLElement::__construct(): Entity: line 2: parser error : AttValue: " or ' 预期在
- scheme - Scheme中的科学记数法
- html - 如何在标题下对齐按钮,并使按钮响应?
- conv-neural-network - 在卷积神经网络中选择滤波器
- ruby-on-rails - 在 rails 中,tinymce 的工具栏没有显示
- go - 将上下文从 gRPC 端点传递到 goroutine 收到上下文取消错误