JWB*_*JWB 7 amazon-web-services python-3.x aws-lambda aws-api-gateway
我正在遵循有关使用 Lambda 函数设置 AWS API Gateway 以创建 Restful API 的教程。我有以下代码:
import json
def lambda_handler(event, context):
# 1. Parse query string parameters
transactionId = event['queryStringParameters']['transactionid']
transactionType = event['queryStringParameters']['type']
transactionAmounts = event['queryStringParameters']['amount']
# 2. Construct the body of the response object
transactionResponse = {}
# returning values originally passed in then add separate field at the bottom
transactionResponse['transactionid'] = transactionId
transactionResponse['type'] = transactionType
transactionResponse['amount'] = transactionAmounts
transactionResponse['message'] = 'hello from lambda land'
# 3. Construct http response object
responseObject = {}
responseObject['StatusCode'] = 200
responseObject['headers'] = {}
responseObject['headers']['Content-Type'] = 'application/json'
responseObject['body'] = json.dumps(transactionResponse)
# 4. Return the response object
return responseObject
Run Code Online (Sandbox Code Playgroud)
当我将 API 网关链接到此函数并尝试使用查询参数调用它时,出现错误:
{
"message":"Internal server error"
}
Run Code Online (Sandbox Code Playgroud)
当我测试 lambda 函数时,它返回错误:
{
"errorMessage": "'transactionid'",
"errorType": "KeyError",
"stackTrace": [
" File \"/var/task/lambda_function.py\", line 5, in lambda_handler\n transactionId = event['queryStringParameters']['transactionid']\n"
]
Run Code Online (Sandbox Code Playgroud)
有人知道这里发生了什么/如何让它工作吗?
jar*_*mod 11
我建议添加一些诊断,如下所示:
import json
def lambda_handler(event, context):
print('event:', json.dumps(event))
print('queryStringParameters:', json.dumps(event['queryStringParameters']))
transactionId = event['queryStringParameters']['transactionid']
transactionType = event['queryStringParameters']['type']
transactionAmounts = event['queryStringParameters']['amount']
// remainder of code ...
Run Code Online (Sandbox Code Playgroud)
这样你就可以看到event和中的内容event['queryStringParameters']确保它与您期望看到的内容相符。这些将记录在 CloudWatch Logs 中(如果您使用控制台测试事件,则可以在 AWS Lambda 控制台中看到它们)。
就您而言,事实证明您的测试事件包括transactionId您的代码预期看到的时间transactionid(不同的拼写)。因此出现了 KeyError 异常。
| 归档时间: |
|
| 查看次数: |
32726 次 |
| 最近记录: |