私はラムダ関数を持っています。これはAPIに対する基本的なPython GET呼び出しです。ローカルでうまく動作しますが、Lambdaにアップロードすると(リクエストライブラリとともに)、API呼び出しからのJSON応答は返されません。 JSONオブジェクト全体を呼び出し元に返すだけです。ここで根本的に何か間違っていますか?Lambda Python関数からJSONを返すことはサポートされていないとの記事をいくつか見つけました。ここでAWSラムダのPython API呼び出しメソッドがJSONを返さない - シリアル化されていない?
はコードです:
import requests
import json
url = "http://url/api/projects/"
headers = {
'content-type': "application/json",
'x-octopus-apikey': "redacted",
'cache-control': "no-cache"
}
def lambda_handler(event, context):
response = requests.request("GET", url, headers=headers)
return response
私のパッケージは、(私はそれがこのかかわらを必要とは思わない)要求ライブラリとDIST、およびJSONライブラリが含まれています。返されるエラーメッセージは次のとおりです。私はこれを
{
"stackTrace": [
[
"/usr/lib64/python2.7/json/__init__.py",
251,
"dumps",
"sort_keys=sort_keys, **kw).encode(obj)"
],
[
"/usr/lib64/python2.7/json/encoder.py",
207,
"encode",
"chunks = self.iterencode(o, _one_shot=True)"
],
[
"/usr/lib64/python2.7/json/encoder.py",
270,
"iterencode",
"return _iterencode(o, 0)"
],
[
"/var/runtime/awslambda/bootstrap.py",
41,
"decimal_serializer",
"raise TypeError(repr(o) + \" is not JSON serializable\")"
]
],
"errorType": "TypeError",
"errorMessage": "<Response [200]> is not JSON serializable"
}