翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Glue で ETL プロセスを に変換する AWS Schema Conversion Tool
以下のセクションでは、Python で AWS Glue API オペレーションを呼び出す変換について説明します。詳細については、 AWS Glue 開発者ガイド の「Python での AWS Glue ETL スクリプト」を参照してください。
ステップ 1: データベースを作成する
最初のステップでは、 AWS SDK API を使用して AWS Glue データカタログに新しいデータベースを作成します。データカタログに定義したテーブルは、データベースに追加されます。データベースは、テーブルを整理するために使用されます 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 SDK API を使用して、データカタログに新しい接続を作成します。
次の例は、Python API の 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) – 必須。この接続のパラメータとして使用されるキーと値のペアのリスト (例: JDBC 接続 URL、ユーザー名、およびパスワード)。 -
PhysicalConnectionRequirements(dict) - 物理接続の要件。以下の内容が含まれます。-
SubnetId(UTF-8 文字列) - 接続で使用されるサブネットの ID。 -
SecurityGroupIdList(list) - 接続で使用されるセキュリティグループ ID リスト。 -
AvailabilityZone(UTF-8 文字列) - 必須。そのエンドポイントを含むアベイラビリティーゾーン。このパラメータは廃止されました。
-
ステップ 3: AWS Glue クローラーの作成
次に、 AWS Glue カタログに入力する AWS Glue クローラを作成します。詳細については、『AWS Glue デベロッパーガイド』の「クローラーを使用したデータのカタログ化」を参照してください。
クローラーの作成における最初のステップでは、AWS SDK API を使用して、データカタログに新しいデータベースを作成します。開始する前にまず、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/%) を使用します。
次の例では、既存のクローラーを削除し、 AWS Glueの Python API を使用して新しいクローラーを作成します。
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 |