本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
从自定义事件总线-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:apiActionInput。请参阅自定义事件总线的通用目标。
| 自定义事件总线-经典目标 | 通用目标动作 |
|---|---|
| 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拒绝一个它无法识别的名称,因此在创建订阅者时请确认每个名称。
迁移顺序
分五个步骤一次移动一辆总线,保持自定义事件总线-经典规则一直运行到最后一步。在您删除规则之前,每个步骤都是可逆的。
重要
从规则复制的模式与发布的事件相匹配PutEvents,因为该 API 生成的封套与自定义事件总线-Classic 相同。同样的模式与发布的事件没有任何匹配PutRawEvents,因为有效载荷未嵌套在下面detail。请参阅事件结构:数据、元数据和系统元数据。
-
创建具有所需保留期的自定义事件总线,然后等待其状态变成
ACTIVE。 -
对于每条规则,为其每个目标创建一个订阅者。使用规则的事件模式作为
DATA过滤器,将其输入变压器用作JSONATA变压器,将其目标角色用作RoleArn。在发送流量之前,附加死信队列并开启日志。 -
从您的制作者发布到两条总线,并在每个目标处确认两条路径都传递相同的事件。
-
仅将制作人移至自定义事件总线。
-
禁用自定义事件总线-Classic 上的规则。在重试窗口和您自己的验证期过后将其删除。