

# Amazon S3 イベント通知を使用した加速クロール
<a name="crawler-s3-event-notifications"></a>

Amazon S3 または Data Catalog ターゲットからオブジェクトを一覧表示する代わりに、Amazon S3 イベントを使用して変更を検索するようにクローラーを設定できます。この機能は、Amazon S3 または Data Catalog ターゲット全体を一覧表示するのではなく、Amazon S3 イベントを使用してイベントをトリガーしたサブフォルダからのすべてのファイルを一覧表示して 2 つのクロール間の変更を識別することによって、再クロール時間を短縮します。

最初のクロールでは、ターゲットからのすべての 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 イベントモードで実行されていません」というログが追加されます。

**注記**  
クロールごとに消費するメッセージの最大数は 100,000 メッセージです。

## 考慮事項と制限事項
<a name="s3event-crawler-limitations"></a>

Amazon S3 イベント通知を使用して変更を検索するようにクローラーを設定する場合、以下の考慮事項と制限が適用されます。
+  **削除されたパーティションの重要な動作** 

  データカタログテーブルで Amazon S3 イベントクローラーを使用する場合:
  +  `DeletePartition` API コールを使用してパーティションを削除する場合、そのパーティション内のすべての S3 オブジェクトも削除し、さらに S3 イベント通知を設定するときに **[すべてのオブジェクト削除イベント]** を選択する必要があります。削除イベントが設定されていない場合、クローラは次の実行時に削除されたパーティションを再作成します。
+ ターゲットが Amazon S3 または Data Catalog であるかにかかわらず、クローラーがサポートするのは単一のターゲットのみです。
+ プライベート VPC の SQS はサポートされていません。
+ Amazon S3 サンプリングはサポートされていません。
+ クローラーターゲットは、Amazon S3 ターゲットの場合はフォルダ、Data Catalog ターゲットの場合は 1 つ、または複数の 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 イベントベースのクローラーを使用するには、S3 ターゲットと同じプレフィックスからフィルタリングされたイベントが含まれた Amazon 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"
       }
     ]
   }
   ```

------