我有一个 hello-world 测试 Lambda 配置了:
import json
def lambda_handler(event, context):
print("Received event: " + json.dumps(event))
return {
"statusCode": 200,
"body": 'success'
}
Run Code Online (Sandbox Code Playgroud)
当我通过 CLI 调用 Lambda 时,消息按预期进入成功队列:
aws lambda invoke --function-name event-destinations --invocation-type Event --payload '{}' response.json
Run Code Online (Sandbox Code Playgroud)
但是,当我通过 API 网关调用 Lambda 时,没有消息排入任一目标队列。我启用了 Lambda 代理集成。Cloudwatch 指标确认调用成功(调用计数增加,错误计数不增加)。以下从我的 Lambda 代码返回 200 和预期的响应正文:
curl 'https://REDACTED.execute-api.us-east-1.amazonaws.com/api_trigger' \
--header 'Content-Type: application/json' \
--data-raw '{}'
Run Code Online (Sandbox Code Playgroud)
同样,当我使用 Lambda 控制台中的“测试”按钮时,没有消息被排入任一目标队列。编辑:这是每个 https://www.trek10.com/blog/lambda-destinations-what-we-learned-the-hard-way 的预期行为
为什么这 3 次调用的目标行为会有所不同?对于此测试,我已将重试次数设置为 0。