でETLプロセスを に変換 AWS Glue する AWS Schema Conversion Tool - AWS Schema Conversion Tool

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

でETLプロセスを に変換 AWS Glue する AWS Schema Conversion Tool

以下のセクションでは、Python で オペレーションを呼び AWS Glue API出す変換について説明します。詳細については、「 デベロッパーガイド」の「Python のプログラム AWS Glue ETLスクリプト」を参照してください。 AWS Glue

ステップ 1: データベースを作成する

最初のステップは、 を使用して AWS Glue データカタログに新しいデータベースを作成するAWS SDKことですAPI。データカタログに定義したテーブルは、データベースに追加されます。データベースは、 のテーブルを整理するために使用されます AWS Glue。

次の例は、Python API for の create_databaseメソッドを示しています AWS Glue。

response = client.create_database( DatabaseInput={ 'Name': 'database_name’, 'Description': 'description', 'LocationUri': 'string', 'Parameters': { 'parameter-name': 'parameter value' } } )

Amazon Redshift を使用している場合のデータベース名は次のとおりです。

{redshift_cluster_name}_{redshift_database_name}_{redshift_schema_name}

この例では、Amazon Redshift クラスターのフルネームは次のようになります。

rsdbb03.apq1mpqso.us-west-2.redshift.amazonaws.com

正しい形式のデータベース名の例を以下に示します。この場合は、rsdbb03 のようになります。これは、クラスターエンドポイントのフルネームの最初の部分です。データベースの名前は dev で、スキーマは ora_glueです。

rsdbb03_dev_ora_glue

ステップ 2: 接続を作成する

を使用して、データカタログに新しい接続を作成しますAWS SDKAPI

次の例は、 API用の Python の create_connectionメソッドの使用を示しています AWS Glue。

response = client.create_connection( ConnectionInput={ 'Name': 'Redshift_abcde03.aabbcc112233.us-west-2.redshift.amazonaws.com_dev', 'Description': 'Created from SCT', 'ConnectionType': 'JDBC', 'ConnectionProperties': { 'JDBC_CONNECTION_URL': 'jdbc:redshift://aabbcc03.aabbcc112233.us-west-2.redshift.amazonaws.com:5439/dev', 'USERNAME': 'user_name', 'PASSWORD': 'password' }, 'PhysicalConnectionRequirements': { 'AvailabilityZone': 'us-west-2c', 'SubnetId': 'subnet-a1b23c45', 'SecurityGroupIdList': [ 'sg-000a2b3c', 'sg-1a230b4c', 'sg-aba12c3d', 'sg-1abb2345' ] } } )

create_connection で使用されているパラメータは次のとおりです。

  • Name (UTF-8 文字列) – 必須。Amazon Redshift では、接続名は次のような形式になります: Redshift_<Endpoint-name>_<redshift-database-name> (例: Redshift_abcde03_dev)

  • Description (UTF-8 文字列) – 接続の説明。

  • ConnectionType (UTF-8 文字列) – 必須。接続のタイプ。現在、 JDBC のみがサポートされています。 SFTP はサポートされていません。

  • ConnectionProperties (dict) – 必須。接続 、URLユーザー名、パスワードなど、このJDBC接続のパラメータとして使用されるキーと値のペアのリスト。

  • PhysicalConnectionRequirements (dict) - 物理接続の要件。以下の内容が含まれます。

    • SubnetId (UTF-8 文字列) – 接続で使用されるサブネットの ID。

    • SecurityGroupIdList (list) - 接続で使用されるセキュリティグループ ID リスト。

    • AvailabilityZone (UTF-8 文字列) – 必須。そのエンドポイントを含むアベイラビリティーゾーン。このパラメータは廃止されました。

ステップ 3: AWS Glue クローラーの作成

次に、 AWS Glue カタログに入力する AWS Glue クローラーを作成します。詳細については、『AWS Glue デベロッパーガイド』の「クローラーを使用したデータのカタログ化」を参照してください。

クローラーを追加する最初のステップは、 を使用してデータカタログに新しいデータベースを作成することですAWS SDKAPI。開始する前にまず、delete_crawler オペレーションを使用して、以前のバージョンをすべて削除する必要があります。

クローラーを作成するときは、いくつかの考慮事項が適用されます。

  • クローラー名には、<redshift_node_name>_<redshift_database_name>_<redshift_shema_name> 形式を使用します (例: abcde03_dev_ora_glue)。

  • 既に存在する IAMロールを使用します。IAM ロールの作成の詳細については、「 ユーザーガイド」のIAM「ロールの作成IAM」を参照してください。

  • 前のステップで作成したデータベースの名前を使用します。

  • ConnectionName パラメータ (必須) を使用します。

  • path パラメータには、JDBCターゲットへのパスを使用します。例: dev/ora_glue/%

次の例では、既存のクローラーを削除し、Python API for を使用して新しいクローラーを作成します AWS Glue。

response = client.delete_crawler( Name='crawler_name' ) response = client.create_crawler( Name='crawler_name', Role= ‘IAM_role’, DatabaseName='database_name’, Description='string', Targets={ 'S3Targets': [ { 'Path': 'string', 'Exclusions': [ 'string', ] }, ], 'JdbcTargets': [ { 'ConnectionName': ‘ConnectionName’, 'Path': ‘Include_path’, 'Exclusions': [ 'string', ] }, ] }, Schedule='string', Classifiers=[ 'string', ], TablePrefix='string', SchemaChangePolicy={ 'UpdateBehavior': 'LOG'|'UPDATE_IN_DATABASE', 'DeleteBehavior': 'LOG'|'DELETE_FROM_DATABASE'|'DEPRECATE_IN_DATABASE' }, Configuration='string' )

1 つ以上のデータストアに接続してデータ構造を決定し、データカタログにテーブルを書き込むクローラーを作成して、実行します。スケジュールに基づいてクローラーを実行することができます (以下参照)。

response = client.start_crawler( Name='string' )

この例では、Amazon Redshift をターゲットとして使用しています。Amazon Redshift データ型は、クローラーの実行後に次の方法で AWS Glue データ型にマッピングされます。

Amazon Redshift のデータ型 AWS Glue データ型
smallint smallint
integer int
bigint bigint
decimal decimal(18,0)
decimal(p,s) decimal(p,s)
real double
double precision double
boolean boolean
char string
varchar string
varchar(n) string
date date
timestamp timestamp
timestamptz timestamp