

# AWS Glue Studio の Amazon Redshift に接続する
<a name="connecting-to-data-redshift"></a>

**注記**  
 AWS Glue for Spark を使用して AWS Glue Studio の Amazon Redshift データベース内のテーブルに対する読み取りと書き込みを行うことができます。AWS Glue ジョブで Amazon Redshift をプログラム的に設定する方法については、「[Redshift 接続](aws-glue-programming-etl-connect-redshift-home.md)」を参照してください。

 AWS Glue には、Amazon Redshift に対するサポートが組み込まれています。AWS Glue Studio には、Amazon Redshift に接続してデータ統合ジョブをオーサリングし、AWS Glue Studio の Spark ランタイム上でジョブをサーバーレスで実行できる、ビジュアルインターフェイスが用意されています。

**Topics**
+ [

# Amazon Redshift 接続の作成
](creating-redshift-connection.md)
+ [

# Amazon Redshift ソースノードの作成
](creating-redshift-source-node.md)
+ [

# Amazon Redshift ターゲットノードの作成
](creating-redshift-target-node.md)
+ [

# 詳細オプション
](creating-redshift-connection-advanced-options.md)

# Amazon Redshift 接続の作成
<a name="creating-redshift-connection"></a>

## 必要となる許可
<a name="creating-redshift-connection-permissions"></a>

 Amazon Redshift クラスターおよび Amazon Redshift サーバーレス環境を使用するには、追加の許可が必要です。ETL ジョブに許可を追加する方法の詳細については、「[ETL ジョブに必要な IAM アクセス許可を確認する](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job)」を参照してください。
+  redshift:DescribeClusters 
+  redshift-serverless:ListWorkgroups 
+  redshift-serverless:ListNamespaces 

