Lambda - {" message":"内部服务器错误"}

时间:2017-10-28 05:57:08

标签: aws-lambda

谜我这个!

为什么是lambda?

curl -X POST -H "Content-Type: application/json" -d '{"first_name":"ABCDE", "last_name": "john"}' https://8.execute-api.us-east-1.amazonaws.com/prod/HelloPython

{"message": "Internal server error"}

它适用于lambda测试!虽然我很新但仍然如何找到原因?我在云指标中所需要的只是500个错误。但我想知道原因。我正在做一个简单的你好世界。

import json
def respond(err, res=None):
    return {
        'statusCode': '400' if err else '200',
        'body': err.message if err else json.dumps(res),
        'headers': {
            'Content-Type': 'application/json',
        },
    }

def my_handler(event, context):


    message = 'Hello {} {}!'.format(event['first_name'], 
                                    event['last_name'])  
    res = {'message' : message }
    return respond(None, res)

更新 - 以下是日志:

'first_name': KeyError
Traceback (most recent call last):
File "/var/task/hello_python.py", line 68, in my_handler
message = 'Hello
{}
{}
!'.format(event['first_name'],
KeyError: 'first_name'

我很困惑。事件是什么类型的对象?如果我需要一个字符串,请使用json.loads(event)来获取一个dict对象吗?

1 个答案:

答案 0 :(得分:1)

我通常不喜欢回答我自己的问题,但作为lambda的新手,我希望这有助于某人。

1)事件数据如下所示:

test = json.loads(event['body'])  
message = "Dude %s %s" % (test['first_name'],  test['last_name'])

2)数据在体内,然后必须从json加载:

pounds, ounces = map(float, oz.split(':'))

卷曲现在有效