■ はじめに
https://dk521123.hatenablog.com/entry/2019/10/14/000000
https://dk521123.hatenablog.com/entry/2021/04/17/001930
の続き。 boto3 を使ったクローラ作成時に結構エラーが出たので、 備忘録的にメモしておく。
目次
【1】各設定値について 1)Targets 2)Configuration 3)SchemaChangePolicy 4)DatabaseName 5)TablePrefix 【2】サンプル 例1:クローラ作成 / S3パスへのクローリング 例2:クローラ作成 / テーブルへのクローリング
【1】各設定値について
での各設定値の簡単なメモ。
1)Targets
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-targets.html
https://docs.aws.amazon.com/ja_jp/glue/latest/webapi/API_CrawlerTargets.html
クローラ対象の指定。 * CatalogTargets => データカタログを対象とする * DynamoDBTargets => DynamoDBを対象とする * JdbcTargets => JDBC(DB/RDS)を対象とする * S3Targets => データカタログを対象とする
2)Configuration
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/crawler-configuration.html
3)SchemaChangePolicy
テーブル定義に変更した場合、どう振る舞うかを設定する
https://docs.aws.amazon.com/glue/latest/webapi/API_SchemaChangePolicy.html
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/crawler-configuration.html
DeleteBehavior (削除された場合の振る舞い)
* LOG => 変更を無視(削除しない)し、ログに書き込む * DELETE_FROM_DATABASE => Data Catalog からテーブルとパーティションを削除 * DEPRECATE_IN_DATABASE (デフォルト) => Data Catalog でテーブルを廃止としてマークを付ける
UpdateBehavior (更新された場合の振る舞い)
* LOG => 変更を無視(更新しない)し、ログに書き込む * UPDATE_IN_DATABASE => AWS Glue データカタログ のテーブルを更新
4)DatabaseName
* 出力先のデータベース名
5)TablePrefix
* 出力するテーブル名に対してプレフィックスを付加 * e.g. TablePrefix: 'ex_' => ex_person, ex_employee
【2】サンプル
例1:クローラ作成 / S3パスへのクローリング
import boto3 import yaml s3_client = boto3.client('s3') glue_client = boto3.client('glue') # S3上にあるYAMLファイルを取り込む response = s3_client.get_object( Bucket='bucket-name', Key="xxx/yyyy/zzzzz/crawler.yaml") config = yaml.safe_load(response["Body"]) # ★ここでクローラ作成を実行★ response_of_create_crawler = \ glue_client.create_crawler(**config) print(response_of_create_crawler)
crawler.yaml
Name: 'sample-crawler' Description: 'This is a sample crawler' Role: 'Glue_IAMRole' Database: 'sample_db' TablePrefix: 'demo_glue_' # https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html # Configuration: "{\"Version\": 1.0,\"CrawlerOutput\": {\"Partitions\":{\"AddOrUpdateBehavior"\: \"InheritFromTable\"}}}" # って書き方もできる Configuration: | { "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" } } } SchemaChangePolicy: UpdateBehavior: 'LOG' Targets: S3Targets: - Path: s3://your-bucket/aaaa/bbbb - Path: s3://your-bucket/cccc/dddd Tags: Name: 'sample-crawler'
例2:クローラ作成 / テーブルへのクローリング
* Pythonコード自体は、そのままなので省略
注意点
* テーブルへのクローリングする際には、 事前にクロールするテーブルがないとエラーが発生する
crawler.yaml
Name: 'sample2-crawler' Description: 'This is a sample crawler' Role: 'Glue_IAMRole' # https://docs.aws.amazon.com/ja_jp/glue/latest/dg/crawler-configuration.html Configuration: | { "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }, "Tables": { "AddOrUpdateBehavior": "MergeNewColumns" } } } # https://docs.aws.amazon.com/glue/latest/webapi/API_SchemaChangePolicy.html SchemaChangePolicy: UpdateBehavior: 'UPDATE_IN_DATABASE' DeleteBehavior: 'DEPRECATE_IN_DATABASE' Targets: CatalogTargets: - DatabaseName: 'sample_db1' Tables: - 'sample_table1' - DatabaseName: 'sample_db2' Tables: - 'sample_table2' Tags: Name: 'sample2-crawler'
関連記事
AWS Glue ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/01/221926
AWS Glue ~ Boto3 / 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/14/000000
AWS Glue ~ Boto3 / 基本編 ~
https://dk521123.hatenablog.com/entry/2021/04/17/001930
AWS Glue ~ Boto3 / セキュリティ設定編 ~
https://dk521123.hatenablog.com/entry/2020/04/08/171208
AWS Glue ~ Boto3 / Glue connection編 ~
https://dk521123.hatenablog.com/entry/2020/01/29/224525
Pulumi ~ AWS Glue のデプロイ ~
https://dk521123.hatenablog.com/entry/2022/03/02/122037