

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

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

Custom Event Bus-Classic 仍然可用，您可以并排运行这两个产品。您的身份策略和交付角色会延续，因为自定义事件总线会保留 `events:` IAM 命名空间和`events.amazonaws.com`服务主体。路由模型发生变化。


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

有四种功能没有自定义事件总线-Classic 等效功能，因此无需解决方法即可使用它们：
+ 总线本身的保留
+ 订阅者的起始位置
+ 暂停并继续处理待办事项列表
+ 用于非 JSON 有效负载的第二个发布 API

你不必移动所有东西。这两条总线并排运行，因此自定义事件总线-经典规则可以瞄准自定义事件总线，订阅者可以将自定义事件总线-经典作为目标。您可以一次转移一个消费者或一个生产者。请参阅[事件总线目标：总线到总线](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 Gateway、API 目的地、事件总线 | 交付角色保持相同的目标操作；每个目标都有一个参数块，其字段与 Classic 对应的目标相同。请参阅 [自定义事件总线订阅者的目标](eb-custom-bus-targets.md)。 | 
| 事件模式语法，通配符除外 | 规则模式变为PutEvents流量DATA过滤器，保持不变。请参阅 [为订阅者筛选事件](eb-custom-bus-filtering.md)。 | 
| Amazon 服务活动和 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，并附加死信队列。`MaxRetryAttempts`否则，失败超过 5 分钟的事件将被视为死信，而不是延迟交付。请参阅[重试策略和死信队列](eb-custom-bus-retry.md)。

另外两个默认值不同。订阅者以 JSON 数组的形式向函数或状态机传送批次。相比之下，规则每次调用都会传送一个事件。要在每次呼叫中保留一个事件，请设置`BatchConfiguration.MaxBatchSize`为 1。

公交车还会保留事件，因此在事件发生后创建的订阅者可以读取它错过的内容。相比之下，后期创建的规则却一无所获。

## 没有定制同类目标的经典目标
<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 | 
| Amazon Batch 作业 | 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 | 
| Amazon Glue 工作流程 | 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 | 
| Inspector | 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. 禁用自定义事件总线-Classic 上的规则。在重试窗口和您自己的验证期过后将其删除。