AWS Glue Studio でのコネクタと接続の使用 - AWS Glue Studio

AWS Glue Studio でのコネクタと接続の使用

AWS Glue には、JDBC 接続を使用する最も一般的なデータストア (Amazon Redshift、Amazon Aurora、Microsoft SQL Server、MySQL、MongoDB、PostgreSQL など) に対するサポートが組み込まれています。また、AWS Glue では、抽出、変換、ロード (ETL) ジョブ用にカスタム JDBC ドライバも使用できます。SaaS アプリケーションなど、ネイティブにサポートされていないデータストアに対しては、コネクタを使用することができます。

コネクタ とは AWS Glue Studio 内でデータストアに対するアクセスを支援するための、オプションのコードパッケージです。AWS Marketplace で提供されている複数のコネクタをサブスクライブすることができます。

ETL ジョブの作成時には、ネイティブにサポートされているデータストアを使用するか、AWS Marketplace からのコネクタ、または独自のカスタムコネクタを使用できます。コネクタを使用するには、最初にコネクタのための接続を作成する必要があります。接続には、特定のデータストアに接続するために必要なプロパティが含まれます。ETL ジョブでは、データソースおよびデータターゲットとの接続を使用します。コネクタと接続は、データストアへのアクセスを容易にするために連携して動作します。

コネクタと接続の使用に関する概要

接続には、特定のデータストアに接続するために必要なプロパティが含まれます。作成した接続は AWS Glue Data Catalog に保存されます。コネクタを選択し、そのコネクタに基づいて接続を作成します。

ネイティブにサポートされていないデータストアへのコネクタは、AWS Marketplace 内でサブスクライブすることができます。その後、接続を作成するときにこれらのコネクタを使用します。さらに、デベロッパーは独自のコネクタを作成し、それを接続の作成に使用することもできます。

注記

カスタムのコネクタ、または AWS Marketplace からのコネクタを使用して作成された接続は、タイプを AWS Glue Studio として、AWS Glue コンソール内の UNKNOWN に表示されます。

以下のステップで、AWS Glue Studio でコネクタを使用するための全体的なプロセスを説明します。

  1. AWS Marketplace 内でコネクタをサブスクライブするか、独自のコネクタを開発して、AWS Glue Studio にアップロードします。詳細については、「AWS Glue Studio にコネクタを追加する」を参照してください。

  2. コネクタの使用方法に関する情報を確認します。この情報は、コネクタ製品ページの [Usage] (使用方法) タブに表示されます。例えば、[Usage] (使用状況) タブで、「AWS Glue Connector for Google BigQuery」をクリックした場合、[Additional Resources] (その他のリソース) セクションには、このコネクタの使用に関するブログへのリンクが表示されます。他のコネクタについては、コネクタの製品ページ Cloudwatch Logs connector for AWS Glue のように、[Overview] (概要) セクションで使用手順に関するリンクが表示されます。

  3. 接続を作成します。使用するコネクタを選択し、ログイン認証情報、URI 文字列、仮想プライベートクラウド (VPC) 情報など、接続に関する追加情報を提供します。詳細については、「コネクタ用の接続を作成する」を参照してください。

  4. ジョブ用に IAM ロールを作成します。ジョブは、作成時に指定する [IAM role] (IAM ロール) のアクセス許可があることを想定します。この IAM ロールには、データストアを承認し、そこからのデータ抽出、およびデータを書き込むために必要なアクセス許可を有する必要があります。詳細については、「ETL ジョブに必要な IAM アクセス許可を確認する」および「コネクタの使用に必要なアクセス許可」を参照してください。

  5. ETL ジョブを作成し、その ETL ジョブのためにデータソースプロパティを設定します。カスタムコネクタプロバイダーの指示に従って、接続オプションと認証情報を指定します。詳細については、「カスタムコネクタを使用したジョブのオーサリング」を参照してください。

  6. AWS Glue Studio での ETL ジョブの編集 での説明を参考に、変換を追加するか新しいデータストアを追加しながら、ETL ジョブをカスタマイズします。

  7. データターゲットにコネクタを使用している場合は、ETL ジョブ用のデータターゲットプロパティを設定します。カスタムコネクタプロバイダーの指示に従って、接続オプションと認証情報を指定します。詳細については、「カスタムコネクタを使用したジョブのオーサリング」を参照してください。

  8. ジョブのプロパティを変更する での説明のように、ジョブのプロパティを構成して、ジョブの実行環境をカスタマイズします。

  9. ジョブを実行します。

