View a markdown version of this page

与其他账号共享自定义事件总线 - 亚马逊 EventBridge

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

与其他账号共享自定义事件总线

要让其他账户向您的总线发布信息、向其添加订阅者或向其附加事件源,请与 AWS Resource Access Manager (AWS RAM) 共享该总线,然后从四种托管权限中选择一项。例如,444455556666使用与账号共享orders公交车AWSRAMEventBridgeEventBusV2SubscribeOnly,该账户可以在上面创建订阅者。当你需要显式Deny、条件密钥或管理权限未表示的授权时,改为在总线上编写资源策略。另一个账户仍需要在自己的身份策略中执行相同的操作,因为双方都必须允许。

共享公交车的先决条件

  • 你必须拥有这辆巴士。消费者账户无法共享继续行驶的巴士。

  • 要在没有邀请的情况下与组织中的帐户共享,请启用与 AWS Organizations 中的共享 AWS RAM。要与组织外部的账户共享,该账户必须接受资源共享邀请才能使用总线。

  • 总线和消费者的订阅者位于同一个区域和分区中。消费者向公交车发布信息,并在公交车所在区域创建订阅者。

共享一辆公共汽车

我们建议 AWS RAM 您自己编写资源政策。 AWS RAM 让你可以在一个地方查看和撤消你共享的内容,它可以使用的内容 AWS Organizations,它还会为你编写总线的AWS_RAM资源策略。创建一个资源共享,将总线 ARN、消费者账户或组织单位以及总线资源类型的四个 AWS 托管权限中的一个命名为arn:aws:ram::aws:permission/name。

托管权限消费者账户能做什么
AWSRAMEventBridgeEventBusV2PublishOnly发布到公交车
AWSRAMEventBridgeEventBusV2SubscribeOnly将订阅者连接到总线
AWSRAMEventBridgeEventBusV2EventSourceAccess附上和更新事件源,并描述总线
AWSRAMEventBridgeEventBusV2FullAccess使用任一 API 进行发布,描述总线,创建、更新和删除其自己的订阅者和事件源
aws ram create-resource-share \ --name orders-bus-share \ --resource-arns arn:aws:events:us-east-1:111122223333:event-busv2/orders/EXAMPLE1234567890abcdef \ --principals 444455556666 \ --permission-arns arn:aws:ram::aws:permission/AWSRAMEventBridgeEventBusV2SubscribeOnly

要授予少于托管权限的权限或添加条件密钥,请创建 AWS RAM 客户管理权限。 AWS RAM 拒绝仅限公交车所有者操作的操作。使用该 AWS RAM GetPermission操作读回权限,而不是假设其确切的操作列表。

取消公共汽车共享

要停止共享,请从资源共享中移除总线或委托人,或删除共享。 EventBridge在订阅者或事件源创建时对其进行授权,因此消费者在共享处于活动状态时创建的订阅者在您取消共享后继续交付。要停止它,请使用以下命令将其撤销RevokeResource;参见撤销订阅者或事件源。共享消失后,消费者将无法再发布或创建新的订阅者。

使用与您共用的公交车

与您的账户共享的公交车会显示在您的ListEventBuses结果中,车主的账户出现在其 ARN 中,而您则在该公交车所在区域使用该公交车。您在共享总线上创建的内容属于您:当您在共享总线上列出订阅者时,您只能看到自己的订阅者,而公交车所有者可以看到所有订阅者。共享一辆公共汽车只会暴露那辆巴士;你永远看不到车主的其他巴士。您无法更新或删除总线、更改其资源策略或继续共享,也无法对其他账户拥有的订阅者进行操作。公交车所有者可以撤回您的任何订阅者或事件来源RevokeResource;已撤销的资源将永久停止,您只能将其删除。

计费和计量

共享公交车本身不收费。出版、交付和保留按亚马逊 EventBridge 定价页面上的说明进行计费。公交车所有者可以在SubscriberAccount维度的EventsDelivered和EgressBytes指标中查看每个消费者账户的交付量;请参阅自定义事件总线的可观察性:指标、日志和 CloudTrail。

编写自定义资源策略

事件总线是唯一采用资源策略的自定义事件总线资源; EventBridge 拒绝任何其他资源 ARN。一辆公共汽车上有两张指定保单。default是你用完整的 IAM 政策语言写的,包括Deny。AWS_RAM仅由您的资源共享编写 AWS RAM 并反映您的资源共享。 EventBridge 当它授权来自另一个账户的来电者时,都会进行评估,而显式输入会覆盖另一个账户DenyAllow中的一个来电者。当跨账户来电者被拒绝并且你编写的政策似乎允许他们时,请阅读其他政策。

orders总线上的以下default政策允许账户444455556666添加订阅者并读取总线,仅此而已。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPartnerAccountToSubscribe", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": [ "events:CreateSubscriber", "events:DescribeEventBus" ], "Resource": "arn:aws:events:us-east-1:111122223333:event-busv2/orders/EXAMPLE1234567890abcdef" } ] }

使用PutResourcePolicy、GetResourcePolicyDeleteResourcePolicy、和管理策略ListResourcePolicies。每个都使用总线 ARN,default当你省略--policy-name时--resource-arn,每个 ARN 都会起作用。您无法写入或删除AWS_RAM:命名失败AccessDeniedException。GetResourcePolicyResourceNotFoundException当命名策略不存在时失败,而不是返回空文档,因此将其视为没有策略。您仅通过共享的公交车 AWS RAM 没有default政策,因此get-resource-policy不会--policy-name返回该错误;传递--policy-name AWS_RAM给读取政策 AWS RAM 写入的内容。ListResourcePolicies仅返回策略名称和修订版 ID,不返回文档。要将写入或删除设为条件,请将策略的当前修订版本传入--expected-revision-id;如果不匹配,则操作将失败。ConflictExceptiondefault策略文档最大可达 20 KB;较大的策略不行PolicyLengthExceededException。此配额可在服务配额中调整。

EventBridge 拒绝授予公众访问权限的default政策PublicPolicyException,但不附加该政策。此检查始终处于启用状态。如果声明的主体是通配符,并且没有任何条件限制来电者访问特定的账户或委托人,则该声明会授予公众访问权限。事件内容上的条件(例如)events:source无法识别来电者。诸如此类的aws:PrincipalOrgID条件。你写的政策是不可见的 AWS RAM,所以你自己跟踪它。

没有发布电话就到的活动

事件也可以在没有直接PutEvents或PutRawEvents呼叫的情况下在总线上到达:来自事件源,或者来自目标为该总线的另一条总线上的规则或订阅者。在您创建事件源时,它只需要经过一次授权,并且在事件到达时不会再次检查任何内容,因此总线策略之后无法过滤该流量。请参阅自定义事件总线的事件源。根据你提供的角色,你自己指向公交车的规则或订阅者在摄取时获得一次授权,每个事件只能获得一次授权。 EventBridge 为每个事件选择动作:events:PutEvents针对真正的 AWS 服务或合作伙伴活动,以及events:PutRawEvents针对您发起的活动。您无法选择所使用的操作,因此必须在角色的身份策略和目标总线的资源策略中向通过一条路径承载这两种事件的转发器授予这两种操作。只授予一个会拒绝一半的直播。