AWS CloudWatch Events Rule是否支持S3存储桶/密钥名称中的任何通配符

时间:2018-03-22 18:04:22

标签: amazon-s3 amazon-cloudwatch

我正在尝试创建一个事件规则,该规则由不同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-*"] }
  }
}

4 个答案:

答案 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-*"}]
    }
  }
}

希望有帮助。