如何解决跨账户 AWS 事件桥接
我正在尝试设置从账户 A 到账户 B 的跨账户事件桥,以触发账户 B 中的代码管道。 帐户 A - 我已设置 S3 ,AWS EVENT BUS 以在将对象添加到 s3 时将事件发送到帐户 B。 账户 B - 我已设置 AWS EVENT BUS 以接收来自账户 A 的事件,并将代码管道作为触发目标。
我在使用事件总线将事件从帐户 A 发送到帐户 B 时遇到问题,而且我想在帐户 B 中设置策略和权限以接收来自帐户 A 的事件并触发代码管道。
如何实现?
我正在按照脚本进行操作: https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEvents-CrossAccountEventDelivery.html
解决方法
要配置跨账户事件桥通信,需要完成以下工作。我正在提供示例事件和过滤器,您可以根据需要替换事件和过滤器。专注于解决帐户间连接问题。
要对帐户 B 执行的步骤:收款人帐户
- 创建一个名为 event-bus-b 的事件总线。放置基于资源的策略,如下所示。
{
"Version": "2012-10-17","Statement": [{
"Sid": "WebStoreCrossAccountPublish","Effect": "Allow","Principal": {
"AWS": "arn:aws:iam::<account-A>:root"
},"Action": "events:PutEvents","Resource": "arn:aws:events:<your-region>:<Account-B>:event-bus/event-bus-b"
}]
}
要对帐户 A 执行的步骤:发件人帐户
-
在账户 A 中创建一个事件总线 event-bus-a。
-
在账户 A 中创建一个规则 eb-rule-a,其中包含以下详细信息:
事件模式:
{
"detail-type": [
"uoe"
],"source": [
"somesource"
]
}
另外,使用测试事件测试模式。
测试事件:
{
"version": "0","id": "55fghj-89a9-a0b3-1ccb-79c25c7d6cd2","detail-type": "uoe","source": "somesource","account": "<ACCOUNT_ID>","time": "2020-04-24T13:53:21Z","region": "<YOUR_REGION>","resources": [],"detail": {
"userOrg" : "OrgName"
}
}
-
在下拉列表中选择事件总线 event-bus-a。
-
选择目标“不同账号或地区的事件总线”
-
将您创建的事件总线的 ARN 放入账户 B。
arn:aws:events:<your-region>:<Account-B>:event-bus/event-bus-b
- 同时选中“为此特定资源创建新角色”复选框。这将在账户 A 中创建一个角色,使账户 A 中的用户能够在账户 b 事件总线上发布。以下政策是自动创建的,您无需执行任何操作。
{
"Version": "2012-10-17","Statement": [
{
"Effect": "Allow","Action": [
"events:PutEvents"
],"Resource": [
arn:aws:events:<your-region>:<Account-B>:event-bus/event-bus-b
]
}
]
}
-
点击创建并创建规则。
-
现在点击事件总线 event-bus-a 并点击发送事件按钮。
-
提供详细信息并点击发送。
示例事件:
{
"version": "0","detail": {
"userOrg" : "OrgName"
}
}
- 事件将传播到账户 B 中定义的事件总线。您可以通过复制我们在账户 B 中的账户 A 创建的规则来验证这一点,只需将 lambda 作为目标附加到该规则并在日志上打印事件.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。