我在 Lambda 中使用以下代码将事件发送到 AWS 中的事件桥。
import { EventBridgeClient, PutEventsCommand } from '@aws-sdk/client-eventbridge';
eventBridge = new EventBridgeClient({
requestHandler: new NodeHttpHandler({
requestTimeout: 5000,
connectionTimeout: 2000,
}),
maxAttempts: 3,
});
await eventBridge.send(new PutEventsCommand(...));
事件桥有许多监听此事件的目标。我的问题是
eventBridge.send
是异步还是同步请求。我发现我的 lambda 的持续时间非常长,当查看 xray 时,它向我显示了从事件桥监听此事件的所有下游 lambda。看起来 eventBridge.send
会等待所有目标完成事件处理。这是真的吗?如何在不等待目标的情况下将事件放入事件桥?
当 EventBridge 收到事件时,PutEvents 调用将完成。向目标的交付是异步的。如果您使用 X 射线检测您的 Lambda 函数,它会将跟踪 ID 传递给 EventBridge,然后 EventBridge 将传播到将显示在您的跟踪中的目标。因此,x 射线跟踪将显示完整的异步链,该链将比启动函数的执行时间更长。