View a markdown version of this page

从自定义事件总线-Classic 迁移到自定义事件总线 - Amazon EventBridge
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

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

从自定义事件总线-Classic 迁移到自定义事件总线

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

你不必移动所有东西。这两条总线并排运行,因此自定义事件总线-经典规则可以瞄准自定义事件总线,订阅者可以将自定义事件总线-经典作为目标。您可以一次转移一个消费者或一个生产者。请参阅事件总线目标:总线到总线。

什么不会改变

以下内容保持不变,因此部署的相应部分会照原样延续。

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

不同的默认值

重要

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

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

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

没有定制同类目标的经典目标

对于自定义事件总线上没有定制目标的每个自定义事件总线-经典目标类型,请使用调用服务 API 操作的通用目标。设置TargetArn为arn:aws:events:::aws-sdk:service:apiAction并在中生成请求Input。请参阅自定义事件总线的通用目标。

自定义事件总线-经典目标通用目标动作
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 Automationarn: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
Inspectorarn:aws:events:::aws-sdk:inspector:startAssessmentRun

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

迁移顺序

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

重要

从规则复制的模式与发布的事件相匹配PutEvents,因为该 API 生成的封套与自定义事件总线-Classic 相同。同样的模式与发布的事件没有任何匹配PutRawEvents,因为有效载荷未嵌套在下面detail。请参阅事件结构:数据、元数据和系统元数据。

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

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

  3. 从您的制作者发布到两条总线,并在每个目标处确认两条路径都传递相同的事件。

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

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