amazon-web-services - 使用来自不同 AWS 账户的 S3 事件触发 AWS Step Function 状态机
问题描述
好吧,标题说明了一切。我想要达到的目标:
- 让 Cloudwatch 事件规则检查来自 AWS 账户 X 的存储桶中的 PutObject 事件
- 当对象存储在 S3 存储桶中时,需要触发 AWS 账户 Y 中的状态机
但它不起作用。据我所知,存储桶是全球性的,而不是账户范围内的,因此这里的 AWS 文档https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-cloudwatch-events-s3.html我们应该只在请求参数中给出存储桶名称。
存储桶已经包含一个策略,可以完全访问 Step Function 状态机所在的帐户,因为我正在运行的作业包括从该存储桶获取数据,并且工作正常。只有触发器不起作用。
我的事件模式如下所示:
{
"source": [
"aws.s3"
],
"detail-type": [
"AWS API Call via CloudTrail"
],
"detail": {
"eventSource": [
"s3.amazonaws.com"
],
"eventName": [
"PutObject"
],
"requestParameters": {
"bucketName": [
"my-bucket-name"
]
}
}
}
我需要一些额外的配置吗?
新信息:
我忘记了一些事情,所以我按照本教程进行操作:https ://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEvents-CrossAccountEventDelivery.html#WritingRulesThatMatchEventsFromAnotherAccount
- 在账户 Y 中添加 Cloudwatch 事件总线以授予账户 X 权限
- 修改账户 Y 中的 Cloudwatch 事件规则模式以添加此
"account": ["account X number"]
- 在账户 X 中,我创建了一个具有相同模式(匹配另一个账户)但目标不同的 Cloudwatch 事件规则:另一个 AWS 账户中的事件总线。我把账户 Y 号放在那里。
但是由于某种原因,账户 Y 中的 step 函数没有被触发......
解决方案
推荐阅读
- sangria - 如何使用 Sangria 的 `@GraphQLField` 注释创建嵌套的 GraphQL 字段
- angular - Ionic 自定义现有的 UI 组件
- http2 - 阻止来自允许 URL 的脚本
- c# - Visual Studio 2017 详细发布
- loops - Lisp - 标志(班德拉)不起作用
- pdf - 如何恢复损坏的pdf
- signalr - 使用 Aspnetcore.signalr libray 从集线器外部获取 HubContext(不是来自控制器)
- c++ - 复杂的多重继承情况
- javascript - 如何在javascript中显示“未找到匹配项”
- docker - 当jenkins在docker容器中时如何在docker容器上运行构建