

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

# 使用 Amazon SNS 整合部署事件重播管道
<a name="deploy-event-replay-pipeline"></a>

本教學課程說明如何部署[事件重播管道](sns-fork-pipeline-as-subscriber.md#sns-fork-event-replay-pipeline)，並讓管道訂閱 Amazon SNS 主題。此程序會自動將與管道相關聯的 AWS SAM 範本轉換為 CloudFormation 堆疊，然後將堆疊部署到您的 AWS 帳戶。此程序還會建立和設定一組資源 (構成事件重播管道)，包括 Amazon SQS 佇列和 Lambda 函數。

如需有關篩選事件的詳細資訊，請參閱本指南中的[Amazon SNS 訂閱篩選政策](sns-subscription-filter-policies.md)。

1. 登入 [AWS Lambda 主控台](https://console.aws.amazon.com/lambda/)。

1. 在導覽面板上，選擇 **Functions (函數)**，然後選擇 **Create function (建立函數)**。

1. 在 **Create function** (建立函數) 頁面上，執行下列動作：

   1. 選擇**瀏覽無伺服器應用程式存放庫**、**公有應用程式**、**顯示建立自訂 IAM 角色或資源政策的應用程式**。

   1. 搜尋 `fork-event-replay-pipeline`，然後選擇應用程式。

1. 在 **fork-event-replay-pipeline** 頁面上，執行下列動作：

   1. 在 **Application settings (應用程式設定)** 區段中，輸入 **Application name (應用程式名稱)** (例如，`my-app-replay`)。
**注意**  
對於每個部署，應用程式名稱必須是唯一的。如果您重複使用應用程式名稱，部署只會更新先前部署的堆疊 （而不是建立新的 CloudFormation 堆疊）。

   1. (選用) 輸入下列其中之一 **LogLevel** 設置來執行應用程序的 Lambda 函數：
      + `DEBUG`
      + `ERROR`
      + `INFO` (default)
      + `WARNING`

   1. (選用) **對於 ReplayQueueRetentionPeriodInSeconds**，輸入 Amazon SQS 重播佇列保留訊息的時間量 (以秒為單位)。如果您不輸入值，則會使用 1,209,600 秒 (14 天)。

   1. 對於 **TopicArn**，輸入 Amazon SNS 主題的 ARN，表示分支管道的此執行個體將訂閱此主題。

   1. 對於 **DestinationQueueName**，輸入 Amazon SQS 佇列的名稱，供 Lambda 重播函數將訊息轉送到此佇列。

   1. (選用) 對於 **SubscriptionFilterPolicy**，使用 JSON 格式輸入 Amazon SNS 訂閱篩選政策，以用於篩選傳入的事件。篩選政策決定緩衝哪些事件來重播。如果您不輸入值，則不會使用篩選 (緩衝所有事件來重播)。

   1. 選擇 **I acknowledge that this app creates custom IAM roles, resource policies and deploys nested applications. (我了解此應用程式會建立自訂 IAM 角色、資源政策及部署巢狀應用程式。)**，然後選擇 **Deploy (部署)**。

在**部署狀態{{my-app 重播}}**頁面上，Lambda 會顯示**您的應用程式正在部署**狀態。

在**資源**區段中， CloudFormation 開始建立堆疊，並顯示每個資源的 **CREATE\_IN\_PROGRESS** 狀態。程序完成時， CloudFormation 會顯示 **CREATE\_COMPLETE** 狀態。

當部署完成時，Lambda 會顯示 **Your application has been deployed** (您的應用程式已經完成部署) 狀態。

發佈到 Amazon SNS 主題的訊息會在由事件重播管道佈建的 Amazon SQS 佇列中自動緩衝以重播。

**注意**  
在預設情況下會停用重播。若要啟用重播，請導覽到 Lambda 主控台的函數頁面，展開 **Designer** (設計工具) 區段，選擇 **SQS** 圖磚，然後在 **SQS** 區段中，選擇 **Enabled** (已啟用)。