TypeScript调用AWS SDK v3 EventBridge时Name参数校验失败如何解决
问题核心原因
- 你调用了错误的API命令:
ActivateEventSourceCommand是专门用于激活AWS合作伙伴事件源的接口,它要求传入的Name参数必须是符合aws.partner(/[.-_A-Za-z0-9]+){2,}格式的合作伙伴事件源标识,你传入的自定义名称TestBus不满足格式要求,因此触发校验报错。 - 你的代码逻辑是要向EventBridge投递自定义事件,完全不需要调用这个接口,应该使用
PutEventsCommand完成事件投递。
修正后的代码示例
import { EventBridgeClient, PutEventsCommand } from "@aws-sdk/client-eventbridge"; const client = new EventBridgeClient({ region: process.env.AWS_REGION }); // 此处为发送的BODY内容 const dataToSend = { email_address: user_email, status: action, merge_fields: { FNAME: user_givenName, LNAME: user_familyName, }, interests: interestId, }; // PutEventsCommand 直接接收Entries数组作为参数 const params = { Entries: [ { EventBusName: "Subscriptions", // 这里填你实际的事件总线名称即可 Source: "custom.subscriptions", DetailType: "subscription", Detail: JSON.stringify(dataToSend), }, ], }; const command = new PutEventsCommand(params); try { const data = await client.send(command); // 处理返回数据 console.log("data>>", data); } catch (error) { // 错误处理 console.log("err>>", error); }
补充说明
如果你的需求是先创建自定义事件总线,应该调用CreateEventBusCommand,传入的Name参数支持自定义字符串,不需要满足合作伙伴事件源的格式规则。
内容的提问来源于stack exchange,提问作者neophytte
相关产品推荐
相关产品推荐

