これは単純なものでなければならない。PythonのAWS関数がLambdaを介してELBデータを返さない - コンソールで動作する
私は、次の基本的なPythonスクリプトを持っている:私は、コマンドライン上のPythonスクリプトを経由して、これを実行すると
import boto3
elb = boto3.client('elb')
print(elb.describe_load_balancers())
それは、すべてのロードバランサのためのすべての情報を返す、完璧に動作します。
CLIコマンドは、コマンドラインからも完璧に動作します:
aws elb describe-load-balancers
をしかし、私はそれが失敗したAWSのラムダ関数にスクリプトを追加するとき。 このスクリプトは、AWSのラムダにどのように見えるかです:すべてのロードバランサのデータを返す他の人のように動作するはず
import boto3
def lambda_handler(event, context):
elb = boto3.client('elb')
return elb.describe_load_balancers()
は、しかし、それはこのエラーを返します。
{
"stackTrace": [
[
"/usr/lib64/python2.7/json/__init__.py",
250,
"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": "datetime.datetime(2013, 7, 26, 15, 35, 57, 690000, tzinfo=tzlocal()) is not JSON serializable"
}
私は私の髪を引っ張ってきましたこれまでこれで一日中アウトして何が間違っているのかは分からないので、どんな助けもありがたいです。私は、あなたが上記のコマンドに気づくかもしれ通り
import boto3
def lambda_handler(event, context):
elb = boto3.client('elb')
return elb.describe_tags(LoadBalancerNames=[event['loadBalancer']])
は、私が代わりにそれらのすべてのロードバランサをspecifedています
は、余分な注意点として、私はうまくAWSラムダで働いて、この機能を取得することができました他の機能でもこれを試しましたが運がありません。
戻り値をJSONにシリアル化できないようです。 LambdaのようにJSONに最終的な応答を変換していないので、ローカルで正常に動作します。レスポンスをJSON(それはdatetime値で失敗しているように見える)としてシリアル化できるものに変換するコードを追加する必要があります。 –