我正在尝试创建一个事件规则,该规则由不同AWS账户中S3存储桶中文件的更改触发。详细说明为here
到目前为止,规则适用于确切的文件名,但我需要使用文件名前缀。在工作示例中,文件名是非工作示例中的精确字符串,文件名是通配符。 CloudWatch Events Rule JSON模式是否支持通配符?
工作配置:
{
"source": ["aws.s3"],
"account": ["1111111xxxxx"],
"detail": {
"eventSource": ["s3.amazonaws.com"],
"eventName": ["PutObject"],
"requestParameters": { "bucketName": ["mybucket"], "key": ["myfile-20180301.csv"] }
}
}
非工作配置:
{
"source": ["aws.s3"],
"account": ["1111111xxxxx"],
"detail": {
"eventSource": ["s3.amazonaws.com"],
"eventName": ["PutObject"],
"requestParameters": { "bucketName": ["mybucket"], "key": ["myfile-*"] }
}
}
答案 0 :(得分:8)
我使用Content-based filtering(于2020年2月发布)找到了一个很好的解决方案,例如 prefix 。
因此,在您的情况下,解决方案应为:
{
"source": ["aws.s3"],
"account": ["1111111xxxxx"],
"detail": {
"eventSource": ["s3.amazonaws.com"],
"eventName": ["PutObject"],
"requestParameters": {
"bucketName": ["mybucket"],
"key": [{ "prefix": "myfile-" }]
}
}
}
答案 1 :(得分:0)
一种解决方法是拥有一个单独的存储桶,在其中放置* .csv文件/删除* .csv文件并删除“ key”参数。 这样,将在该存储桶上的任何* .csv文件操作中触发Cloud Watch。 另一个我不知道如果密钥已经在云跟踪中设置的原因,为什么您会在云监视事件模式中看到该密钥。
答案 2 :(得分:0)
如果您登录events of interest to Cloudwatch via CloudTrail,则可以使用Cloudwatch指标过滤器with wildcard matching并在该过滤器上创建Cloudwatch事件。
答案 3 :(得分:0)
Marto提供的模板代码对我不起作用,但是该文档导致了一个解决方案:
{
"source": ["aws.s3"],
"account": ["1111111xxxxx"],
"detail": {
"eventSource": ["s3.amazonaws.com"],
"eventName": ["PutObject"],
"requestParameters": {
"bucketName": ["mybucket"],
"key": [{"prefix": "myfile-*"}]
}
}
}
希望有帮助。