问题描述
在本地运行 aws sam 应用程序时返回“内部服务器错误”。
我使用以下方法创建了 aws sam hello-world 示例:
sam init --runtime go1.x --name robertsamlocallyhelloworld
然后我使用以下方法在本地运行应用程序:
sam local start-api
然后:
curl 127.0.0.1:3000/hello
图像下载已开始,然后在一段时间后停止。/hello
端点返回:502 "Internal server error"
我正在使用:
山姆·克里:1.15.0
码头工人:20.10.0
输出:
Invoking hello-world (go1.x)<br>
Image was not found.<br>
Building image....................................<br>
Skip pulling image and use local one: amazon/aws-sam-cli-emulation-image-go1.x:rapid-1.15.0.<br>
Mounting /home/robert/projects/try_dir/try_sam_go_daemons/robertsamlocallyhelloworld/hello-world as /var/task:ro,delegated inside runtime container<br>
START RequestId: 159c8e80-649d-4c71-8b54-3221387af308 Version: $LATEST<br>
fork/exec /var/task/hello-world: no such file or directory: PathError<br>
null<br>
END RequestId: 159c8e80-649d-4c71-8b54-3221387af308<br>
REPORT RequestId: 159c8e80-649d-4c71-8b54-3221387af308 Init Duration: 0.38 ms Duration: 9.30 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 128 MB <br>
Lambda returned empty body!<br>
Invalid lambda response received: Invalid API Gateway Response Keys: {'errorMessage','errorType'} in {'errorMessage': 'fork/exec /var/task/hello-world: no such file or directory','errorType': 'PathError'}<br>
2021-01-11 23:55:41 127.0.0.1 - - [11/Jan/2021 23:55:41] "GET /hello HTTP/1.1" 502 <br>
2021-01-11 23:55:41 127.0.0.1 - - [11/Jan/2021 23:55:41] "GET /favicon.ico HTTP/1.1" 403 <br>
解决方法
错误信息明确指出:
Invalid API Gateway Response Keys
我遇到了类似的错误,我收到了响应 status_code 的错误:
Invalid lambda response received: Invalid API Gateway Response Keys: {'status_code'} in {'status_code': 200,'body': '"Success!!"'}
显然,SAM 试图模拟 API Gateway,而 status_code 不是 API Gateway 在响应中期望的键之一。因此我将其从 status_code
改为 statusCode
return {
'statusCode': 200,'body': json.dumps("Success!!")
}
而且,它运行良好。
我建议您查看 API Gateway 响应键并尝试将您的响应映射到该键。