AWS Glue Studio にコネクタを追加する

コネクタとは、データストアと AWS Glue 間の通信を容易にするための、一連のコードのことです。AWS Marketplace で提供されているコネクタをサブスクライブするか、独自のカスタムコネクタを作成することが可能です。

AWS Marketplace コネクタをサブスクライブする

AWS Glue Studio を使用すると、AWS Marketplace からコネクタを簡単に導入できます。

AWS Marketplace から AWS Glue Studio にコネクタを追加する方法
  1. AWS Glue Studio コンソールのナビゲーションペインで、[Connectors] (コネクタ) をクリックします。

  2. [Connectors] (コネクタ) ページで、[Go to AWS Marketplace] をクリックします。

  3. AWS Marketplace の [Featured products] (注目の製品) で、使用するコネクタを選択します。表示されているコネクタの 1 つを選択するか、または検索することができます。コネクタを、名前またはタイプにより検索したり、オプションを使用して検索結果を絞り込むことができます。

    表示されているコネクタのいずれかを使用するには、[View product] (製品を表示する) をクリックします。検索結果からコネクタを見つけた場合は、そのコネクタの名前を選択します。

  4. コネクタの製品ページで、そのコネクタに関するタブを開いて情報を表示します。そのコネクタを購入する場合は、[Continue to Subscribe] (続行してサブスクライブする) をクリックします。

  5. 支払い情報を入力し、[Continue to Configure] (設定に進む) をクリックします。

  6. [Configure this software] (このソフトウェアを設定する) ページで、デプロイの方法と使用するコネクタのバージョンを選択します。[Continue to Launch] (続行して起動する) をクリックします。

  7. [Launch this software] (このソフトウェアを起動する) ページでは、コネクタプロバイダから提供される [Usage Instructions] (使用手順) を確認することができます。続行する準備が整ったら、[Activate connection in AWS Glue Studio] (AWS Glue Studio で接続をアクティブ化にする) を選択します。

    少し待機すると、コンソールに、AWS Glue Studio の [Create marketplace connection] (マーケットプレイス接続の作成) ページが表示されます。

  8. コネクタ用の接続を作成する の説明を参考に、このコネクタを使用する接続を作成します。

    または、[Activate connector only] (アクティブなコネクタのみ) を選択し、この時点での接続の作成をスキップすることも可能です。後にコネクタを使用する際には、先に接続を作成する必要があります。

カスタムコネクタを作成する

独自のコネクタを作成し、そのコネクタのコードを AWS Glue Studio にアップロードすることもできます。

カスタムコネクタは、AWS Glue Spark ランタイム API を介して AWS Glue Studio に組み込まれます。Spark、Athena、または JDBC インターフェイスと準拠している任意のコネクタを、AWS Glue Spark ランタイムを使用してプラグインすることができます。これにより、カスタムコネクタで使用できる任意の接続オプションを渡すことができます。

AWS Glue 接続でのすべての接続プロパティをカプセル化して、ETL ジョブにその接続名を指定することができます。Data Catalog 接続を統合することで、単一の Spark アプリケーションからの複数の呼び出しや、異なるアプリケーション間での同じ接続プロパティの使用ができるようにします。

接続には、他のオプションを指定することもできます。AWS Glue Studio が生成するジョブスクリプトには、指定された接続オプションを使用してコネクタをプラグインする接続を使用する Datasource エントリが含まれています。例:

Datasource = glueContext.create_dynamic_frame.from_options(connection_type = "custom.jdbc", connection_options = {"dbTable":"Account","connectionName":"my-custom-jdbc- connection"}, transformation_ctx = "DataSource0")
AWS Glue Studio にカスタムコネクタを追加する方法
  1. カスタムコネクタ用のコードを作成します。詳細については、「カスタムコネクタの開発」を参照してください。

  2. コネクタに、AWS Glue 機能に対するサポートを追加します。以下に、これらの機能について、さらにそれらが AWS Glue Studio で生成されたジョブスクリプトでどのように使用されるかに関する例をいくつか挙げてみます。

    • データ型のマッピング – コネクタは、基盤データストアから列を読み込む際に、列をタイプキャストすることができます。例えば {"INTEGER":"STRING"}dataTypeMapping では、レコードの解析と DynamicFrame の構築時に、Integer 型のすべての列を String 型の列に変換します。これにより、ユーザーは任意のタイプに列をキャストすることができます。

      DataSource0 = glueContext.create_dynamic_frame.from_options(connection_type = "custom.jdbc", connection_options = {"dataTypeMapping":{"INTEGER":"STRING"}", connectionName":"test-connection-jdbc"}, transformation_ctx = "DataSource0")
    • 並列読み取りのパーティション化 – AWS Glue は、列にあるデータを分割することで、データストアから並列データを読み取れるようにします。パーティション列、パーティションの下限、パーティションの上限、およびパーティション数を指定する必要があります。この機能により、データの並列処理と、Spark アプリケーションに割り当てる複数の Spark エグゼキュータの使用が可能になります。

      DataSource0 = glueContext.create_dynamic_frame.from_options(connection_type = "custom.jdbc", connection_options = {"upperBound":"200","numPartitions":"4", "partitionColumn":"id","lowerBound":"0","connectionName":"test-connection-jdbc"}, transformation_ctx = "DataSource0")
    • AWS Secrets Manager を使用した認証情報の保存 – Data Catalog 接続には、AWS Secrets Manager に保存されているシークレットのための secretId も含めることができます。AWS シークレットにより、承認と認証に関する情報を安全に保存し、また、AWS Glue の実行時にその情報を提供できます。または、以下に示すように、Spark スクリプトから secretId を指定することもできます。

      DataSource = glueContext.create_dynamic_frame.from_options(connection_type = "custom.jdbc", connection_options = {"connectionName":"test-connection-jdbc", "secretId"-> "my-secret-id"}, transformation_ctx = "DataSource0")
    • 行述語と列射影によるソースデータのフィルタリング – AWS Glue Spark ランタイムでは、行述語と列射影を使用しながら、SQL クエリをプッシュダウンすることでソースにあるデータをフィルタリングすることもできます。これにより ETL ジョブは、フィルタリングされたデータを、プッシュダウンをサポートするデータストアからより迅速にロードできます。SELECT id, name, department FROM department WHERE id < 200. は、JDBC データ・ソースにプッシュダウンされた SQL クエリの例です。

      DataSource = glueContext.create_dynamic_frame.from_options(connection_type = "custom.jdbc", connection_options = {"query":"SELECT id, name, department FROM department WHERE id < 200","connectionName":"test-connection-jdbc"}, transformation_ctx = "DataSource0")
    • ジョブのブックマーク – AWS Glue は、JDBC ソースからのデータの増分ロードをサポートしています。AWS Glue は、最後に処理された (データストアからの) レコードを追跡し、後続の ETL ジョブ実行で新しいデータレコードを処理します。ジョブのブックマークは、その列が順番に増減しているのであれば、ブックマークキーのデフォルト列としてプライマリキーを使用します。ジョブのブックマークの詳細については、AWS Glue デベロッパーガイドの「ジョブ ブックマーク」を参照してください。

      DataSource0 = glueContext.create_dynamic_frame.from_options(connection_type = "custom.jdbc", connection_options = {"jobBookmarkKeys":["empno"], "jobBookmarkKeysSortOrder" :"asc", "connectionName":"test-connection-jdbc"}, transformation_ctx = "DataSource0")
  3. カスタムコネクタを JAR ファイルとしてパッケージ化し、そのファイルを Amazon S3 にアップロードします。

  4. カスタムコネクタをテストします。詳細については、GitHub の「Glue カスタムコネクタ: ローカル検証テストガイド」で手順を参照してください。

  5. AWS Glue Studio コンソールのナビゲーションペインで、[Connectors] (コネクタ) をクリックします。

  6. [Connectors] (コネクタ) ページで、[Create custom connector] (カスタムコネクタを作成) をクリックします。

  7. [Create custom connector] (カスタムコネクタの作成) ページで、次の情報を入力します。

    • カスタムコード JAR ファイルの Amazon S3 内ロケーションへのパス。

    • AWS Glue Studio によって使用されるコネクタの名前。

    • コネクタのタイプ (JDBCSpark、または Athena)。

    • コネクタを使用するために AWS Glue Studio が呼び出す、カスタムコード内のエントリポイントの名前。

      • JDBC コネクタの場合、このフィールドは JDBC ドライバのクラス名です。

      • Spark コネクタの場合、このフィールドは、データソースの完全修飾クラス名、またはそのエイリアスである必要があります。これは、format 演算子を使用して Spark データソースをロードする際に使用します。

    • (JDBC のみ) データストアの JDBC 接続で使用されるベース URL。

    • (オプション) カスタムコネクタの説明。

  8. [Create connector] (コネクターを作成) をクリックします。

  9. コネクタ用の接続を作成する の説明を参考に、[Connectors] (コネクタ) ページで、そのコネクタを使用する接続を作成します。

