

# AWS Glue Studio での MongoDB に対する接続
<a name="connecting-to-data-mongodb"></a>

 AWS Glue は、MongoDB のための組み込みサポートを提供します。AWS Glue Studio は、MongoDB に接続してデータ統合ジョブをオーサリングし、AWS Glue Studio サーバーレス Spark ランタイム上でそれらのジョブを実行するためのビジュアルインターフェイスを提供します。

**Topics**
+ [MongoDB 接続の作成](creating-mongodb-connection.md)
+ [MongoDB ソースノードの作成](creating-mongodb-source-node.md)
+ [MongoDB ターゲットノードの作成](creating-mongodb-target-node.md)
+ [詳細オプション](#creating-mongodb-connection-advanced-options)

# MongoDB 接続の作成
<a name="creating-mongodb-connection"></a>

**前提条件**:
+ MongoDB インスタンスが Amazon VPC 内にある場合は、トラフィックがパブリックインターネットを経由することなく、AWS Glue ジョブが MongoDB インスタンスと通信できるように Amazon VPC を設定します。

  Amazon VPC で、AWS Glue がジョブの実行中に使用する **[VPC]**、**[サブネット]**、および **[セキュリティグループ]** を特定または作成します。さらに、MongoDB インスタンスとこの場所の間のネットワークトラフィックを許可するように Amazon VPC が設定されているようにする必要があります。ネットワークレイアウトに基づいて、セキュリティグループルール、ネットワーク ACL、NAT ゲートウェイ、およびピアリング接続の変更が必要になる場合があります。

**MongoDB に対する接続を設定するには:**

1. 必要に応じて、AWS Secrets Manager で、MongoDB 認証情報を使用してシークレットを作成します。Secrets Manager でシークレットを作成するには、AWS Secrets Manager ドキュメントの [AWS Secrets Manager シークレットを作成する](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) にあるチュートリアルに従ってください。シークレットを作成したら、次のステップのためにシークレット名 *secretName* を保存しておきます。
   + **[key/value ペア]** を選択する際に、*mongodbUser* という値を持つキー `username` のペアを作成します。

     **[key/value ペア]** を選択する際に、*mongodbPass* という値を持つキー `password` のペアを作成します。

1. AWS Glue コンソールで、「[AWS Glue 接続の追加](console-connections.md)」にあるステップに従って接続を作成します。接続を作成したら、将来的に AWS Glue で使用するために、接続名 *connectionName* を維持します。
   + **[接続タイプ]** を選択する際には、**[MongoDB]** または **[MongoDB Atlas]** を選択します。
   + **[MongoDB URL]** または **[MongoDB Atlas URL]** を選択する場合は、MongoDB インスタンスのホスト名を入力します。

     MongoDB URL は、`mongodb://mongoHost:mongoPort/mongoDBname` の形式で指定されます。

     MongoDB Atlas URL は、`mongodb+srv://mongoHost/mongoDBname` の形式で指定されます。
   + Secrets Manager シークレットを作成することを選択した場合は、AWS Secrets Manager の **[認証情報タイプ]** を選択します。

     その後、**[AWS シークレット]** で *secretName* を入力します。
   + **[ユーザー名とパスワード]** を入力することを選択した場合は、*mongodbUser* および *mongodbPass* を入力します。

1. 次の状況では、追加の設定が必要になる場合があります。
   + 

     Amazon VPC の AWS でホストされている MongoDB インスタンスの場合
     + MongoDB セキュリティ認証情報を定義する AWS Glue 接続に、Amazon VPC 接続に関する情報を提供する必要があります。接続を作成または更新する際に、**[ネットワークオプション]** で **[VPC]**、**[サブネット]**、および **[セキュリティグループ]** を設定します。

AWS Glue MongoDB 接続を作成した後、AWS Glue ジョブを実行する前に次のステップを実行する必要があります。
+ ビジュアルエディタで AWS Glue ジョブを使用する場合、ジョブが MongoDB に接続できるように Amazon VPC の接続に関する情報を入力する必要があります。Amazon VPC 内の適切な場所を特定し、それを AWS Glue MongoDB 接続に提供します。
+ Secrets Manager シークレットを作成することを選択した場合は、AWS Glue ジョブに関連付けられた IAM ロールに *secretName* を読み取るための許可を付与します。

# MongoDB ソースノードの作成
<a name="creating-mongodb-source-node"></a>

## 必要な前提条件
<a name="creating-mongodb-source-node-prerequisites"></a>
+ 前のセクション「[MongoDB 接続の作成](creating-mongodb-connection.md)」で説明した AWS Glue MongoDB 接続。
+ Secrets Manager シークレットを作成することを選択した場合は、接続によって使用されるシークレットを読み取るためのジョブに対する適切な許可が必要です。
+ 読み取り元とする MongoDB コレクション。コレクションの識別情報が必要になります。

  MongoDB コレクションは、データベース名とコレクション名である *mongodbName* および *mongodbCollection* によって識別されます。

## MongoDB データソースの追加
<a name="creating-mongodb-source-node-add"></a>

****[データソース — MongoDB]** ノードを追加するには:**

1.  MongoDB データソース用の接続を選択します。すでに作成したので、ドロップダウンに表示されているはずです。接続を作成する必要がある場合は、**[MongoDB 接続を作成]** を選択します。詳細については、前の「[MongoDB 接続の作成](creating-mongodb-connection.md)」セクションを参照してください。

    接続を選択したあとは、**[プロパティを表示]** をクリックすると、接続のプロパティを表示できます。

1. **[データベース]** を選択します。*mongodbName* を入力します。

1. **[コレクション]** を選択します。*mongodbCollection* を入力します。

1. **[パーティショナー]**、**[パーティションサイズ (MB)]**、および **[パーティションキー]** を選択します。パーティションパラメータについての詳細は、「["connectionType": "mongodb" ソースとする](aws-glue-programming-etl-connect-mongodb-home.md#etl-connect-mongodb-as-source)」を参照してください。

1.  **[MongoDB のカスタムプロパティ]** で、必要に応じてパラメータと値を入力します。

# MongoDB ターゲットノードの作成
<a name="creating-mongodb-target-node"></a>

## 必要な前提条件
<a name="creating-mongodb-target-node-prerequisites"></a>
+ 前のセクション [MongoDB 接続の作成](creating-mongodb-connection.md) で説明したように、AWS Secrets Manager シークレットを使用して設定された AWS Glue MongoDB 接続。
+ 接続で使用されるシークレットを読み取るためのジョブに対する適切なアクセス許可。
+ 書き込み先とする MongoDB テーブルである *tableName*。

## MongoDB データターゲットの追加
<a name="creating-mongodb-target-node-add"></a>

****[データターゲット — MongoDB]** ノードを追加するには:**

1.  MongoDB データソース用の接続を選択します。すでに作成したので、ドロップダウンに表示されているはずです。接続を作成する必要がある場合は、**[MongoDB 接続を作成]** を選択します。詳細については、前の「[MongoDB 接続の作成](creating-mongodb-connection.md)」セクションを参照してください。

    接続を選択したあとは、**[プロパティを表示]** をクリックすると、接続のプロパティを表示できます。

1. **[データベース]** を選択します。*mongodbName* を入力します。

1. **[コレクション]** を選択します。*mongodbCollection* を入力します。

1. **[パーティショナー]**、**[パーティションサイズ (MB)]**、および **[パーティションキー]** を選択します。パーティションパラメータについての詳細は、「["connectionType": "mongodb" ソースとする](aws-glue-programming-etl-connect-mongodb-home.md#etl-connect-mongodb-as-source)」を参照してください。

1. 必要に応じて、**[書き込みを再試行]** を選択します。

1.  **[MongoDB のカスタムプロパティ]** で、必要に応じてパラメータと値を入力します。

## 詳細オプション
<a name="creating-mongodb-connection-advanced-options"></a>

MongoDB ノードを作成する際に、高度なオプションを指定できます。これらのオプションは Spark AWS Glue スクリプトのプログラミング時に使用できるオプションと同じです。

「[MongoDB 接続オプションのリファレンス](aws-glue-programming-etl-connect-mongodb-home.md#aws-glue-programming-etl-connect-mongodb)」を参照してください。