Невозможно получить данные из botocore.response.StreamingBody, даже используя data.read (). Decode () - PullRequest
2 голосов
/ 25 июня 2019

Я пишу лямбда-функцию AWS, которая вызывает другую лямбда-функцию. Обе лямбда-функции в Python. Вызываемая функция возвращает JSON, который помещается в botocore.response.streamingbody. Я не могу преобразовать это обратно в JSON для доступа к обязательным полям.

Пробовал разные ссылки в том числе:

  p = r['Payload'].read()
    print p #Prints an empty string
    print(r['Payload'].read()) #Prints Just a string
    invoke_lambda(payload)

and r['Payload'].read().decode()
r['Payload'].read().decode("utf-8")

Пример вывода из вызываемой лямбда-функции (полученный от печати ответа перед возвратом):

{'statusCode': 200, 'headers': {'Access-Control-Allow-Origin': ''}, 'body1': [{'statusCode': 200, 'body': {' featureId ':' testFeature ',' version ':' 2.1 ',' active ': True},' headers ': {' Access-Control-Allow-Origin ':' '}}]}

Ответ, возвращаемый после вызова этой лямбды из вызываемой лямбда-функции:

{u'Payload ':, u'ExecutedVersion': '$ LATEST', 'ResponseMetadata': {'RetryAttempts': 0, 'HTTPStatusCode': 200, 'RequestId': '0f10c74d-ebd7-4a8a-8992- 6211a969ceb1 ',' HTTPHeaders ': {' x-amzn-requesttid ':' 0f10c74d-ebd7-4a8a-8992-6211a969ceb1 ',' content-length ':' 213 ',' x-amz-execute-version ':' $ ПОСЛЕДНИЕ ',' x-amzn-trace-id ':' root = 1-5d11c78f-f4d70afef2f04f3d061136fa; sampled = 0 ',' x-amzn-remapped-content-length ':' 0 ',' connection ':' keep- живы, 'дата': 'вт, 25 июня 2019 07:04:47 GMT', 'тип контента': 'application / json'}}, u'StatusCode ': 200}

...