コネクタ用の接続を作成する

AWS Glue 接続は、特定のデータストアの接続情報を保存する Data Catalog オブジェクトです。接続には、ログイン認証情報、URI 文字列、Virtual Private Cloud (VPC) 情報などが含まれます。データカタログで接続を作成することで、クローラーまたはジョブを作成するたびに、すべての接続の詳細を指定する必要がなくなります。

注記

AWS Glue コンソールを使用して作成された接続は、AWS Glue Studio には表示されません。

コネクタのために接続を作成するには
  1. AWS Glue Studio コンソールのナビゲーションペインで、[Connectors] (コネクタ) をクリックします。

  2. 接続を作成するコネクタを選択し、[Create connection] (接続を作成する) をクリックします。

  3. [Create connection] (接続の作成) ページで、接続の名前、およびその説明 (オプション) を入力します。

  4. 接続の詳細を入力します。選択したコネクタのタイプに応じて、追加情報の入力を促されます。

    • ユーザー名やパスワードなど、必要な認証情報を入力するか、AWS シークレットを選択します。

    • JDBC を使用するコネクタの場合は、データストアに JDBC URL を作成するために必要な情報を入力します。

    • Virtual Private Cloud (VPC) を使用する場合は、VPC のネットワーク情報を入力します。

  5. [Create connection] (接続の作成) を選択します。

    再び [Connectors] (コネクタ) ページが表示され、作成された接続が情報バナーに表示されます。AWS Glue Studio で説明したように、コネクタを使用するジョブを作成する ジョブで接続を使用することができるようになりました。

Kafka 接続を作成する

Kafka 接続を作成するときには、ドロップダウンメニューから Kafka を選択すると追加設定が表示され、構成できるようになります。

  • Kafka クラスターの詳細

  • 認証

  • 暗号化

  • ネットワークオプション

Kafka クラスターの詳細を設定する

  1. クラスターの場所を選択します。Amazon Managed Streaming for Apache Kafka (MSK) クラスターまたは Customer managed Apache Kafka クラスターから選択できます。Amazon Managed streaming for Apache Kafka の詳細については、Amazon Managed Streaming for Apache Kafka (MSK) を参照してください。

    注記

    Amazon Managed Streaming for Apache Kafka は TLS および SASL/SCRAM-SHA-512 認証方法のみをサポートします。

    
              スクリーンショットは、クラスターの場所を選択したり、Kafka ブートストラップサーバーの URL を入力したりすることができる Kafka クラスターの詳細セクションを示しています。
  2. Kafka ブートストラップサーバーの URL を入力します。各サーバーをカンマで区切ることで、複数のサーバーを入力できます。URL の末尾に :<port number> を足してポート番号を入力します。

    例: b-1.vpc-test-2.034a88o.kafka-us-east-1.amazonaws.com:9094

認証方法の選択


          スクリーンショットには、Kafka 認証方法を選択できるドロップダウンメニューが表示されています。

AWS Glue は、認証用の Simple Authentication and Security Layer (SASL) フレームワークをサポートしています。SASL フレームワークは、さまざまな認証メカニズムをサポートしており、AWS Glue は、SCRAM プロトコル (ユーザーネームとパスワード) と GSSAPI (Kerberos プロトコル) の両方を提供します。

