Lambda事件无法触发EventBridge目标

0

【以下的问题经过翻译处理】 我正在使用Amazon Selling Partner API(SP-API)尝试设置类似于Pub/Sub的系统,以接收客户订单等通知。 SP-API中的Notifications API根据所使用的事件类型以2种不同的方式发送不同类型的通知。有些直接发送到EventBridge,有些则发送到SQS。https://developer-docs.amazon.com/sp-api/docs/notifications-api-v1-use-case-guide#section-notification-workflows

我已经正确设置了直接发送到EventBridge的通知,但是在处理SQS通知方面遇到了困难。我希望所有通知都发送到自己的端点。

对于SQS模型,我在SQS中接收通知,将其设置为Lambda函数的触发器(此部分有效)。此函数的目标设置为另一个EventBridge(这是不起作用的部分)。这给出的架构是: SQS => Lambda => EventBridge => 我的端点

为什么Lambda无法触发我的EventBridge目标以发送通知呢?

执行角色策略: Lambda 1. AWSLambdaBasicExecutionRole 2. AmazonSQSFullAccess 3. AmazonEventBridgeFullAccess 4. AWSLambda_FullAccess EventBridge 1. Amazon_EventBridge_Invoke_Api_Destination 2. AmazonEventBridgeFullAccess 3. AWSLambda_FullAccess

EventBridge事件模式: {"source": ["aws.lambda"]}

执行角色可信实体: EventBridge角色 "Service": ["events.amazonaws.com", "lambda.amazonaws.com", "sqs.amazonaws.com"] Lambda角色 "Service": ["lambda.amazonaws.com", "events.amazonaws.com", "sqs.amazonaws.com"]

Lambda代码:

exports.handler = function(event, context, callback) {
   console.log("Received event: ", event);
   context.callbackWaitForEmptyEventLoop = false;
   callback(null, event);
   return {
      statusCode: 200
   };
}
profile picture
专家
已提问 2 年前63 查看次数
1 回答
0

【以下的回答经过翻译处理】 如果您使用Lambda Destination来触发EventBridge,那么这不会起作用。原因是Lambda Destinations仅适用于异步调用。在SQS -> Lambda的情况下,它是个事件源映射调用,底层使用的是同步调用。

如果您需要向EventBridge发送事件,请直接从Lambda代码发送。

profile picture
专家
已回答 2 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则