

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

# 从自定义事件总线-经典迁移到自定义事件总线
<a name="eb-custom-bus-migrate"></a>

自定义事件总线-经典版仍然可用，您可以并行运行这两个产品。由于自定义事件总线保留 `events:` IAM 命名空间和`events.amazonaws.com`服务主体，因此您的身份策略和交付角色将继续。改变的是路由模型。


| 自定义事件总线-经典版 | 自定义事件总线 | 
| --- | --- | 
| 一条规则及其目标之一 | 一位订阅者 | 
| 有五个目标的规则 | 同一辆公共汽车上有五个订阅者 | 
| 规则上的事件模式 | 范围为的过滤器DATA。当制作人使用发布时PutEvents，模式保持不变。 | 
| 输入变压器 | 一种变压器，其类型为 JSONATA | 
| Dead-letter 在目标上排队 | OnFailureConfiguration在订阅者身上 | 
| 在目标上重试策略 | RetryPolicy在订阅者身上 | 
| 存档和重放 | 总线上的留存率和订阅者的起始位置 | 
| 公交车所有者为每位消费者制定的规则 | 消费者自己创建的订阅者 | 
| events:PutEvents | events:PutEvents，另外events:PutRawEvents适用于非 JSON 有效负载 | 

有四种功能没有自定义事件总线（经典版）等效项，因此迁移后的设计无需变通办法即可使用它们：保留总线本身、订阅者起始位置、暂停和恢复待办事项以及针对非 JSON 有效负载的第二个发布 API。您不必移动所有内容：两条总线并排运行，自定义事件总线-经典规则可以定位自定义事件总线，订阅者可以定位自定义事件总线-Classic，因此您可以一次移动一个消费者或一个生产者。请参阅[事件总线目标：总线到总线](eb-custom-bus-target-bus.md)。

## 什么没有改变
<a name="eb-custom-bus-migrate-unchanged"></a>

以下内容保持不变，因此部署的相应部分将照原样继续。


| 不变 | 这对此举意味着什么 | 
| --- | --- | 
| IAM 操作命名空间events:和events.amazonaws.com服务主体 | 重复使用身份策略、总线资源策略和交付角色信任策略 | 
| 目标服务：亚马逊 SQS、Lambda、亚马逊 SNS、Kinesis、Firehose、Step Functions、API 网关、API 目的地、事件总线 | 交付角色保持相同的目标操作；每个目标都有一个参数块，其字段与经典对应的目标块相同。请参阅 [自定义事件总线订阅者的目标](eb-custom-bus-targets.md)。 | 
| 事件模式语法，通配符除外 | 规则模式变为PutEvents流量DATA过滤器，不变。请参阅 [为订阅者筛选事件](eb-custom-bus-filtering.md)。 | 
| AWS 服务活动和 SaaS 合作伙伴活动 | 相同的事件通过事件源到达自定义事件总线。请参阅 [自定义事件总线的事件源](eb-custom-bus-event-sources.md)。 | 
| PutEventsAPI 和信封 | 生产者更改的是端点和客户端，而不是请求 | 
| 使用 JSonata 进行输入转换 | 当事件位于下方时Transformer，表达式移至 $events | 

## 不同的默认值
<a name="eb-custom-bus-migrate-defaults"></a>

**重要**  
订阅者重试失败的交付 300 秒，默认情况下会重试 5 次尝试。自定义事件总线-经典目标重试 24 小时和 185 次尝试。如果您的消费者在中断期间依赖一天的重试，则将每个订阅者设置为 `RetryPolicy.MaxEventAgeInSeconds` 86,400 和 185，并附加死信队列；否则，失败超过 5 分钟的事件将成为死信而不是延迟`MaxRetryAttempts`交付。请参阅[重试策略和死信队列](eb-custom-bus-retry.md)。

另外两个默认值不同。订阅者以 JSON 数组的形式将批次交付给函数或状态机，其中规则每次调用传送一个事件；设置为 1 `BatchConfiguration.MaxBatchSize` 以保留每次调用一个事件。而且，公交车会保留事件，因此事故发生后创建的订阅者可以读取它错过的内容，而后期创建的规则什么也看不见。

## 没有定制等效目标的经典目标
<a name="eb-custom-bus-migrate-targets"></a>

在自定义事件总线上没有定制目标的每种自定义事件总线-经典目标类型都是通过调用该服务的 API 操作的通用目标来实现的。设置`TargetArn`为`arn:aws:events:::aws-sdk:{{service}}:{{apiAction}}`并在其中生成请求`Input`；请参阅[自定义事件总线的通用目标](eb-custom-bus-universal-targets.md)。


| 自定义事件总线-经典目标 | 普遍目标行动 | 
| --- | --- | 
| Amazon ECS 任务 | arn:aws:events:::aws-sdk:ecs:runTask | 
| AWS 批处理作业 | arn:aws:events:::aws-sdk:batch:submitJob | 
| CodeBuild 项目 | arn:aws:events:::aws-sdk:codebuild:startBuild | 
| CodePipeline 管道 | arn:aws:events:::aws-sdk:codepipeline:startPipelineExecution | 
| Systems Manager 运行命令 | arn:aws:events:::aws-sdk:ssm:sendCommand | 
| Systems Manager Automation | arn:aws:events:::aws-sdk:ssm:startAutomationExecution | 
| AWS 胶水工作流程 | arn:aws:events:::aws-sdk:glue:startWorkflowRun | 
| SageMaker 管道 | arn:aws:events:::aws-sdk:sagemaker:startPipelineExecution | 
| Redshift 数据 API 声明 | arn:aws:events:::aws-sdk:redshiftdata:executeStatement | 
| CloudWatch 日志日志组 | arn:aws:events:::aws-sdk:cloudwatchlogs:putLogEvents | 
| Amazon EC2 操作（停止、重启、终止、创建快照） | arn:aws:events:::aws-sdk:ec2:stopInstances, rebootInstances, terminateInstances, createSnapshot | 
| 检查员评估 | arn:aws:events:::aws-sdk:inspector:startAssessmentRun | 

服务和操作名称遵循通用目标命名规则；`CreateSubscriber`拒绝其无法识别的名称，因此请在创建订阅者时逐一确认。

## 迁移顺序
<a name="eb-custom-bus-migrate-steps"></a>

一次移动一根总线，分五个步骤，使自定义事件总线-经典规则一直运行到最后一步。在您删除规则之前，每个步骤都是可逆的。

**重要**  
从规则中复制的模式与发布的事件相匹配`PutEvents`，因为该 API 生成的封套与 “自定义事件总线-Classic” 相同。同样的模式与发布的事件不匹配`PutRawEvents`，因为有效负载不嵌套在其下`detail`。请参阅[事件结构：数据、元数据和系统元数据](eb-custom-bus-addressing.md)。

1. 使用所需的保留期创建自定义事件总线，然后等待其状态变成`ACTIVE`。

1. 对于每条规则，为其每个目标创建一个订阅者。使用规则的事件模式作为`DATA`过滤器，使用其输入转换器作为`JSONATA`转换器，将其目标角色用作`RoleArn`. 在发送流量之前，请附加死信队列并打开日志。

1. 将您的生产者发布到两条总线，并在每个目标处确认两条路径都传送相同的事件。

1. 仅将制作人移至自定义事件总线。

1. 禁用自定义事件总线上的规则-经典。在重试窗口和您自己的验证期过后将其删除。