

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

# 訂閱 Amazon SNS 主題 AWS 的事件分叉管道
<a name="sns-subscribe-event-fork-pipelines"></a>

為了加速事件驅動型應用程式的開發，您可以向 Amazon SNS 主題訂閱 AWS 由事件分叉管道提供支援的事件處理管道。 AWS 事件分叉管道是一組開放原始碼[巢狀應用程式](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-nested-applications.html)，以[AWS 無伺服器應用程式模型](https://aws.amazon.com/serverless/sam/) (AWS SAM) 為基礎，您可以直接從[AWS 事件分叉管道套件](https://serverlessrepo.aws.amazon.com/applications?query=aws-event-fork-pipelines) （選擇**顯示建立自訂 IAM 角色或資源政策的應用程式**) 中部署 AWS 。如需詳細資訊，請參閱[AWS 事件分叉管道的運作方式](sns-fork-pipeline-as-subscriber.md#how-sns-fork-works)。

本節說明如何使用 AWS 管理主控台 部署管道，然後將 AWS 事件分叉管道訂閱 Amazon SNS 主題。開始之前，請[建立 Amazon SNS 主題](sns-create-topic.md)。

若要刪除構成管道的資源，請在 AWS Lambda 主控台的應用程式****頁面上尋找管道，展開 **SAM 範本區段**，選擇 **CloudFormation 堆疊**，然後選擇**其他動作**、**刪除堆疊**。

# 將事件儲存和備份管道部署和訂閱至 Amazon SNS
<a name="deploy-event-storage-backup-pipeline"></a>


|  | 
| --- |
| 對於事件封存和分析，Amazon SNS 現在建議使用其與 Amazon Data Firehose 的原生整合。您可以訂閱 Firehose 交付串流至 SNS 主題，這可讓您將通知傳送至封存和分析端點，例如 Amazon Simple Storage Service (Amazon S3) 儲存貯體、Amazon Redshift 資料表、Amazon OpenSearch Service (OpenSearch Service) 等。搭配使用 Amazon SNS 與 Firehose 交付串流是全受管且無程式碼的解決方案，不需要您使用 AWS Lambda 函數。如需詳細資訊，請參閱[散發到 Firehose 交付串流](sns-firehose-as-subscriber.md)。 | 

本教學課程說明如何部署[事件儲存和備份管道](sns-fork-pipeline-as-subscriber.md#sns-fork-event-storage-and-backup-pipeline)，並讓管道訂閱 Amazon SNS 主題。此程序會自動將與管道相關聯的 AWS SAM 範本轉換為 CloudFormation 堆疊，然後將堆疊部署到您的 AWS 帳戶。此程序還會建立和設定一組資源 (構成事件儲存和備份管道)，包括下列項目：
+ Amazon SQS 佇列
+ Lambda 函式
+ Firehose 交付串流
+ Amazon S3 備份儲存貯體

如需使用 Amazon S3 儲存貯體做為目的地設定串流的詳細資訊，請參閱《*Amazon Data Firehose API 參考*`[S3DestinationConfiguration](https://docs.aws.amazon.com/firehose/latest/APIReference/API_S3DestinationConfiguration.html)`》中的 。

如需轉換事件以及設定事件緩衝、事件壓縮和事件加密的詳細資訊，請參閱《*Amazon Data Firehose 開發人員指南*》中的[建立交付串流](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)。

如需有關篩選事件的詳細資訊，請參閱本指南中的[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-storage-backup-pipeline`，然後選擇應用程式。

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

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

   1. （選用） 針對 **BucketArn**，輸入要載入傳入事件的 Amazon S3 儲存貯體 ARN。如果您未輸入值，則會在 AWS 帳戶中建立新的 Amazon S3 儲存貯體。

   1. (選用) 對於 **DataTransformationFunctionArn**，輸入 Lambda 函數的 ARN，以透過此函數來轉換傳入的事件。如果您不輸入值，資料轉換會停用。

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

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

   1. (選用) 對於 **StreamBufferingIntervalInSeconds** 和 **StreamBufferingSizeInMBs**，輸入值來設定如何緩衝傳入的事件。如果您不輸入任何值，則會使用 300 秒和 5 MB。

   1. (選用) 輸入以下其中一個 **StreamCompressionFormat** 設定來壓縮傳入的事件：
      + `GZIP`
      + `SNAPPY`
      + `UNCOMPRESSED` (default)
      + `ZIP`

   1. （選用） 對於 **StreamPrefix**，輸入字串字首以命名存放在 Amazon S3 備份儲存貯體中的檔案。如果您不輸入值，則不會使用字首。

   1. (選用) 對於 **SubscriptionFilterPolicy**，使用 JSON 格式輸入 Amazon SNS 訂閱篩選政策，以用於篩選傳入的事件。篩選政策決定哪些事件會在 OpenSearch Service 索引中編製索引。如果您不輸入值，則不會使用篩選 (所有事件都編製索引)。

   1. (可選) 針對 **SubscriptionFilterPolicyScope**，請輸入字串 `MessageBody` 或 `MessageAttributes`，啟用以承載或屬性為基礎的訊息篩選。

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

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

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

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

發佈至 Amazon SNS 主題的訊息會自動儲存在事件儲存和備份管道佈建的 Amazon S3 備份儲存貯體中。

# 將事件搜尋和分析管道部署和訂閱至 Amazon SNS
<a name="deploy-event-search-analytics-pipeline"></a>


|  | 
| --- |
| 對於事件封存和分析，Amazon SNS 現在建議使用其與 Amazon Data Firehose 的原生整合。您可以訂閱 Firehose 交付串流至 SNS 主題，這可讓您將通知傳送至封存和分析端點，例如 Amazon Simple Storage Service (Amazon S3) 儲存貯體、Amazon Redshift 資料表、Amazon OpenSearch Service (OpenSearch Service) 等。搭配使用 Amazon SNS 與 Firehose 交付串流是全受管且無程式碼的解決方案，不需要您使用 AWS Lambda 函數。如需詳細資訊，請參閱[散發到 Firehose 交付串流](sns-firehose-as-subscriber.md)。 | 

本教學課程說明如何部署[事件搜尋和分析管道](sns-fork-pipeline-as-subscriber.md#sns-fork-event-search-and-analytics-pipeline)，並讓管道訂閱 Amazon SNS 主題。此程序會自動將與管道相關聯的 AWS SAM 範本轉換為 CloudFormation 堆疊，然後將堆疊部署到您的 AWS 帳戶。此程序還會建立和設定一組資源 (構成事件搜尋和分析管道)，包括下列項目：
+ Amazon SQS 佇列
+ Lambda 函式
+ Firehose 交付串流
+ Amazon OpenSearch Service 網域
+ Amazon S3 無法投遞儲存貯體

如需使用索引做為目的地設定串流的詳細資訊，請參閱《*Amazon Data Firehose API 參考*`[ElasticsearchDestinationConfiguration](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ElasticsearchDestinationConfiguration.html)`》中的 。

如需轉換事件以及設定事件緩衝、事件壓縮和事件加密的詳細資訊，請參閱《*Amazon Data Firehose 開發人員指南*》中的[建立交付串流](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)。

如需有關篩選事件的詳細資訊，請參閱本指南中的[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-search-analytics-pipeline`，然後選擇應用程式。

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

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

   1. (選用) 對於 **DataTransformationFunctionArn**，輸入 Lambda 函數的 ARN，以使用此函數來轉換傳入的事件。如果您不輸入值，資料轉換會停用。

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

   1. (選用) 對於 **SearchDomainArn**，輸入叢集所在 OpenSearch Service 網域的 ARN，此叢集將設定所需的運算和儲存功能。如果您不輸入值，將會以預設組態建立新網域。

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

   1. 對於 **SearchIndexName**，輸入事件搜尋和分析的 OpenSearch Service 索引名稱。
**注意**  
索引名稱有下列配額：  
不得包含大寫字母
不得包含下列字元：`\ / * ? " < > | ` , #`
開頭不得為下列字元：`- + _`
不得為下列字元：`. ..`
長度不得超過 80 個字元
長度不得超過 255 個位元組
不得包含冒號 (從 OpenSearch Service 7.0 開始)

   1. (選用) 輸入下列其中一項 OpenSearch Service 索引輪換期間的 **SearchIndexRotationPeriod** 設定：
      + `NoRotation` (default)
      + `OneDay`
      + `OneHour`
      + `OneMonth`
      + `OneWeek`

      索引輪換會將時間戳記附加到索引名稱，方便看出舊資料已過期。

   1. 對於 **SearchTypeName**，輸入 OpenSearch Service 類型的名稱，以組織索引中的事件。
**注意**  
OpenSearch Service 類型名稱可以包含任何字元 (null 位元組除外)，但開頭不得為 `_`。
若是 OpenSearch Service 6.x，每個索引僅能使用一個類型。如果您為已有其他類型的現有索引指定新類型，Firehose 會傳回執行時間錯誤。

   1. (選用) 對於 **StreamBufferingIntervalInSeconds** 和 **StreamBufferingSizeInMBs**，輸入值來設定如何緩衝傳入的事件。如果您不輸入任何值，則會使用 300 秒和 5 MB。

   1. (選用) 輸入以下其中一個 **StreamCompressionFormat** 設定來壓縮傳入的事件：
      + `GZIP`
      + `SNAPPY`
      + `UNCOMPRESSED` (default)
      + `ZIP`

   1. （選用） 對於 **StreamPrefix**，輸入字串字首以命名存放在 Amazon S3 無效字母儲存貯體中的檔案。如果您不輸入值，則不會使用字首。

   1. （選用） 對於 **StreamRetryDurationInSecons**，輸入 Firehose 無法在 OpenSearch Service 索引中為事件編製索引之案例的重試持續時間。如果您不輸入值，則會使用 300 秒。

   1. (選用) 對於 **SubscriptionFilterPolicy**，使用 JSON 格式輸入 Amazon SNS 訂閱篩選政策，以用於篩選傳入的事件。篩選政策決定哪些事件會在 OpenSearch Service 索引中編製索引。如果您不輸入值，則不會使用篩選 (所有事件都編製索引)。

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

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

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

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

發佈到 Amazon SNS 主題的訊息會在由事件搜尋和分析管道佈建的 OpenSearch Service 索引中自動編製索引。如果管道無法為事件編製索引，它會將它存放在 Amazon S3 無效字母儲存貯體中。

# 使用 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\$1IN\$1PROGRESS** 狀態。程序完成時， CloudFormation 會顯示 **CREATE\$1COMPLETE** 狀態。

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

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

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