AWS EventBridge putEvents不接受Detail JSON数组



我正在使用AWS SDKv2.796.0

根据putEvents的文档,Detail值需要是一个有效的JSON字符串。https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEventsRequestEntry.html

但是,它不接受JSON数组作为字符串。

const eventBridge = new AWS.EventBridge();
const entries = {
Entries: [
{
EventBusName: "busName",
Source: "api.user",
DetailType: "detailType",
Detail: JSON.stringify({ test: { test: ["test", "test2"] } }),
},
],
};
const rs = await eventBridge.putEvents(entries).promise();
console.log(rs);
// this passes
// {
// FailedEntryCount: 0,
// Entries: [ { EventId: 'a6176012-7310-2b84-a9b5-819956e2e3f9' } ]
// }
const entries2 = {
Entries: [
{
EventBusName: "busName",
Source: "api.user",
DetailType: "detailType",
Detail: JSON.stringify([{ test: "test" }]),
},
],
};
const rs2 = await eventBridge.putEvents(entries2).promise();
console.log(rs2);
// this fails
// {
//    FailedEntryCount: 1,
//    Entries: [
//    {
//      ErrorCode: 'MalformedDetail',
//      ErrorMessage: 'Detail is malformed.'
//     }
//    ]
//  }

这是意料之中的事吗?有没有一种方法可以在Detail中使用数组?

发生这种情况是因为您在entries2:中使用列表

Detail: JSON.stringify([{ test: "test" }]),

如果您只使用对象,它将起作用:

Detail: JSON.stringify({ test: "test" }),

最新更新