ドロップダウンメニューから認証方法を選択するときには、次のクライアント認証方法を選択できます。

  • None - 認証なし。これは、テスト目的で接続する場合に便利です。

  • SASL/SCRAM-SHA-512 - これを選択すると、この認証方法のための認証情報が指定されます。2 つのオプションがあります。

    • AWS Secrets Manager を使用 (推奨) - このオプションを選択すると、認証情報が AWS Secrets Manager に保存され、必要になった際に AWS Glue からその情報へアクセスすることを許可できます。SSL または SASL 認証の認証情報を格納するシークレットを指定します。

      
                  スクリーンショットは、認証方法が SALS/SCRAM-SHA-512 の場合の認証情報オプションを示しています。
    • ユーザー名とパスワードを直接提供します。

  • SASL/GSSAPI (Kerberos) - このオプションを選択すると、キータブファイル、krb5.conf ファイルの場所を選択して、Kerberos プリンシパル名と Kerberos サービス名を入力することができます。キータブファイルと krb5.conf ファイルの場所は、Simple Storage Service (Amazon S3) がある場所の中にする必要があります。MSK は SALS/GSSAPI をまだサポートしていないため、このオプションは Customer Managed Apache Kafka クラスターでのみ使用できます。詳細については、MIT Kerberos ドキュメント: キータブを参照してください。

  • SSL クライアント認証 - このオプションを選択すると、Simple Storage Service (Amazon S3) を参照することで Kafka クライアントキーストアの場所を選択できます。オプションで、Kafka クライアントキーストアのパスワードと Kafka クライアントキーのパスワードを入力できます。


          スクリーンショットは、SSL が認証方法である場合の暗号化オプションを示しています。

暗号化設定の構成

  1. Kafka 接続に SSL 接続が必要な場合は、[Require SSL connection] (SSL 接続が必要) チェックボックスを選択します。SSL 経由で接続できない場合、接続は失敗することに留意してください。暗号化用の SSL は、任意の認証方法 (SASL/SCRAM-SHA-512、SASL/GSSAPI、SSL クライアント認証) で使用することができるオプションです。

    認証方式が [SSL client authentication] (SSL クライアント認証) に設定されている場合、このオプションは自動的に選択され、変更を防ぐために無効化されます。

  2. (オプション)。認証機関 (CA) からプライベート証明書の場所を選択します。証明書の場所は S3 が存在する場所の中である必要があることに留意してください。[Browse] (参照) を選択して、接続された S3 バケットからファイルを選択します。パスは s3://bucket/prefix/filename.pem の形式で指定する必要があります。ファイル名と .pem 拡張子で終わる必要があります。

  3. 認証機関 (CA) からの証明書の検証はスキップできます。[Skip validation of certificate from certificate authority (CA)] (認証機関 (CA) からの証明書の検証をスキップする) チェックボックスを選択してください。このチェックボックスにチェックは入っていない場合、AWS Glue は、3 つのアルゴリズムの証明書を検証します。

    • SHA256withRSA

    • SHA384withRSA

    • SHA512withRSA


          スクリーンショットには、暗号化の構成に関するオプションが示されています。これらのオプションには SSL 接続を必要とするかどうかのオプション、認証機関 (CA) からのプライベート証明書の場所を選択するオプション、認証機関 (CA) からの証明書の検証をスキップするためのオプションが含まれます。

(オプション) ネットワークオプション

以下は、VPC、サブネット、およびセキュリティグループを設定するためのオプションのステップです。AWS Glue ジョブを仮想プライベートクラウド (VPC) サブネット内の Amazon EC2 インスタンスで実行する必要がある場合は、追加の VPC に固有の設定情報を提供する必要があります。

  1. データストアが含まれる VPC (仮想プライベートクラウド) を選択します。

  2. VPC を持つサブネットを選択します。

  3. VPC サブネット内のデータストアへのアクセスを許可するセキュリティグループを 1 つ以上選択します。セキュリティグループは、サブネットに接続されている ENI に関連付けられています。すべての TCP ポートに対して、自己参照のインバウンドルールを持つセキュリティグループを少なくとも 1 つ選択する必要があります。


          スクリーンショットは、VPC、サブネット、およびセキュリティグループのオプションとなるネットワークオプションを示しています。

カスタムコネクタを使用したジョブのオーサリング

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

データソースに対しコネクタを使用するジョブを作成する

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

