小编use*_*392的帖子

目标仅在通过 AWS CLI 调用 Lambda 时有效

我有一个 hello-world 测试 Lambda 配置了:

  • 触发器:API 网关
  • 目的地:亚马逊 SQS。一个等待成功,另一个等待失败。
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。

amazon-web-services aws-lambda aws-api-gateway

5
推荐指数
1
解决办法
1567
查看次数