

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

# 与其他账号共享自定义事件总线
<a name="eb-custom-bus-sharing"></a>

要让其他账号发布到您的总线、为其添加订阅者或为其附加事件源，请与 Amazon Resource Access Manager (Amazon RAM) 共享总线。然后从四个托管权限中选择一个。例如，`444455556666`使用与帐户共享`orders`公交车`AWSRAMEventBridgeEventBusV2SubscribeOnly`，该帐户可以在其上创建订阅者。当你需要明确的`Deny`、条件键或没有托管权限表达的授权时，改为在总线上写一个资源策略。另一个账户仍然需要在自己的身份策略中执行相同的操作，因为双方都必须允许。

## 共享公共汽车的先决条件
<a name="eb-custom-bus-access-ram-prereq"></a>
+ 您熟悉 IAM 基于身份和基于资源的策略，因为共享总线需要对总线和消费者身份的相应权限。
+ 你必须拥有这辆公共汽车。消费者账户不能共享公共汽车继续前进。
+ 要在没有邀请的情况下与组织中的帐户共享，请启用与 Amazon Organizations 中的共享 Amazon RAM。要与组织外部的账户共享，该账户必须接受资源共享邀请，然后才能使用总线。
+ 总线和消费者的用户位于同一个区域和分区中。消费者在公交车上发布信息，并在公交车所在地区创建订阅者。

## 共用一辆公共汽车
<a name="eb-custom-bus-access-ram"></a>

我们建议 Amazon RAM 您自己编写资源策略。有了这个 Amazon RAM，你就可以在一个地方查看和撤消你分享的内容。 Amazon RAM 还可以与您合作 Amazon Organizations 并为您编写总线的`AWS_RAM`资源策略。创建资源共享，命名总线 ARN、使用者账户或组织单位，以及总线资源类型的四种 Amazon 托管权限之一，分别位于上。`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
```

要授予低于托管权限或添加条件密钥，请创作 Amazon RAM 客户托管权限。 Amazon RAM 拒绝仅限公交车所有者的操作。在 Amazon RAM `GetPermission`操作中读回权限，而不是假设其确切的操作列表。

## 取消共享公交车
<a name="eb-custom-bus-access-ram-unshare"></a>

要停止共享，请从资源共享中移除总线或主体，或者删除共享。 EventBridge在创建订阅者或事件源时对其进行授权，因此用户在共享处于活动状态时创建的订阅者在您取消共享后会继续传送。要停止它，请使用`RevokeResource`将其撤销。有关撤消订阅者或事件源的更多信息，请参阅[撤销订阅者或事件源](eb-custom-bus-access-revoke.md)。一旦份额消失，消费者就无法再发布或创建新的订阅者。

## 使用与您共享的公共汽车
<a name="eb-custom-bus-access-consumer"></a>

与你的账户共享的公交车出现在你的`ListEventBuses`搜索结果中，车主的账户显示在其 ARN 中，你在公交车所在区域由该 ARN 使用。你在上面创建的内容属于你：当你在共享巴士上列出订阅者时，你只能看到自己的订阅者，而公交车主可以看到所有订阅者。共用一辆公共汽车只会暴露那辆公共汽车；你永远看不到车主的其他巴士。您不能更新或删除总线、更改其资源策略或继续共享总线，也不能对其他账户拥有的订阅者采取行动。公交车所有者可以通过以下方式撤回您的任何订阅者或事件源`RevokeResource`；已撤销的资源将永久停止，您只能将其删除。

## 计费和计量
<a name="eb-custom-bus-access-ram-billing"></a>

共享公共汽车本身不收取任何费用。发布、配送和保留按照 [Amazon EventBridge 定价](https://www.amazonaws.cn/eventbridge/pricing/)页面上的说明进行计费。公交车主可以在中查看每个消费者账户的配送量，`EventsDelivered`以及带有`SubscriberAccount`维度的`EgressBytes`指标。有关可观测性的更多信息，请参阅[自定义事件总线的可观察性：指标、日志和 CloudTrail](eb-custom-bus-observability.md)。

## 编写自定义资源策略
<a name="eb-custom-bus-access-policy"></a>

事件总线是唯一采用资源策略的自定义事件总线资源； EventBridge 拒绝任何其他资源 ARN。一辆公交车上有两份命名的保单。该`default`策略是您以完整的 IAM 策略语言编写的策略，包括`Deny`声明。 `AWS_RAM`仅由您的资源共享编写 Amazon RAM ，并反映您的资源共享。

EventBridge 当它授权来自另一个账户的来电者时，会同时进行评估，其中一个`Deny`中的显式会覆盖另一个账户`Allow`中的一个。如果跨账户来电者被拒绝，而你编写的政策似乎允许他们，请阅读其他政策。

`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`、`GetResourcePolicy``DeleteResourcePolicy`、和管理策略`ListResourcePolicies`。每个人都乘坐公交车 ARN 进来。`--resource-arn``default`当你省略时，前三个会`--policy-name`起作用。您无法写入或删除`AWS_RAM`：命名失败`AccessDeniedException`。 `GetResourcePolicy``ResourceNotFoundException`当命名策略不存在时失败，而不是返回一个空文档，因此将其视为没有策略。您仅通过共享的总线 Amazon RAM 没有`default`策略，因此`get-resource-policy`没有策略会`--policy-name`返回该错误；pass `--policy-name AWS_RAM` to read 策略 Amazon RAM 写道。 `ListResourcePolicies`仅返回策略名称和修订版 ID，不返回文档。要将写入或删除设置为条件，请将策略的当前修订版传入`--expected-revision-id`；如果不匹配，操作将失败。`ConflictException`一个`default`策略文档最多可以有 20 KB；较大的策略会失败`PolicyLengthExceededException`。此配额可在 Service Quotas 中进行调整。

EventBridge 拒绝授予公众访问权限的`default`策略，但不附带`PublicPolicyException`该策略。此支票始终处于开启状态。如果声明的主体是通配符，并且没有任何条件限制呼叫者只能访问特定的账户或委托人，则该声明允许公众访问。事件内容的条件（例如）`events:source`无法识别来电者。像`aws:PrincipalOrgID`这样的情况。您撰写的政策是不可见的 Amazon RAM，因此您可以自己对其进行跟踪。

## 在没有发布电话的情况下到达的事件
<a name="eb-custom-bus-access-forwarded"></a>

事件也可以在没有直接`PutRawEvents`通话`PutEvents`或呼叫的情况下到达总线：来自事件源，或者来自以此总线为目标的另一条总线上的规则或订阅者。 EventBridge 在您创建事件源时，仅对其进行一次授权。当事件到达时，它不会再次检查任何内容，因此公交策略之后无法过滤该流量。有关事件源的更多信息，请参阅[自定义事件总线的事件源](eb-custom-bus-event-sources.md)。你自己指向公交车的规则或订阅者在你提供的角色下，每次事件都会获得一次授权。 EventBridge 为每个事件选择操作：`events:PutEvents`针对真正的 Amazon 服务或合作伙伴活动，以及`events:PutRawEvents`针对您发起的活动。您无法选择使用的操作。在角色的身份策略和目标总线的资源策略中，必须向通过一条路径承载两种事件的转发者授予这两种操作的权限。只授予一个会拒绝一半的直播。