Hàm lambda AWS có "sự kiện" và "bối cảnh" như trong các tham số. "Sự kiện" là một đối tượng json.
Tôi cố gắng kết nối API (trình quản lý thông qua Cổng API AWS) với chức năng lambda của mình, gửi json của sự kiện dưới dạng nội dung của http POST. Điều này thất bại thảm hại, và tôi chỉ có một số dấu hiệu cho thấy có thể có một sự kiện trống được gửi đến hàm lambda.
Tôi nên gửi "sự kiện" thông qua API như thế nào?
Đây là mã của hàm lambda của tôi:
from __future__ import print_function
import boto3
import json
import time
print('Loading function')
def lambda_handler(event, context):
print("Received event: ")
print(type(event))
print(""+json.dumps(event, indent=2))
id = event['Id']
dynamo = boto3.resource('dynamodb').Table('Table1')
dynamo.put_item(
Item = {
'Button' : int(id),
'Time' : int(time.time()),
})
return {
'statusCode' : '400',
'body' : null,
'headers' : { 'Content-Type': 'application/json', },
}
Chạy thử nghiệm trên hàm lambda sẽ đưa ra nhật ký sau:
START RequestId: x Version: $LATEST
Received event:
<type 'dict'>
{
"Id": "1"
}
END RequestId: x
và câu trả lời
{
"body": null,
"headers": {
"Content-Type": "application/json"
},
"statusCode": "400"
}
nhưng chạy nó thông qua chức năng kiểm tra API Gateway mang lại
Tue May 16 15:54:27 UTC 2017 : Endpoint response body before transformations:
{"stackTrace": [["/var/task/lambda_function.py", 12, "lambda_handler",
"id = event['Id']"]], "errorType": "KeyError", "errorMessage": "'Id'"}
Tue May 16 15:54:27 UTC 2017 : Endpoint response headers:
{x-amzn-Remapped-Content-Length=0, x-amzn-RequestId=x,
Connection=keep-alive, Content-Length=153,
X-Amz-Function-Error=Unhandled, Date=Tue, 16 May 2017 15:54:27 GMT,
X-Amzn-Trace-Id=root=x;sampled=0, Content-Type=application/json}
Tue May 16 15:54:27 UTC 2017 : Execution failed due to configuration
error: Malformed Lambda proxy response
Tue May 16 15:54:27 UTC 2017 : Method completed with status: 502