データソースまたはデータターゲットに対しコネクタを使用するジョブを作成するには
  1. AWS Management Console にサインインして、AWS Glue Studio コンソール (https://console.aws.amazon.com/gluestudio/) を開きます。

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

    または、AWS Glue Studio Glue Studio の [Jobs] (ジョブ) ページの [Create job] (ジョブを作成) で、[Source and target added to the graph] (グラフに追加されたソースとターゲット) を選択します。[Source] (ソース) ドロップダウンリストから、ジョブで使用するカスタムコネクタを選択します。また、[Target] (ターゲット) のためにコネクタを選択することもできます。

    
              ここに示す図は、[Source] (ソース) ドロップダウンリストが選択された [Jobs] (ジョブ) ページのスクリーンショットです。このスクリーンショットでは、ジョブに対して選択できる、コネクタなど各種のデータソースを表示しています。
  3. [Create] (作成) をクリックして、ビジュアルジョブエディタを開きます。

  4. コネクタを使用するノードのソースプロパティを設定する」 にある説明に従い、データソースノードを設定します。

  5. AWS Glue Studio での ETL ジョブの編集」を参考に、変換、追加のデータストア、データターゲットを追加しながら、ETL ジョブを作成します。

  6. ジョブのプロパティを変更する」のように、ジョブのプロパティを設定して、ジョブの実行環境をカスタマイズします。

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

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

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

コネクタを使用するデータソースノードのプロパティを設定するには
  1. ジョブグラフでコネクタのデータソースノードを選択するか、新しいノードを追加して [Node type] (ノードタイプ) でコネクタを選択します。次に、右側のノードの詳細パネルで、[Data source properties] (データソースのプロパティ) タブを選択します (まだ選択されていない場合)。

    
              ここに示すスクリーンショット画像では、AWS Glue Studio のビジュアルジョブエディタページで、グラフ内のデータソースノードが選択されています。右側の [Data source properties] (データソースのプロパティ) タブが選択されています。データソースのプロパティで表示されるフィールドは、接続 (使用可能な接続のドロップダウンリストとその隣の [Refresh] (更新) ボタン)、および [Add schema button] (スキーマを追加する) ボタンです。追加的な [Connection options] (接続オプション) セクションは、折りたたまれた状態で表示されます。
  2. [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] (スキーマを追加) をクリックして、スキーマエディタを開きます。

      スキーマエディタの使用方法については、「カスタム変換ノードでスキーマを編集する」を参照してください。

    • [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] (スキーマを追加) をクリックして、スキーマエディタを開きます。

      スキーマエディタの使用方法については、「カスタム変換ノードでスキーマを編集する」を参照してください。

    • [Connection options:] (接続オプション): 追加の接続情報やオプションを提供するために、必要に応じて追加のキーと値のペアを入力します。例えば、データベース名、テーブル名、ユーザー名、パスワードを入力します。

      例えば OpenSearch の場合には、チュートリアル: AWS Glue 向けのオープンソースの Elasticsearch コネクタを使用する で説明されているように以下のキーと値のペアを入力します

      • 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 を参照してください。ここでは、接続のために指定する一般的な接続オプションが確認できます。

    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] (スキーマを追加) をクリックして、スキーマエディタを開きます。

      スキーマエディタの使用方法については、「カスタム変換ノードでスキーマを編集する」を参照してください。

    • [Additional connection options] (その他の接続オプション): 他の接続情報やオプションを提供する際には、必要に応じて追加のキーと値のペアを入力します。

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

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

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

コネクタを使用するノードのターゲットプロパティの設定

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

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

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

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

    JDBC
    • [Connection] (接続): コネクタで使用する接続を選択します。接続の作成方法については、「コネクタ用の接続を作成する」を参照してください。

    • [Table name] (テーブル名): データターゲット内のテーブルの名前。データターゲットで、テーブルという用語を使用しない場合、カスタムコネクタの使用状況情報で示されている、適切なデータ構造の名前を指定します (これは、AWS Marketplace で見つかります)。

    • [Batch size] (バッチサイズ) (オプション): 1 回のオペレーションでターゲットテーブルに挿入する、行数またはレコード数を入力します。デフォルト値は 1000 行です。

    Spark
    • [Connection] (接続): コネクタで使用する接続を選択します。以前に接続を作成していない場合は、[Create connection] (接続を作成する) をクリックして作成します。接続の作成方法については、「コネクタ用の接続を作成する」を参照してください。

    • [Connection options:] (接続オプション): 追加の接続情報やオプションを提供するために、必要に応じて追加のキーと値のペアを入力します。データベース名、テーブル名、ユーザー名、パスワードを入力することもできます。

      例えば OpenSearch の場合には、チュートリアル: AWS Glue 向けのオープンソースの Elasticsearch コネクタを使用する で説明されているように以下のキーと値のペアを入力します

      • 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 を参照してください。ここでは、接続のために指定する一般的な接続オプションが確認できます。

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

