Lambda Python 查询 SSM Parameter Store - 获取值失败
Lambda Python to Query SSM Parameter Store - get value is failing
我无法获取我的参数值。
我正在 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(复数)方法,导致您的代码出现以下问题:
- 参数存储在'Parameters'键下,而不是'Parameter'
- 值是一个
list
不是一个dict
为了获取值,请使用 get_parameter(单数)方法或执行类似这样的操作来打印出所请求参数的名称和值:
for parameter in parameters.get('Parameters', []):
print(parameter['Name'], '=', parameter['Value'])
我无法获取我的参数值。
我正在 Python.
中使用 lambdassm =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(复数)方法,导致您的代码出现以下问题:
- 参数存储在'Parameters'键下,而不是'Parameter'
- 值是一个
list
不是一个dict
为了获取值,请使用 get_parameter(单数)方法或执行类似这样的操作来打印出所请求参数的名称和值:
for parameter in parameters.get('Parameters', []):
print(parameter['Name'], '=', parameter['Value'])