rob*_*beb 3 ubuntu go aws-lambda aws-sam-cli aws-sam
在本地运行 aws sam 应用程序时返回“内部服务器错误”。
我使用以下命令创建了 aws sam hello-world 示例:
sam init --runtime go1.x --name robertsamlocallyhelloworld
Run Code Online (Sandbox Code Playgroud)
然后我使用以下命令在本地运行应用程序:
sam local start-api
Run Code Online (Sandbox Code Playgroud)
然后:
curl 127.0.0.1:3000/hello
Run Code Online (Sandbox Code Playgroud)
图像下载已开始,然后在一段时间后停止。
/hello
端点返回:502 "Internal server error"
我正在使用:
Sam Cli:1.15.0
Docker: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>
Run Code Online (Sandbox Code Playgroud)
小智 5
错误消息明确指出:
Invalid API Gateway Response Keys
Run Code Online (Sandbox Code Playgroud)
我遇到了类似的错误,其中收到响应 status_code 的错误:
Invalid lambda response received: Invalid API Gateway Response Keys: {'status_code'} in {'status_code': 200, 'body': '"Success!!"'}
Run Code Online (Sandbox Code Playgroud)
显然,SAM 尝试模拟 API 网关,而 status_code 不是 API 网关在响应中期望的键之一。因此我将其更改为键status_code
从statusCode
return {
'statusCode': 200,
'body': json.dumps("Success!!")
}
Run Code Online (Sandbox Code Playgroud)
而且,效果很好。
我建议您查看 API Gateway 响应键并尝试将您的响应映射到该键。
归档时间: |
|
查看次数: |
9254 次 |
最近记录: |