コネクタと接続を管理する

コネクタと接続を管理するには、AWS Glue Studio の [Connectors] (コネクタ) ページを使用します。

コネクタと接続の詳細を表示する

[Connectors] (コネクタ) ページの [Your connectors] (使用中のコネクタ)、および [Your connections] (使用中の接続) リソーステーブルで、コネクタと接続に関する概要情報を表示できます。詳細な情報を表示するには、以下の手順を実行します。

注記

AWS Glue コンソールを使用して作成された接続は、AWS Glue Studio には表示されません。

コネクタまたは接続の詳細を表示するには
  1. AWS Glue Studio コンソールのナビゲーションペインで、[Connectors] (コネクタ) をクリックします。

  2. 詳細情報を表示するコネクタまたは接続を選択します。

  3. [Actions] (アクション)、[View details] (詳細を表示) の順にクリックして、選択したコネクタまたは接続の詳細ページを開きます。

  4. 詳細ページでは、コネクタまたは接続に対し、[Edit] (編集) または [Delete] (削除) を選択できます。

    • コネクタの場合は、[Create connection] (接続を作成する) をクリックすることで、そのコネクタを使用する新しい接続を作成できます。

    • 接続の場合は、[Create job] (ジョブを作成する) をクリックすると、その接続を使用するジョブを作成できます。

コネクタと接続を編集する

[Connectors] (コネクタ) ページを使用して、コネクタと接続に保存されている情報を変更します。

コネクタまたは接続を変更するには
  1. AWS Glue Studio コンソールのナビゲーションペインで、[Connectors] (コネクタ) をクリックします。

  2. 変更するコネクタまたは接続を選択します。

  3. [Actions] (アクション) を選択して、[Edit] (編集) を選択します。

    また、[View details] (詳細を表示する) をクリックし、コネクタまたは接続の詳細ページを開いて、[Edit] (編集) を実行することもできます。

  4. [Edit connector] (コネクタを編集する) または [Edit connection] (接続を編集する) ページで、情報を更新した上で、[Save] (保存) をクリックします。

コネクタおよび接続を削除する

コネクタと接続を削除するには、[Connectors] (コネクタ) ページを使用します。コネクタを削除すると、そのコネクタのために作成された接続もすべて削除されます。

AWS Glue Studio からコネクタを削除する方法
  1. AWS Glue Studio コンソールのナビゲーションペインで、[Connectors] (コネクタ) をクリックします。

  2. 削除するコネクタまたは接続を選択します。

  3. [Actions] (アクション) を選択してから、[Delete] (削除) をクリックします。

    または、[View details] (詳細を表示する) をクリックし、コネクタまたは接続の詳細ページで、[Delete] (削除) を実行することもできます。

  4. Delete」と入力し、コネクタまたは接続を削除することを確認した上で、[Delete] (削除) をクリックします。

    コネクタを削除すると、そのコネクタのために作成された接続もすべて削除されます。

ここで削除される接続を使用していたジョブも、すべて機能しなくなります。これらのジョブは、別のデータストアを使用するように編集することも、あるいは削除することもできます。ジョブを削除する方法については、「ジョブの削除」を参照してください。

コネクタを削除しても、そのコネクタの AWS Marketplace に対するサブスクリプションはキャンセルされません。削除されたコネクタのサブスクリプションを削除するには、「コネクタのサブスクリプションをキャンセルする」の手順に従います。

コネクタのサブスクリプションをキャンセルする

AWS Glue Studio から接続とコネクタをキャンセルした後、不要になったコネクタのサブスクリプションを AWS Marketplace でキャンセルできます。

注記

コネクタのサブスクリプションをキャンセルしても、コネクタや接続はアカウントから削除されません。コネクタと、それに関連する接続を使用するジョブは、以後コネクタを使用できなくなり失敗します。

AWS Marketplace から、コネクタのサブスクリプション解除または再サブスクライブを行う際には、その前に、対象の AWS Marketplace 製品に関連付けられた既存の接続とコネクタを削除する必要があります。

