use*_*392 5 amazon-web-services aws-lambda aws-api-gateway
我有一个 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。
似乎有一组有效的 {trigger, destination} 对,而 {API Gateway, SQS} 不是其中之一。能够从给定的触发器调用 lambda 不足以将事件传递到目的地。AWS 控制台不会强制执行这些配对或发出警告。
我参考了以下图表:https : //www.trek10.com/blog/lambda-destinations-what-we-learned-the-hard-way/
我向我的 lambda 添加了一个 S3 触发器,并且 S3 事件发布到目标 SQS 队列没有问题。
归档时间: |
|
查看次数: |
1567 次 |
最近记录: |