我正在尝试创建一个EventBridge事件,当对象在我的桶的路径前缀中创建时触发。当我编写没有路径前缀的事件模式时,它可以工作。当我添加路径前缀时,我得到了一个失败。我正在使用官方文档的语法和其他SO问题似乎确认我在做什么,但解决方案不起作用。
我正在使用EventBridge来创建规则>2 .构建事件模式事件模式。
- 错误信息:
事件模式无效。理由:"name"必须是一个对象或数组,如下所示:[Source: (String)"{"source":[" amazon .s3"],"detail-type":[" object Created"],"detail";{" bucket";{" name";test-test- 20230318 "},";object";{";key"; [{"前缀"; "raw"}}}};;
- 成功模式:
{
"source": ["aws.s3"],
"detail-type": ["Object Created"],
"detail": {
"bucket": {
"name": ["test-test-20230118"]
},
"object": {
"key": [{
"prefix": "raw"
}]
}
}
}
- 没有前缀的成功模式:
{
"source": ["aws.s3"],
"detail-type": ["Object Created"],
"detail": {
"bucket": {
"name": ["test-test-20230118"]
}
}
}
如果您修改示例事件以匹配您的过滤的名称和前缀,那么您的模式将工作。我没有看到那个错误,所以不确定发生了什么,但我认为它与你测试模式的样本事件有关。从示例事件重新开始(我从事件类型->AWS事件,示例事件->对象创建并粘贴到"输入我自己的")和更新资源,桶->名称和细节->对象->键,这样你的模式将匹配它。
我猜"raw"是否在您的"test-test-20230118"目录中。桶。如果是这种情况,请使用"raw/"作为前缀。
{
"source": ["aws.s3"],
"detail-type": ["Object Created"],
"detail": {
"bucket": {
"name": ["test-test-20230118"]
},
"object": {
"key": [{
"prefix": "raw/"
}]
}
}
}