

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

# 使用 Amazon S3 事件通知加速網路爬取
<a name="crawler-s3-event-notifications"></a>

您可以將爬蟲程式設定為使用 Amazon S3 事件來尋找任何變更，而不是從 Amazon S3 或 Data Catalog 目標列出物件。此功能可使用 Amazon S3 事件識別兩個編目之間的變更，方法是列出觸發事件的子資料夾中的所有檔案，而不是列出完整的 Amazon S3 或 Data Catalog 目標，藉此改善重新編目時間。

第一個編目會列出目標中的所有 Amazon S3 物件。第一次成功編目之後，您可以選擇手動或按設定的排程重新編目。爬蟲程式將僅列出這些事件中的物件，而不是列出所有物件。

當目標為 Data Catalog 資料表時，編目程式會使用變更來更新 Data Catalog 中的現有資料表 (例如，資料表中的額外分區)。

移動到基於 Amazon S3 事件的爬蟲程式的優點是：
+ 因為不需要列出目標中的所有物件，而是在新增或刪除物件的位置完成特定資料夾清單，從而更快速地重新編目。
+ 減少整體編目成本，因為會在新增或刪除物件的位置完成特定資料夾清單。

Amazon S3 事件編目會根據爬蟲程式排程從 SQS 佇列中使用 Amazon S3 事件來執行。如果佇列中沒有事件，則不會產生任何費用。您可以將 Amazon S3 事件設定為直接轉至 SQS 佇列，或在多個取用者需要相同事件 (即 SNS 和 SQS 的組合) 的情況下設定事件。如需詳細資訊，請參閱[設定 Amazon S3 事件通知的帳戶](#crawler-s3-event-notifications-setup)。

在事件模式下建立並設定爬蟲程式之後，第一次編目會執行完整的 Amazon S3 或 Data Catalog 目標清單，藉此以清單模式執行。下列日誌會在第一次成功編目之後使用 Amazon S3 事件來確認編目的操作：「透過使用 Amazon S3 事件來執行編目。」

在建立 Amazon S3 事件編目並更新可能會影響編目的爬蟲程式屬性之後，編目會以清單模式運作，並新增下列日誌：「編目未在 S3 事件模式下執行」。

**注意**  
每個編目程式取用的訊息數目上限為 10 萬則訊息。

## 考量和限制
<a name="s3event-crawler-limitations"></a>

在您設定編目程式使用 Amazon S3 事件通知尋找任何變更時，適用下列考量和限制。
+  **已刪除分區的重要行為** 

  將 Amazon S3 事件編目程式與 Data Catalog 資料表搭配使用時：
  +  如果使用 `DeletePartition` API 呼叫刪除分區，您還必須刪除該分區下的所有 S3 物件，並在設定 S3 事件通知時選取**所有物件移除事件**。如果未設定刪除事件，編目程式會在下次執行期間重新建立已刪除的分區。
+ 無論是 Amazon S3 目標還是 Data Catalog 目標，爬蟲程式只支援單一目標。
+ 不支援私有 VPC 上的 SQS。
+ 不支援 Amazon S3 取樣。
+ 爬蟲程式目標應該是 Amazon S3 目標的資料夾，或是 Data Catalog 目標的一個或多個 AWS Glue Data Catalog 資料表。
+ 不支援「所有」路徑萬用字元：s3://%
+ 對於 Data Catalog 目標，所有目錄資料表都應指向 Amazon S3 事件模式的相同 Amazon S3 儲存貯體。
+ 對於 Data Catalog 目標，目錄資料表不應指向 Delta Lake 格式的 Amazon S3 位置 (包含 \_symlink 資料夾或檢查目錄資料表的 `InputFormat`)。

**Topics**
+ [考量和限制](#s3event-crawler-limitations)
+ [設定 Amazon S3 事件通知的帳戶](#crawler-s3-event-notifications-setup)
+ [為 Amazon S3 目標的 Amazon S3 事件通知設定編目程式](crawler-s3-event-notifications-setup-console-s3-target.md)
+ [為 Data Catalog 資料表的 Amazon S3 事件通知設定編目程式](crawler-s3-event-notifications-setup-console-catalog-target.md)

## 設定 Amazon S3 事件通知的帳戶
<a name="crawler-s3-event-notifications-setup"></a>

完成下列設定任務。請注意括號中的值會參考指令碼中的可設定項。

1. 您需要設定 Amazon S3 儲存貯體的事件通知。

   如需詳細資訊，請參閱 [Amazon S3 事件通知](https://docs.aws.amazon.com/AmazonS3/latest/userguide/EventNotifications.html)。

1. 若要使用以 Amazon S3 事件為基礎的編目程式，您應該在 Amazon S3 儲存貯體上啟用事件通知，在其中根據字首篩選出事件，這些字首與 S3 目標相同並存放在 SQS 中。您可以透過主控台設定 SQS 和事件通知，方法是遵循[演練：設定儲存貯體的通知](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ways-to-add-notification-config-to-bucket.html)中的步驟。

1. 將下列 SQS 政策新增至編目程式使用的角色。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "VisualEditor0",
         "Effect": "Allow",
         "Action": [
           "sqs:DeleteMessage",
           "sqs:GetQueueUrl",
           "sqs:ListDeadLetterSourceQueues",
           "sqs:ReceiveMessage",
           "sqs:GetQueueAttributes",
           "sqs:ListQueueTags",
           "sqs:SetQueueAttributes",
           "sqs:PurgeQueue"
         ],
         "Resource": "arn:aws:sqs:us-east-1:{{111122223333}}:cfn-sqs-queue"
       }
     ]
   }
   ```

------