## 概要:
<a name="w2aac25c27c13c11b5"></a>

 Amazon Redshift 接続を追加するには、既存の Amazon Redshift 接続を選択するか、AWS Glue Studio で**データソース - Redshift** ノードを追加するときに、新しい接続を作成します。

 AWS Glue は、Amazon Redshift クラスターと Amazon Redshift サーバーレス環境の両方をサポートします。接続を作成すると、Amazon Redshift サーバーレス環境では、接続オプションの横に **[serverless]** ラベルが表示されます。

 Amazon Redshift 接続を作成する方法について詳しくは、「[Amazon Redshift との間でのデータの移動](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-redshift.html#aws-glue-programming-etl-redshift-using)」を参照してください。

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

## 必要となる許可
<a name="creating-redshift-source-node-permissions"></a>

 Amazon Redshift データソースを使用する AWS Glue Studio ジョブには追加の許可が必要です。ETL ジョブに許可を追加する方法の詳細については、「[ETL ジョブに必要な IAM アクセス許可を確認する](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job)」を参照してください。

 Amazon Redshift 接続を使用するには、次の許可が必要です。
+  redshift-data:ListSchemas 
+  redshift-data:ListTables 
+  redshift-data:DescribeTable 
+  redshift-data:ExecuteStatement 
+  redshift-data:DescribeStatement 
+  redshift-data:GetStatementResult 

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

****データソース — Amazon Redshift** ノードを追加するには**

1.  Amazon Redshift アクセスタイプを選択します。
   +  直接データ接続 (推奨) — Amazon Redshift データに直接アクセスする場合は、このオプションを選択してください。これは推奨されるオプションで、デフォルトでもあります。
   +  Data Catalog tables — 使用したいデータカタログテーブルがある場合は、このオプションを選択してください。

1.  [直接データ接続] を選択した場合は、Amazon Redshift データソースへの接続を選択します。既に接続が存在していて、それらの接続から選択できることが前提です。接続の作成が必要な場合は、**[Redshift 接続の作成]** を選択します。詳細については、「[コネクタと接続の使用に関する概要](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview)」を参照してください。

    接続を選択したあとは、**[プロパティを表示]** をクリックすると、接続のプロパティを表示できます。URL、セキュリティグループ、サブネット、アベイラビリティーゾーン、説明、作成時刻 (UTC) と最終更新時刻 (UTC) のタイムスタンプなど、接続についての情報が表示されます。

1.  Amazon Redshift のソースオプションを選択してください。
   +  **[Choose a single table]** - これは、単一の Amazon Redshift テーブルからアクセスするデータを含むテーブルです。
   +  **カスタムクエリを入力** — カスタムクエリに基づき、Amazon Redshift の複数のテーブルからデータセットにアクセスできます。

1.  単一のテーブルを選択した場合は、Amazon Redshift のスキーマを選択します。選択したテーブルによって、使えるスキーマのリストが決まります。

    または、**[カスタムクエリを入力]** を選択します。このオプションを選択すると、Amazon Redshift の複数のテーブルから、カスタムデータセットにアクセスできます。このオプションを選択した場合は、Amazon Redshift クエリを入力します。

    Amazon Redshift サーバーレス環境に接続するときに、カスタムクエリに次の許可を追加します。

   ```
               GRANT SELECT ON ALL TABLES IN <schema> TO PUBLIC
   ```

    **[スキーマを推測]** を選択すると、入力したクエリに基づいてスキーマを読み取ることができます。**[Redshift クエリエディタを開く]** を選択して、Amazon Redshift クエリを入力することもできます。詳細については、「[クエリエディタを使用してデータベースのクエリを実行する](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor.html)」を参照してください。

1.  **[パフォーマンスとセキュリティ]** で、Amazon S3 のステージングディレクトリと IAM ロールを選択します。
   +  **Amazon S3 ステージングディレクトリ** — データを一時的にステージングする、Amazon S3 の場所を選択します。
   +  **IAM ロール** — 選択した Amazon S3 に書き込める IAM ロールを選択します。

1.  **[カスタム Redshift パラメータ - オプション]** に、パラメータと値を入力します。

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

## 必要となる許可
<a name="creating-redshift-target-node-permissions"></a>

 Amazon Redshift データターゲットを使用する AWS Glue Studio ジョブには追加の許可が必要です。ETL ジョブに許可を追加する方法の詳細については、「[ETL ジョブに必要な IAM アクセス許可を確認する](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job)」を参照してください。

 Amazon Redshift 接続を使用するには、次の許可が必要です。
+  redshift-data:ListSchemas 
+  redshift-data:ListTables 

## Amazon Redshift ターゲットノードの追加
<a name="w2aac25c27c13c15b5"></a>

**Amazon Redshift ターゲットノードを作成するには**

1.  既存の Amazon Redshift テーブルをターゲットとして選択するか、新しいテーブル名を入力します。

1.  **データターゲット - Redshift** ターゲットノードを使用する場合、次のオプションから選択できます。
   +  **APPEND** — テーブルがすでに存在している場合は、新しいデータをテーブルにすべて挿入してダンプします。テーブルが存在しない場合は、新規にテーブルを作成し、そこに新しいデータをすべて挿入します。

      またターゲットのテーブルで、既存のレコードを更新 (UPSERT) する場合は、このチェックボックスにチェックを入れてください。まずテーブルが存在している必要があります。存在しない場合には、操作は失敗します。
   +  **MERGE** — 指定した条件に基づいて、AWS Glue がターゲットとなるテーブルのデータを更新するか、またはデータを追加します。
**注記**  
 AWS Glue でマージアクションを使用するには、Amazon Redshift のマージ機能を有効にする必要があります。Amazon Redshift インスタンスのマージを有効にする方法については、「[MERGE (プレビュー)](https://docs.aws.amazon.com/redshift/latest/dg/r_MERGE.html)」を参照してください。

      [オプション] を選択します。
     + **キーと簡単なアクションの選択** — ソースデータとターゲットデータセットとの、マッチングキーとして使用する列を選択します。

       一致した場合、次のオプションを指定します。
       + ターゲットのデータセットにあるレコードを、ソースのデータで更新します。
       + ターゲットのデータセットにあるレコードを削除します。

       一致しない場合、次のオプションを指定します。
       + ターゲットのデータセットに、新しい行としてソースデータを挿入します。
       + 何もしない。
     + **カスタム MERGE ステートメントの入力** — その後 **[MERGE ステートメントの検証]** を選択し、ステートメントが有効か、無効かを検証できます。
   +  **TRUNCATE** — 既にテーブルが存在している場合は、ターゲットのテーブルの内容を削除してから、ターゲットのテーブルを削除します。削除が成功してから、すべてのデータを挿入します。テーブルが存在していない場合、テーブルを作成し、すべてのデータを挿入します。削除が成功しなかった場合、操作は失敗します。
   +  **DROP** — 既にテーブルが存在している場合は、テーブルのメタデータとデータを削除します。削除が成功してから、すべてのデータを挿入します。テーブルが存在していない場合、テーブルを作成し、すべてのデータを挿入します。削除が成功しなかった場合、操作は失敗します。
   +  **CREATE** — 新しいテーブルを、デフォルトの名前を使用して作成します。既にテーブル名が存在する場合は、接尾辞として `job_datetime` を名前につけたうえで新しいテーブルを作成し、一意性を保ちます。これで、すべてのデータが新しいテーブルに挿入されます。テーブルが存在する場合、最終的なテーブル名には接尾辞が付きます。テーブルが存在しない場合、テーブルが作成されます。いずれの場合も、テーブルが新しく作成されます。

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

 「[AWS Glue で Amazon Redshift Spark コネクターを使用する](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-redshift.html#aws-glue-programming-etl-redshift-using)」を参照してください。