AWS Marketplace でコネクタのサブスクリプションを解除するには
  1. AWS Marketplace コンソール (https://console.aws.amazon.com/marketplace) にサインインします。

  2. [Manage subscriptions] (サブスクリプションを管理する) をクリックします。

  3. [Manage subscriptions] (サブスクリプションの管理) ページで、キャンセルするコネクタのサブスクリプションの横にある [Manage] (管理) をクリックします。

  4. [Actions] (アクション)、[Delete Application] (アプリケーションの削除) の順にクリックします。

  5. 実行中のインスタンスがアカウントで課金されることを受け入れるチェックボックスをオンにして、[Yes, cancel subscription] (はい、サブスクリプションをキャンセルします) をクリックします。

カスタムコネクタの開発

コードを記述すると、データストアとの間でデータの読み取りや書き込みを実行したり、AWS Glue Studio ジョブで使用するためにデータのフォーマットを行ったりできます。Spark、Athena、JDBC データストアのためのコネクタを作成できます。実装する必要がある基本的なインターフェイスの概要は、GitHub に掲載されているサンプルコードで提供しています。

コネクタコードを作成するには、ローカルの開発環境が必要です。コネクタを書き込むには、任意の IDE やコマンドラインエディタを使用することもできます。開発環境の例には以下があります。

Spark コネクタの開発

Spark DataSource API V2 (Spark 2.4) を使用して、データ読み取りのために Spark コネクタを作成することができます。

カスタム Spark コネクタを作成するには

Spark コネクタ開発のための AWS Glue GitHub サンプルライブラリ (https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Spark/README.md) にある手順に従います。

Athena コネクタの開発

Athena コネクタを作成し、AWS Glue および AWS Glue Studio でカスタムのデータソースをクエリするために使用できます。

カスタムの Athena コネクタを作成するには

Athena コネクタ開発のための AWS Glue GitHub サンプルライブラリ(https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Athena) にある手順に従います。

JDBC コネクタの開発

データストアにアクセスするために、JDBC を使用するコネクタを作成できます。

カスタムの JDBC コネクタを作成するには
  1. ローカルの開発環境に、AWS Glue Spark ランタイムライブラリをインストールします。手順については、AWS Glue GitHub のサンプルライブラリ (https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/GlueSparkRuntime/README.md) を参照してください。

  2. データソースからデータを取得するための JDBC ドライバーを実装します。Java SE 8 向けの Java ドキュメントを参照してください。

    作成しているコード内に、AWS Glue Studio がコネクタの位置を特定するために使用するエントリポイントを記述します。[Class name] (クラス名) フィールドは、JDBC ドライバーへの完全なパスを指定する必要があります。

  3. GlueContext API を使用して、コネクタによりデータを読み取ります。必要に応じてユーザーは、AWS Glue Studio コンソールを使用して、データソースへの接続を設定するための他の入力オプションを追加できます。カスタム JDBC コネクタを使用しながら、JDBC データベースとの間で読み取りおよび書き込みを行うコードの例については、「Custom and AWS Marketplace connectionType values」を参照してください。

AWS Glue Studio でのカスタムコネクタ使用例

カスタムコネクタの使用例については、次のブログを参照してください。

AWS Marketplace 向け AWS Glue コネクターの開発

AWS パートナーであれば、作成したカスタムコネクタを AWS Marketplace にアップロードし、それを AWS Glue のお客様に販売することができます

コネクタコードの開発プロセスは、カスタムコネクタの場合と同様です。ただし、コネクタコードのアップロードと検証のプロセスには、より詳細な要素が含まれます。手順については、GitHub ウェブサイトの「 Creating Connectors for AWS Marketplace」を参照してください。

AWS Glue Studio でのコネクタおよび接続の使用に関する制約事項

カスタムコネクタ、または AWS Marketplace で提供されているコネクタを使用する際は、以下の制限事項に注意してください。

  • カスタムコネクタ用に作成された接続では、TestConnection API は使用できません。

  • Data Catalog 接続でのパスワードの暗号化は、カスタムコネクタではサポートされていません。

  • JDBC コネクタを使用するデータソースノードでフィルター述語を指定した場合は、ジョブブックマークを使用できなくなります。