【问题标题】:Lambda Python to Query SSM Parameter Store - get value is failingLambda Python 查询 SSM 参数存储 - 获取值失败
【发布时间】:2019-10-17 03:38:20
【问题描述】:

我无法获取参数的值。

我正在使用 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'"**

【问题讨论】:

  • “我正在使用 Python 中的 lambda。” 你在哪里使用 lambda?

标签: python-3.x ssm


【解决方案1】:

您正在使用 get_parameters(复数)方​​法,导致您的代码出现以下问题:

  1. 参数存储在“Parameters”键下,而不是“Parameter”键下
  2. 该值为list 而不是单个dict

为了获取值,使用 get_parameter(单数)方法或执行类似的操作来打印所请求参数的名称和值:

for parameter in parameters.get('Parameters', []):
    print(parameter['Name'], '=', parameter['Value'])

【讨论】:

  • 它与 get_parameter (singular) parameters.get('Parameter', {}).get('Value') 成功返回值。谢谢克里斯托弗
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-22
  • 1970-01-01
  • 2021-01-14
  • 1970-01-01
  • 1970-01-01
  • 2019-02-19
相关资源
最近更新 更多