

# カスタムコネクタを使用したジョブのオーサリング
<a name="job-authoring-custom-connectors"></a>

AWS Glue Studio では、データソースノードとデータターゲットノードの両方に対し、コネクタと接続を使用できます

**Topics**
+ [データソースに対しコネクタを使用するジョブを作成する](#create-job-connectors)
+ [コネクタを使用するノードのソースプロパティを設定する](#edit-connector-source)
+ [コネクタを使用するノードのターゲットプロパティの設定](#edit-connector-target)

## データソースに対しコネクタを使用するジョブを作成する
<a name="create-job-connectors"></a>

新しいジョブの作成時に、データソースとデータターゲットで使用するコネクタを選択できます。

**データソースまたはデータターゲットに対しコネクタを使用するジョブを作成するには**

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

1. **[Connectors]** (コネクタ) ページの **[Your connections]** (使用する接続)リソースリストで、ジョブで使用する接続を選択してから、**[Create job]** (ジョブを作成) をクリックします。

   または、AWS Glue Studio Glue Studio の **[Jobs]** (ジョブ) ページの **[Create job]** (ジョブを作成) で、**[Source and target added to the graph]** (グラフに追加されたソースとターゲット) を選択します。**[Source]** (ソース) ドロップダウンリストから、ジョブで使用するカスタムコネクタを選択します。また、**[Target]** (ターゲット) のためにコネクタを選択することもできます。  
![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/create-job-data-sources-screenshot.png)

1. **[Create]** (作成) をクリックして、ビジュアルジョブエディタを開きます。

1. 「[コネクタを使用するノードのソースプロパティを設定する](#edit-connector-source)」 にある説明に従い、データソースノードを設定します。

1. 「[AWS Glue Studio でビジュアル ETL ジョブを開始する](edit-nodes-chapter.md)」を参考に、変換、追加のデータストア、データターゲットを追加しながら、ETL ジョブを作成します。

1. 「[ジョブのプロパティを変更する](managing-jobs-chapter.md#edit-jobs-properties)」のように、ジョブのプロパティを設定して、ジョブの実行環境をカスタマイズします。

1. このジョブを保存して、実行します。

## コネクタを使用するノードのソースプロパティを設定する
<a name="edit-connector-source"></a>

データソース用にコネクタを使用するジョブを作成すると、ビジュアルジョブエディタには、コネクタ用に設定されたデータソースのノードを含むジョブグラフが表示されます。このノードには、データソースのプロパティを設定する必要があります。

**コネクタを使用するデータソースノードのプロパティを設定するには**

1. ジョブグラフでコネクタのデータソースノードを選択するか、新しいノードを追加して **[Node type]** (ノードタイプ) でコネクタを選択します。次に、右側のノードの詳細パネルで、**[Data source properties]** (データソースのプロパティ) タブを選択します (まだ選択されていない場合)。  
![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/data-source-properties-connector-screenshot2.png)

1. **[Data source properties]** (データソースのプロパティ) タブで、このジョブに使用する接続を選択します。

   各接続タイプに必要な追加情報を入力します。

------
#### [ JDBC ]
   + **[Data source input type]** (データソースの入力タイプ): テーブル名または SQL クエリのどちらを、データソースとして指定するか選択します。選択した選択に応じて、以下の追加情報を設定する必要があります。
     + [**Table name**] (テーブル名): データソース内のテーブルの名前。データソースで、*テーブル*という用語を使用しない場合、カスタムコネクタの使用状況情報で示されている、適切なデータ構造の名前を指定します (これは、AWS Marketplace で見つかります)。
     + **[Filter predicate]** (フィルター述語): データソースを読み取る際に使用する条件句。これは、データのサブセットを取得するために使用される、`WHERE` 句と類似しています。
     + **[Query code]** (クエリコード): データソースから特定のデータセットを取得するために使用する SQL クエリを入力します。基本 SQL クエリの例は以下のとおりです。

       ```
       SELECT column_list FROM 
                                 table_name WHERE where_clause
       ```
   + [**Schema**] (スキーマ): AWS Glue Studio がデータソースにアクセスする際には、Data Catalog テーブルからメタデータ情報を取得する代わりに、接続内に格納された情報を使用します。このため、データソースのスキーマメタデータを指定する必要があります。[**Add schema**] (スキーマを追加) をクリックして、スキーマエディタを開きます。

     スキーマエディタの使用方法については、「[カスタム変換ノードでスキーマを編集する](transforms-custom.md#transforms-custom-editschema)」を参照してください。
   + **[Partition column]** (パーティション列): (オプション) データの読み取りをパーティション化するには、**[Partition column]** (パーティション列)、**[Lower bound]** (下限)、**[Upper bound]** (上限)、および **[Number of partitions]** (パーティションの数) を、それぞれ指定します。

     `lowerBound` および `upperBound` 値は、パーティションのストライドを決定するために使用されます (テーブル内の行のフィルタリングには使用しません)。返されるテーブル内のすべての行は、パーティション化されています。
**注記**  
列のパーティショニングは、データの読み取りに使用されるクエリに対し、さらにパーティショニング条件を追加します。テーブル名の代わりにクエリを使用する場合は、指定されたパーティショニング条件でクエリが動作することを確認する必要があります。例:  
`"SELECT col1 FROM table1"` の形式のクエリでパーティション列を使用する場合、末尾に `WHERE` 句を追加してそのクエリをテストします。
クエリを `"SELECT col1 FROM table1 WHERE col2=val"` 形式で行っている場合、`AND` とパーティション列を使用する式を使用して、`WHERE` 句を拡張することでそのクエリをテストします。
   + **データ型のキャスティング**: データソースが JDBC で使用できないデータ型を使用している場合、このセクションを使用して、データソースのデータ型を JDBC データ型に変換する方法を指定します。データ型の変換方法には、最大 50 種類までを指定できます。データソース内で同じデータ型を使用しているすべての列は、同じ方法で変換されます。

     例えば、データソース内に `Float` データ型を使用する 3 つの列があり、`Float` データ型に対し JDBC の `String` データ型への変換を指定している場合には、`Float` データ型を使用する 3 つの列がすべて `String` データ型に変換されます。
   + **ジョブのブックマークキー**: ジョブのブックマークは、AWS Glue が状態情報を保持することと、古いデータの再処理を防ぐことを助けます。ブックマークキーとして 1 つ以上の列を指定します。AWS Glue Studio はブックマークキーを使用して ETL ジョブの以前の実行中にすでに処理されたデータを追跡します。カスタムブックマークキーに使用する列は、厳密に単調に増加または減少する必要がありますが、そこにギャップを含むことは可能です。

     ブックマークキーを複数入力した場合は、それらは結合され単一の複合キーを形成します。複合ジョブブックマークキーには、重複する列を含めることはできません。ブックマークキーを指定しない場合、AWS Glue Studio はデフォルトでプライマリキーをブックマークキーとして使用します。ただし、そのプライマリキーが連続して (ギャップなく) 増減することが条件です。ジョブブックマークのプロパティでは有効になっているものの、テーブルにプライマリキーがない場合には、カスタムジョブブックマークキーを指定する必要があります。この指定を行わないと、デフォルトとして使用するプライマリキーの検索が失敗し、ジョブの実行も失敗します。
   + **[Job bookmark keys sorting order]** (Job ブックマークキーの並べ替え順序): キー値を、連続的に増加させるか減少させるかを選択します。

------
#### [ Spark ]
   + [**Schema**] (スキーマ): AWS Glue Studio がデータソースにアクセスする際には、Data Catalog テーブルからメタデータ情報を取得する代わりに、接続内に格納された情報を使用します。このため、データソースのスキーマメタデータを指定する必要があります。[**Add schema**] (スキーマを追加) をクリックして、スキーマエディタを開きます。

     スキーマエディタの使用方法については、「[カスタム変換ノードでスキーマを編集する](transforms-custom.md#transforms-custom-editschema)」を参照してください。
   + [**Connection options:**] (接続オプション): 追加の接続情報やオプションを提供するために、必要に応じて追加のキーと値のペアを入力します。例えば、データベース名、テーブル名、ユーザー名、パスワードを入力します。

     例えば OpenSearch の場合には、[チュートリアル: Elasticsearch 向けの AWS Glue コネクタを使用する](tutorial-elastisearch-connector.md) で説明されているように以下のキーと値のペアを入力します
     + `es.net.http.auth.user` : `username`
     + `es.net.http.auth.pass` : `password` 
     + `es.nodes` : `https://<Elasticsearch endpoint>`
     + `es.port` : `443`
     + `path`: `<Elasticsearch resource>`
     + `es.nodes.wan.only` : `true`

   最小接続オプションの使用例については、GitHub のサンプルテストスクリプト、[MinimalSparkConnectorTest.scala](https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Spark/MinimalSparkConnectorTest.scala) を参照してください。ここでは、接続のために指定する一般的な接続オプションが確認できます。

------
#### [ Athena ]
   + [**Table name**] (テーブル名): データソース内のテーブルの名前。Athena-CloudWatch のログからの読み取り用にコネクタを使用している場合は、テーブル名に `all_log_streams` を入力します。
   + **[Athena schema name:]** (Athena のスキーマ名): テーブルを含むデータベースに対応する、Athena データソース内のスキーマを選択します。Athena-CloudWatch のログからの読み取りのためにコネクタを使用している場合は、スキーマ名として `/aws/glue/name` のように入力します。
   + [**Schema**] (スキーマ): AWS Glue Studio がデータソースにアクセスする際には、Data Catalog テーブルからメタデータ情報を取得する代わりに、接続内に格納された情報を使用します。このため、データソースのスキーマメタデータを指定する必要があります。[**Add schema**] (スキーマを追加) をクリックして、スキーマエディタを開きます。

     スキーマエディタの使用方法については、「[カスタム変換ノードでスキーマを編集する](transforms-custom.md#transforms-custom-editschema)」を参照してください。
   + **[Additional connection options]** (その他の接続オプション): 他の接続情報やオプションを提供する際には、必要に応じて追加のキーと値のペアを入力します。

   この例については、[https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Athena](https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Athena) にある `README.md` ファイルでご確認ください。このドキュメント内に示す手順では、サンプルコードにより、必要最小限の接続オプション (`tableName`、`schemaName`、および `className`) を使用しています。コード例では、これらのオプションを `optionsMap` 変数の一部として指定しており、それらを実際に指定することで接続を使用できるようになります。

------

1. (オプション) 必要な情報を指定した後は、**[Output schema]** (出力スキーマ) タブを選択することで、出力されたデータソース用のデータスキーマを、ノードの詳細パネルに表示できるようになります。このタブに表示されるスキーマは、ジョブグラフに追加される任意の子ノードによって使用されます。

1. (オプション) ノードおよびデータソースのプロパティを設定した後、ノードの詳細パネルの [Data preview] (データのプレビュー) タブを選択して、データソースからのデータセットをプレビューできます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。この機能を使用するには費用がかかり、IAM ロールを指定するとすぐに請求が開始します。

## コネクタを使用するノードのターゲットプロパティの設定
<a name="edit-connector-target"></a>

データターゲットタイプにコネクタを使用する場合は、データターゲットノードのプロパティを設定する必要があります。

**コネクタを使用するデータターゲットノードでプロパティを設定するには**

1. ジョブグラフで、コネクタのデータターゲットノードを選択します。次に、右側のノードの詳細パネルで、**[Data target properties]** (データターゲットのプロパティ) タブを選択します (選択されていない場合)。

1. **[Data target properties]** (データターゲットのプロパティ) タブで、ターゲットへの書き込みに使用する接続を選択します。

   各接続タイプに必要な追加情報を入力します。

------
#### [ JDBC ]
   + [**Connection**] (接続): コネクタで使用する接続を選択します。接続の作成方法については、「[コネクタ用の接続を作成する](creating-connections.md)」を参照してください。
   + **[Table name]** (テーブル名): データターゲット内のテーブルの名前。データターゲットで、*テーブル*という用語を使用しない場合、カスタムコネクタの使用状況情報で示されている、適切なデータ構造の名前を指定します (これは、AWS Marketplace で見つかります)。
   + **[Batch size]** (バッチサイズ) (オプション): 1 回のオペレーションでターゲットテーブルに挿入する、行数またはレコード数を入力します。デフォルト値は 1000 行です。

------
#### [ Spark ]
   + [**Connection**] (接続): コネクタで使用する接続を選択します。以前に接続を作成していない場合は、**[Create connection]** (接続を作成する) をクリックして作成します。接続の作成方法については、「[コネクタ用の接続を作成する](creating-connections.md)」を参照してください。
   + [**Connection options:**] (接続オプション): 追加の接続情報やオプションを提供するために、必要に応じて追加のキーと値のペアを入力します。データベース名、テーブル名、ユーザー名、パスワードを入力することもできます。

     例えば OpenSearch の場合には、[チュートリアル: Elasticsearch 向けの AWS Glue コネクタを使用する](tutorial-elastisearch-connector.md) で説明されているように以下のキーと値のペアを入力します
     + `es.net.http.auth.user` : `username`
     + `es.net.http.auth.pass` : `password` 
     + `es.nodes` : `https://<Elasticsearch endpoint>`
     + `es.port` : `443`
     + `path`: `<Elasticsearch resource>`
     + `es.nodes.wan.only` : `true`

   最小接続オプションの使用例については、GitHub のサンプルテストスクリプト、[MinimalSparkConnectorTest.scala](https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Spark/MinimalSparkConnectorTest.scala) を参照してください。ここでは、接続のために指定する一般的な接続オプションが確認できます。

------

1. 必要な情報を指定した後は、**[Output schema]** (出力スキーマ) タブを選択することで、出力されたデータソース用のデータスキーマを、ノードの詳細パネルに表示できるようになります。