从 eventbridge api 目的地调用 AWS Lambda 函数 URL

Invoke AWS Lambda Function URL from eventbridge api destination

我正在利用 Eventbridge API 目标来调用我的 lambda 函数 url 并将其节流到我想要的速率。这在 lambda 函数的 invoke-url 身份验证类型设置为 None 时有效。当我将函数 Url 身份验证类型设置为 AWS_IAM 并创建基于资源的调用函数 url 策略时,它不起作用。

我试过将政策的主体设置为

  1. 账户根
  2. eventbridge 角色 arn
  3. eventBridgeApiDestinations 服务角色 arn (arn:aws:iam::xxxxxxxxx:role/aws-service-role/apidestinations.events.amazonaws.com/AWSServiceRoleForAmazonEventBridgeApiDestinations)

None 以上作品。不确定我在这里做错了什么,或者是否有可能这样做。

政策声明详情

Statement ID
invoke-from-event-bridge-rule
Principal
arn:aws:iam::xxxxxxx:role/< my eventBridge role >
Effect
Allow
Action
lambda:InvokeFunctionUrl
Conditions
{
 "StringEquals": {
  "lambda:FunctionUrlAuthType": "AWS_IAM"
 }
}

来自the documentation

Amazon EventBridge API destinations are HTTP endpoints that you can invoke as the target of a rule, similar to how you invoke an AWS service or resource as a target.

当您让 EventBridge 以这种方式调用您的 Lambda 时,EventBridge 不知道它正在调用 Lambda 函数。它甚至不知道它正在调用 AWS 服务。它对待它的方式与对待 AWS 外部的 third-party“webhook”一样。它不会使用 AWS IAM 凭证签署 HTTP 请求。

我建议使用来自 EventBridge 的标准 AWS Lambda 调用,而不是 HTTP 端点调用。