

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

# AWS Glue で ETL プロセスを に変換する AWS Schema Conversion Tool
<a name="CHAP-converting-aws-glue-api-process"></a>

以下のセクションでは、Python で AWS Glue API オペレーションを呼び出す変換について説明します。詳細については、* AWS Glue 開発者ガイド* の「[Python での AWS Glue ETL スクリプト](https://docs.aws.amazon.com//glue/latest/dg/aws-glue-programming-python.html)」を参照してください。

**Topics**
+ [ステップ 1: データベースを作成する](#CHAP-converting-aws-glue-step-api-create-db)
+ [ステップ 2: 接続を作成する](#CHAP-converting-aws-glue-step-api-connection)
+ [ステップ 3: AWS Glue クローラを作成する](#CHAP-converting-aws-glue-step-api-crawler)

## ステップ 1: データベースを作成する
<a name="CHAP-converting-aws-glue-step-api-create-db"></a>

最初のステップは、 [AWS SDK API](https://docs.aws.amazon.com/glue/latest/webapi/API_CreateDatabase.html) を使用して 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: 接続を作成する
<a name="CHAP-converting-aws-glue-step-api-connection"></a>

[AWS SDK API](https://docs.aws.amazon.com/glue/latest/webapi/API_CreateConnection.html) を使用して、データカタログに新しい接続を作成します。

次の例は、Python API の [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-connections.html](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-connections.html)メソッドの使用を示しています 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 クローラを作成する
<a name="CHAP-converting-aws-glue-step-api-crawler"></a>

次に、 AWS Glue カタログに入力する AWS Glue クローラを作成します。詳細については、『*AWS Glue デベロッパーガイド*』の「[クローラーを使用したデータのカタログ化](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html)」を参照してください。

クローラーの作成における最初のステップでは、[AWS SDK API](https://docs.aws.amazon.com//glue/latest/webapi/API_CreateCrawler.html) を使用して、データカタログに新しいデータベースを作成します。開始する前にまず、`delete_crawler` オペレーションを使用して、以前のバージョンをすべて削除する必要があります。

クローラーを作成するときは、いくつかの考慮事項が適用されます。
+ クローラー名には、`<redshift_node_name>_<redshift_database_name>_<redshift_shema_name>` 形式を使用します (例: `abcde03_dev_ora_glue`)。
+ 既存の IAM ロールを使用します。IAM ロールの作成の詳細については、*『IAM ユーザーガイド』*の[「IAM ロールの作成」](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create.html)を参照してください。
+ 前のステップで作成したデータベースの名前を使用します。
+ `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 | 