

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 從自訂事件匯流排遷移 - Classic 到自訂事件匯流排
<a name="eb-custom-bus-migrate"></a>

自訂事件匯流排 - Classic 仍然可用，您可以並排執行這兩個產品。由於自訂事件匯流排會保留 `events:` IAM 命名空間`events.amazonaws.com`和服務主體，因此您的身分政策和交付角色會轉移。路由模型有哪些變更。


| 自訂事件匯流排 - Classic | 自訂事件匯流排 | 
| --- | --- | 
| 規則及其目標之一 | 一個訂閱者 | 
| 具有五個目標的規則 | 同一匯流排上的五個訂閱者 | 
| 規則上的事件模式 | 範圍為 的篩選條件DATA。當生產者使用 發佈時PutEvents，模式保持不變。 | 
| 輸入轉換器 | 類型為 的轉換器 JSONATA | 
| 目標上的無效字母佇列 | OnFailureConfiguration 在訂閱者上 | 
| 在目標上重試政策 | RetryPolicy 在訂閱者上 | 
| 封存與重播功能 | 匯流排和訂閱者開始位置的保留 | 
| 匯流排擁有者為每個消費者撰寫的規則 | 消費者自行建立的訂閱者 | 
| events:PutEvents | events:PutEvents，加上events:PutRawEvents非 JSON 承載 | 

四種功能沒有自訂事件匯流排 - 傳統對等功能，因此遷移的設計可以在沒有解決方法的情況下使用它們：保留匯流排本身、訂閱者開始位置、使用待處理項目暫停和繼續，以及非 JSON 承載的第二個發佈 API。您不需要移動一切：兩個匯流排並排執行，自訂事件匯流排 - Classic 規則可以鎖定自訂事件匯流排，而訂閱者可以鎖定自訂事件匯流排 - Classic，因此您可以一次移動一個取用者或一個生產者。請參閱 [事件匯流排目標：匯流排至匯流排](eb-custom-bus-target-bus.md)。

## 什麼不會變更
<a name="eb-custom-bus-migrate-unchanged"></a>

以下內容保持不變，因此部署的對應部分會保持原樣。


| 未變更 | 它對移動的意義 | 
| --- | --- | 
| IAM 動作命名空間events:events.amazonaws.com和服務主體 | 重複使用身分政策、匯流排資源政策和交付角色信任政策 | 
| 目標服務：Amazon SQS、Lambda、Amazon SNS、Kinesis、Firehose、Step Functions、API Gateway、API 目的地、事件匯流排 | 交付角色會保留相同的目標動作；每個目標都有一個參數區塊，其欄位與其 Classic 相同。請參閱 [自訂事件匯流排訂閱者的目標](eb-custom-bus-targets.md) | 
| 事件模式語法，萬用字元除外 | 規則模式會針對PutEvents流量變成不變的DATA篩選條件。請參閱 [篩選訂閱者的事件](eb-custom-bus-filtering.md) | 
| AWS 服務事件和 SaaS 合作夥伴事件 | 相同的事件會透過事件來源到達自訂事件匯流排。請參閱 [自訂事件匯流排的事件來源](eb-custom-bus-event-sources.md) | 
| PutEvents API 和信封 | 生產者變更端點和用戶端，而不是請求 | 
| 使用 JSONata 進行輸入轉換 | 運算式移動到 ，Transformer其中事件位於 $events | 

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

**重要**  
根據預設，訂閱者會重試失敗的交付 300 秒和 5 次嘗試。自訂事件匯流排 - 傳統目標重試 24 小時和 185 次嘗試。如果您的消費者在中斷期間依賴一天的重試，請為每個訂閱者將 `RetryPolicy.MaxEventAgeInSeconds`設為 86，400 和 `MaxRetryAttempts` 185，並連接無效字母佇列；否則失敗超過 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)。


| 自訂事件匯流排 - Classic 目標 | 通用目標動作 | 
| --- | --- | 
| 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 Run Command | arn:aws:events:::aws-sdk:ssm:sendCommand | 
| Systems Manager Automation | arn:aws:events:::aws-sdk:ssm:startAutomationExecution | 
| AWS Glue 工作流程 | arn:aws:events:::aws-sdk:glue:startWorkflowRun | 
| SageMaker 管道 | arn:aws:events:::aws-sdk:sagemaker:startPipelineExecution | 
| Redshift Data API 陳述式 | arn:aws:events:::aws-sdk:redshiftdata:executeStatement | 
| CloudWatch Logs 日誌群組 | 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 上的規則。在重試時段和您自己的驗證期間過後刪除它們。