

# 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 ロケーションをポイントしない必要があります (\$1symlink フォルダが含まれる、またはカタログテーブルの `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"
       }
     ]
   }
   ```

------

# Amazon S3 ターゲットの Amazon S3 イベント通知用のクローラーを設定する
<a name="crawler-s3-event-notifications-setup-console-s3-target"></a>

AWS マネジメントコンソール または AWS CLI を使用して Amazon S3 ターゲットの Amazon S3 イベント通知用のクローラーを設定するには、以下の手順を実行します。

------
#### [ AWS マネジメントコンソール ]

1. AWS マネジメントコンソール にサインインし、[https://console.aws.amazon.com/guardduty/](https://console.aws.amazon.com/guardduty/) で GuardDuty コンソールを開きます。

1.  クローラーのプロパティを設定します。詳細については、「[AWS Glue コンソールでのクローラー設定オプションの設定](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-configure-changes-console)」を参照してください。

1.  **[データソースの設定]** セクションに、[データは AWS Glue テーブルにマッピング済みですか?] という質問が表示されています。

    デフォルトでは、**[Not yet]** (まだです) が選択されています。Amazon S3 のデータソースを使用しており、データがまだ AWS Glue テーブルにマップされていないため、これはデフォルトままにしておきます。

1.  **[Data sources]** (データソース) セクションで、**[Add a data source]** (データソースを追加) を選択します。  
![\[Data source configuration interface with options to select or add data sources for crawling.\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/crawler-s3-event-console1.png)

1.  **[Add data source]** (データソースの追加) ダイアログで、Amazon S3 データソースを以下のように設定します。
   +  **[Data source]** (データソース): デフォルトで、Amazon S3 が選択されています。
   +  **[Network connection]** (ネットワーク接続) (オプション): **[Add new connection]** (新しい接続を追加) を選択します。
   +  **[Location of Amazon S3 data]** (Amazon S3 データの場所): デフォルトで、**[In this account]** (このアカウント内) が選択されています。
   +  **[Amazon S3 path]** (Amazon S3 パス): フォルダとファイルがクロールされる Amazon S3 パスを指定します。
   +  **[Subsequent crawler runs]** (それ以降のクローラー実行): クローラーに関する Amazon S3 イベント通知を使用するには、**[Crawl based on events]** (イベントに基づくクロール) を選択します。
   +  **[Include SQS ARN]** (SQS ARN を含める): 有効な SQS ARN を含むデータストアパラメータを指定します。(例えば、`arn:aws:sqs:region:account:sqs`) 
   +  **[Include dead-letter SQS ARN]** (配信不能 SQS ARN を含める) (オプション): 有効な Amazon 配信不能 SQS ARN を指定します。(例えば、`arn:aws:sqs:region:account:deadLetterQueue`) 
   +  **[Add an Amazon S3 data source]** (Amazon S3 データソースを追加) を選択します。  
![\[Add data source dialog for S3, showing options for network connection and crawl settings.\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/crawler-s3-event-console2.png)

------
#### [ AWS CLI ]

 次に示すのは、イベント通知を使用して Amazon S3 ターゲットバケットをクロールするようにクローラーを設定するための Amazon S3 AWS CLI コールの例です。

```
Create Crawler:
aws glue update-crawler \
    --name myCrawler \
    --recrawl-policy RecrawlBehavior=CRAWL_EVENT_MODE \
    --schema-change-policy UpdateBehavior=UPDATE_IN_DATABASE,DeleteBehavior=LOG
    --targets '{"S3Targets":[{"Path":"s3://amzn-s3-demo-bucket/", "EventQueueArn": "arn:aws:sqs:us-east-1:012345678910:MyQueue"}]}'
```

------

# Data Catalog テーブルの Amazon S3 イベント通知用のクローラーを設定する
<a name="crawler-s3-event-notifications-setup-console-catalog-target"></a>

Data Catalog テーブルがある場合は、AWS Glue コンソールを使用して Amazon S3 イベント通知用のクローラーを設定します。

1.  クローラーのプロパティを設定します。詳細については、「[AWS Glue コンソールでのクローラー設定オプションの設定](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-configure-changes-console)」を参照してください。

1.  **[データソースの設定]** セクションに、[データは AWS Glue テーブルにマッピング済みですか?] という質問が表示されています。

    **[Yes]** (はい) を選択して、Data Catalog からの既存のテーブルをデータソースとして選択します。

1.  **[Glue tables]** (Glue テーブル) セクションで、**[Add tables]** (テーブルを追加する) を選択します。  
![\[Data source configuration interface with options to select existing Glue tables or add new ones.\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/crawler-s3-event-console1-cat.png)

1.  **[Add table]** (テーブルを追加する) モーダルで、データベースとテーブルを設定します。
   +  **[Network connection]** (ネットワーク接続) (オプション): **[Add new connection]** (新しい接続を追加) を選択します。
   +  **[Database]** (データベース): Data Catalog 内のデータベースを選択します。
   +  **[Tables]** (テーブル): Data Catalog 内のデータベースから 1 つ、または複数のテーブルを選択します。
   +  **[Subsequent crawler runs]** (それ以降のクローラー実行): クローラーに関する Amazon S3 イベント通知を使用するには、**[Crawl based on events]** (イベントに基づくクロール) を選択します。
   +  **[Include SQS ARN]** (SQS ARN を含める): 有効な SQS ARN を含むデータストアパラメータを指定します。(例えば、`arn:aws:sqs:region:account:sqs`) 
   +  **[Include dead-letter SQS ARN]** (配信不能 SQS ARN を含める) (オプション): 有効な Amazon 配信不能 SQS ARN を指定します。(例えば、`arn:aws:sqs:region:account:deadLetterQueue`) 
   +  [**確認**] を選択してください。  
![\[Add Glue tables dialog with network, database, tables, and crawler options.\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/crawler-s3-event-console2-cat.png)