

# チュートリアル: Elasticsearch 向けの AWS Glue コネクタを使用する
<a name="tutorial-elastisearch-connector"></a>

Elasticsearch は、ログ分析、リアルタイムアプリケーションモニタリング、クリックストリーム分析などのユースケースで人気のあるオープンソースの検索および分析エンジンです。　　　 AWS Glue Studio で Elasticsearch 向けの AWS Glue コネクタを設定することで、OpenSearch を抽出、変換、ロード (ETL) ジョブ用のデータストアとして使用できます。このコネクタは [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-v5ygernwn2gb6) から無料で入手できます。

**注記**  
 [AWS Marketplace Elasticsearch Spark コネクタ](https://aws.amazon.com/marketplace/pp/B08PPT2V5J)は廃止されました。代わりに、[Elasticsearch 向けの AWS Glue コネクタ](https://aws.amazon.com/marketplace/pp/prodview-v5ygernwn2gb6)を使用してください。

 このチュートリアルでは、最小限の手順で Amazon OpenSearch Service ノードに接続する方法を示します。

**Topics**
+ [前提条件](#tutorial-prerequisites)
+ [ステップ 1: (オプション) OpenSearch クラスター情報の AWS シークレットを作成する](#tutorial-step1)
+ [ステップ 2: コネクタをサブスクライブする](#tutorial-step2)
+ [ステップ 3: AWS Glue Studio でコネクタをアクティブにして、接続を作成します。](#tutorial-step3)
+ [ステップ 4: ETL ジョブの IAM ロールを設定する](#tutorial-step4)
+ [ステップ 5: OpenSearch 接続を使用するジョブを作成する](#tutorial-step5)
+ [ステップ 6: ジョブを実行する](#tutorial-step6)

## 前提条件
<a name="tutorial-prerequisites"></a>

このチュートリアルを使用するには、以下のものが必要です。
+ AWS Glue Studio へのアクセス
+ AWS Cloud の OpenSearch クラスターにアクセスする
+ (オプション) AWS Secrets Manager にアクセスします。

## ステップ 1: (オプション) OpenSearch クラスター情報の AWS シークレットを作成する
<a name="tutorial-step1"></a>

 接続の認証情報を安全に保存して使用するには、認証情報を AWS Secrets Manager に保存します。作成するシークレットは、チュートリアルの後半で接続で使用されます。認証情報のキーと値のペアは、通常の接続オプションとして Elasticsearch 向けの AWS Glue コネクタに供給されます。

シークレットの作成についての詳細は、*AWS Secrets Manager ユーザーガイド*の「[AWS Secrets Manager を使用したシークレットの作成と管理](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html)」を参照してください。

**AWS シークレットを作成するには**

1. [AWS Secrets Manager コンソール](https://console.aws.amazon.com/secretsmanager/) にサインインします。

1. サービスの概要ページまたは [**シークレット**] リストページで、[**新しいシークレットの保存**] を選択します｡

1. [**新しいシークレットの保存**] ページで、[**他の種類のシークレット**] を選択します。このオプションの意味は、シークレットの構造と詳細を指定する必要があるということです。

1. の追加**キー**および**値**のペアを OpenSearch クラスターユーザー名として使用します。例: 

   `es.net.http.auth.user`: {{username}}

1. [**\+ 行を追加**] を選択して、パスワードとして別のキーと値のペアを入力します。例: 

   `es.net.http.auth.pass`: {{password}}

1. [**次へ**] を選択します。

1. シークレット名を入力します 例えば、**my-es-secret** です。オプションで説明を含めることができます。

   このチュートリアルの後半で使用するシークレット名を記録し、[**Next**] (次へ) を選択します。

1. [**Next**] (次へ) をもう一度選択して、[**Store**]　(保存) を選択してシークレットを作成します。

### 次のステップ
<a name="tutorial-step1.2"></a>

 [ステップ 2: コネクタをサブスクライブする](#tutorial-step2) 

## ステップ 2: コネクタをサブスクライブする
<a name="tutorial-step2"></a>

Elasticsearch 向けの AWS Glue コネクタは、[AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-v5ygernwn2gb6#pdp-pricing) で無料で入手できます。

**AWS Marketplace で Elasticsearch 向けの AWS Glue コネクタにサブスクライブするには**

1. まだ　License Manager を使用するための AWS アカウント設定をしていない場合、次の操作を行います。

   1. AWS License Manager コンソール、[https://console.aws.amazon.com/license-manager](https://console.aws.amazon.com/license-manager) を開きます 。

   1. **Create customer managed license** (カスタマー管理ライセンスの作成) を選択します。

   1. [**IAM permissions (one-time setup)**] 画面で [**I grant AWS License Manager the required permissions**] を選択し、次に [**Grant permissions**] を選択します。

      このウィンドウが表示されない場合は、必要なアクセス許可がすでに設定されています。

1. [https://console.aws.amazon.com/gluestudio/](https://console.aws.amazon.com/gluestudio/) で AWS Glue Studio コンソールを開きます。

1. AWS Glue Studio コンソールのナビゲーションペインで、メニューアイコン (![3 short, horizontal lines in a vertical stack](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/nav-menu-icon.png)) を展開して、[**Connectors** (コネクタ) を選択します。

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

1. AWS Marketplace の **[AWS Glue Studio の製品を検索]** セクションで、検索フィールドに「**Elasticsearch 向けの AWS Glue コネクタ**」と入力し、Enter キーを押します。

1.  **[Elasticsearch 向けの AWS Glue コネクタ]** というコネクタの名前を選択します。

1. コネクタの製品ページで、そのコネクタに関するタブを開いて情報を表示します。続行する準備が整ったら、[**Continue to Subscribe**] (スクライブを続行する) を選択します。

1.  ソフトウェアの利用規約を確認します。**[Accept Terms]** (規約に同意する) をクリックします。

1.  サブスクリプションプロセスが完了すると、「Thank you for subscribing to this product\! You can now configure your software.」(製品にサブスクライブしていただきありがとうございます。ソフトウェアの設定が可能になりました。) という通知が表示されます。バナーの上に **[Continue to Configuration]** (設定に進む) ボタンがあります。**[設定に進む]** を選択します。

1.  **[Configure this software]** (このソフトウェアを設定) ページで、フルフィルメントオプションを選択します。AWS Glue 1.0/2.0 または AWS Glue 3.0 を選択できます。**[Continue to Launch]** (続行して起動する) を選択します。

### 次のステップ
<a name="tutorial-step2.1"></a>

 [ステップ 3: AWS Glue Studio でコネクタをアクティブにして、接続を作成します。](#tutorial-step3) 

## ステップ 3: AWS Glue Studio でコネクタをアクティブにして、接続を作成します。
<a name="tutorial-step3"></a>

[**Continue to Launch** (起動を続ける) を選択すると、AWS Marketplace の [**Launch this software**] (ソフトウェアの起動) ページが表示されます。AWS Glue Studio でリンクを使用してコネクタをアクティブ化した後、接続を作成します。

**コネクタを展開し、AWS Glue Studio で接続を作成する方法**

1. AWS Marketplace コンソールの [**Launch this software**] (ソフトウェアの起動) ページで、**Usage Instructions** (使用方法) を選択し、表示されるウィンドウでリンクを選択します。

   ブラウザ は AWS Glue Studio コンソールの 「**Create marketplace connection**] ページにリダイレクトされます。

1. 接続の名前を入力します。例えば、**my-es-connection** です。

1. [**Connection access**] (接続アクセス) セクションの [**Connection credential type**] (接続の認証情報タイプ) で、[**User name and password**] (ユーザー名とパスワード) を選択します。　　　 

1. [**AWS シークレット**] で、シークレット名を入力します。例えば、**my-es-secret** です。

1. **[Network options]** (ネットワークオプション) セクションで、VPC 情報を入力して OpenSearch クラスターに接続します。

1. [**Create connection and activate connector**] (接続の作成とコネクタのアクティブ化) を選択します。

### 次のステップ
<a name="tutorial-step3.1"></a>

 [ステップ 4: ETL ジョブの IAM ロールを設定する](#tutorial-step4) 

## ステップ 4: ETL ジョブの IAM ロールを設定する
<a name="tutorial-step4"></a>

AWS Glue ETLジョブを作成するとき、使用するジョブの AWS Identity and Access Management (IAM) ロールを指定します。ロールは、Amazon S3（ソース、ターゲット、スクリプト、ドライバーファイル、一時ディレクトリ）および AWS Glue Data Catalog オブジェクトを含む、ジョブで使用されるすべてのリソースへのアクセスを許可する必要があります。

AWS Glue ETL ジョブで想定される IAM ロールは、前のセクションで作成したシークレットにもアクセスできる必要があります。デフォルトでは、AWS が管理するロール `AWSGlueServiceRole` はシークレットにアクセスできません。シークレットのアクセスコントロールを設定するには、「[AWS Secrets Manager の認証とアクセスコントロール](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html)」および「[特定のシークレットへのアクセスの制限](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_identity-based-policies.html#permissions_grant-limited-resources)」を参照してください。　

**ETL ジョブの IAM ロールを設定するには**

1. [ETL ジョブに必要な IAM アクセス許可を確認する](getting-started-min-privs-job.md) で説明しているように、アクセス許可を設定します。

1. AWS Glue Studio で説明しているように、[コネクタの使用に必要なアクセス許可](getting-started-min-privs-job.md#getting-started-min-privs-connectors) でコネクタを使用するときに必要な追加のアクセス許可を設定します。

### 次のステップ
<a name="tutorial-step4.1"></a>

 [ステップ 5: OpenSearch 接続を使用するジョブを作成する](#tutorial-step5) 

## ステップ 5: OpenSearch 接続を使用するジョブを作成する
<a name="tutorial-step5"></a>

ETL ジョブのロールを作成した後、AWS Glue Studio で Open Spark ElasticSearch の接続とコネクタを使用するジョブを作成できます。

ジョブが Amazon Virtual Private Cloud (Amazon VPC) で実行されている場合は、VPC が正しく設定されていることを確認してください。詳細については、「[ETL ジョブの VPC を設定します](getting-started-vpc-config.md)」(ETL ジョブの VPC を設定します) を参照してください。

**Elasticsearch Spark コネクタを使用するジョブを作成するには**

1. AWS Glue Studio で **コネクタ** を選択します。

1. [**Your connections**] (接続) リストで、作成した接続を選択し、[**Create job**] を選択します。

1. ビジュアルジョブエディタで、[Data source node] (データソースノード) を選択します。右側の[**Data source properties - Connector**] (データソースのプロパティ- コネクタ) タブで、コネクタの追加情報を設定します。

   1. [**Add schema**] (スキーマの追加) を選択し、データソースにデータセットのスキーマを入力します。接続には、データカタログに格納されたテーブルは使用されません。つまり、AWS Glue Studio はデータのスキーマを認識しません。このスキーマ情報は手動で指定する必要があります。スキーマエディタの使用方法については、「[カスタム変換ノードでスキーマを編集する](transforms-custom.md#transforms-custom-editschema)」を参照してください。

   1. **Connection options** (接続オプション) を展開します。

   1. [**Add new option**] (新しいオプションの追加) を選択し、AWS シークレットに入力されなかったコネクタに必要な情報を入力します。
      +  **es.nodes**: https://<OpenSearch ドメインエンドポイント> 
      +  **es.port**: 443
      +  **path**: test 
      +  **es.nodes.wan.only.**: true 

      これらの接続オプションの詳細については、「[https://www.elastic.co/guide/en/elasticsearch/hadoop/current/configuration.html](https://www.elastic.co/guide/en/elasticsearch/hadoop/current/configuration.html)」を参照してください。

1. グラフにターゲットノードを追加します。

   データターゲットは Amazon S3 にすることも、AWS Glue Data Catalog またはコネクタからの情報を使用して別の場所にデータを書き込むこともできます。例えば、データカタログテーブルを使用して Amazon RDS のデータベースに書き込むことも、コネクタをデータターゲットとして使用して、AWS Glue でネイティブにサポートされていないデータストアに書き込むこともできます。

   データターゲットのコネクタを選択する場合は、そのコネクタ用に作成された接続を選択する必要があります。また、コネクタプロバイダで必要な場合は、コネクタに追加情報を提供するオプションを追加する必要があります。AWS シークレットの情報を含む接続を使用する場合は、接続オプションでユーザー名とパスワード認証を指定する必要はありません。

1. オプションで、[AWS Glue マネージド変換によるデータの変換](edit-jobs-transforms.md) の説明の通り、追加のデータソースと 1 つ以上の変換ノードを追加します。

1. ステップ 3 から [ジョブのプロパティを変更する](managing-jobs-chapter.md#edit-jobs-properties) の説明の通りジョブプロパティを設定し、ジョブを保存します。

### 次のステップ
<a name="tutorial-step5.1"></a>

 [ステップ 6: ジョブを実行する](#tutorial-step6) 

## ステップ 6: ジョブを実行する
<a name="tutorial-step6"></a>

ジョブを保存した後、ジョブを実行し ETL 操作が行えるようになります。

**Elasticsearch 向けの AWS Glue コネクタ用に作成したジョブを実行するには**

1. AWS Glue Studio コンソールを使用して、ビジュアルエディタページで [**Run**](実行) を選択します。

1. 成功バナーで、[**Run Details**] (実行の詳細) を選択するか、[**Runs**] (実行) タブをクリックして、ジョブの実行に関する情報を表示します。