微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS 事件驱动方法 - Cloud Watch 与 S3 事件通知

如何解决AWS 事件驱动方法 - Cloud Watch 与 S3 事件通知

我正在构建一个事件驱动的系统,它会在新文件登陆 S3 时立即启动。 我正在评估实现这一目标的不同方法,使用 Cloud Watch Rule + API Trail 是一种选择。 这是 Cloud Watch 事件模式,因为它是:

    {
  "source": [
    "aws.s3"
  ],"detail-type": [
    "AWS API Call via CloudTrail"
  ],"detail": {
    "eventSource": [
      "s3.amazonaws.com"
    ],"eventName": [
      "PutObject"
    ],"requestParameters": {
      "bucketName": [
        "mysupertest88"
      ]
    }
  }
}

像这样,它为每个登陆到存储桶的文件触发规则,但尝试按键和通配符过滤不起作用:

"requestParameters": {
      "bucketName": [
        "mysupertest88"
      ],"key": ["myprefix/mysecondprefix/*"]
    }

它只在我指定一个没有通配符的匹配项时才有效,我认为是因为符号“*”是 S3 对象中的有效字符。 另一种选择是直接在跟踪级别进行过滤:

API Trail

但我不认为这是一个不错的选择,因为 API Trail 通常不受开发人员的控制。 另一种替代方法是使用内容过滤:(不错的新功能,但您必须通过 EventBridge 创建规则)

    {
  "source": [
    "aws.s3"
  ],"requestParameters": {
      "bucketName": [
        "mysupertest88"
      ],"key": [
        {
          "prefix": "a/c"
        }
      ]
    }
  }
}

上次 S3 事件 notification 是实现此目的的旧方法吗?你对此有何经验?有没有没有经验不容易掌握的利弊?

解决方法

由于您的目标是“在新文件到达 S3 后立即”开始操作,因此 CT 可能无法满足您的要求。这是因为传送 API 事件可能需要 15 分钟。来自 AWS faq

通常,CloudTrail 会在 API 调用的 15 分钟内提供一个事件。

相比之下,S3 事件应该更快。来自 AWS docs

Amazon S3 事件通知设计为至少传送一次。通常,事件通知会在 秒内发送,但有时可能需要一分钟或更长时间

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。