

# AWS Glue Studio での Snowflake への接続
<a name="connecting-to-data-snowflake"></a>

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

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

 AWS Glue Studio は Snowflake の統合接続を作成します。詳細については、「[考慮事項](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations)」を参照してください。

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

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

**注記**  
 統合接続 (接続 v2) は、基本的な認証認証情報の `USERNAME`、`PASSWORD` キーを使用するようにすべての接続を標準化します。`sfUser`、`sfPassword` を含むシークレットを使用して、API 経由で v1 接続を作成することもできます。

 AWS Glue Studio で **データソース - Snowflake** ノードを追加するには、既存の AWS Glue Snowflake 接続を選択するか、新しい接続を作成します。Snowflake に接続するように設定された `JDBC` タイプの接続ではなく、`SNOWFLAKE` タイプの接続を選択する必要があります。次の手順に従って、AWS Glue Snowflake 接続を作成します。

**Snowflake 接続を作成するには**

1. Snowflake でユーザー *snowflakeUser* とパスワード *snowflakePassword* を作成します。

1. このユーザーが操作する Snowflake ウェアハウス *snowflakeWarehouse* を決定します。これを Snowflake の *snowflakeUser* の `DEFAULT_WAREHOUSE` として設定するか、次のステップのために覚えておきます。

1. AWS Secrets Manager で、Snowflake の認証情報を使用してシークレットを作成します。Secrets Manager でシークレットを作成するには、AWS Secrets Manager ドキュメントの「[AWS Secrets Manager シークレットを作成する](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html#create_secret_cli)」にあるチュートリアルに従ってください。シークレットを作成したら、次のステップのためにシークレット名 *secretName* を保存しておきます。
   + **[キー/値のペア]** をクリックして、`sfUser` キーを使用して *snowflakeUser* のペアを作成します。
   + **[キー/値のペア]** をクリックして、`sfPassword` キーを使用して *snowflakePassword* のペアを作成します。
   + **[キー/値のペア]** をクリックして、`sfWarehouse` キーを使用して *snowflakeWarehouse* のペアを作成します。Snowflake にデフォルト設定がある場合、これは必要ありません。

1. AWS Glue データカタログで、「[AWS Glue 接続の追加](https://docs.aws.amazon.com//glue/latest/dg/console-connections.html)」にある手順に従って接続を作成します。接続を作成したら、次のステップのために接続名 *connectionName* を保存しておきます。
   + **[接続タイプ]** をクリックして、[Snowflake] を選択します。
   + **[Snowflake URL]** をクリックして、Snowflake インスタンスのホスト名を指定します。URL では、`account_identifier.snowflakecomputing.com` という形式のホスト名を使用します。
   + **[AWS Secret]** をクリックして、*secretName* を入力します。

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

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

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

 `SNOWFLAKE` AWS Glue 接続は、AWS Secrets Manager シークレットを使用して認証情報を提供します。AWS Glue Studio のジョブおよびデータプレビューのロールには、このシークレットを読み取る許可が必要です。

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

**前提条件**:
+ Snowflake 認証情報用の AWS Secrets Manager シークレット
+ Snowflake タイプの AWS Glue データカタログ接続

****データソース - Snowflake** ノードを追加するには**

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

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

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

1.  単一のテーブルを選択した場合は、Snowflake スキーマの名前を入力します。

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

1.  **[パフォーマンスとセキュリティ]** (オプション) で、次を設定します。
   +  **[クエリプッシュダウンを有効化]** - Snowflake インスタンスに作業をオフロードするかどうかを選択します。

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

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

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

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

 `SNOWFLAKE` AWS Glue 接続は、AWS Secrets Manager シークレットを使用して認証情報を提供します。AWS Glue Studio のジョブおよびデータプレビューのロールには、このシークレットを読み取る許可が必要です。

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

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

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

1.  **データターゲット - Snowflake** ターゲットノードを使用する場合、次のオプションから選択できます。
   +  **APPEND** — テーブルがすでに存在している場合は、新しいデータをテーブルにすべて挿入してダンプします。テーブルが存在しない場合は、新規にテーブルを作成し、そこに新しいデータをすべて挿入します。
   +  **MERGE** — 指定した条件に基づいて、AWS Glue がターゲットとなるテーブルのデータを更新するか、またはデータを追加します。

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

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

       一致しない場合、次のオプションを指定します。
       + ターゲットのデータセットに、新しい行としてソースデータを挿入します。
       + 何もしない。
     + **カスタム MERGE ステートメントの入力** — その後 **[MERGE ステートメントの検証]** を選択し、ステートメントが有効か、無効かを検証できます。
   +  **TRUNCATE** — 既にテーブルが存在している場合は、ターゲットのテーブルの内容を削除してから、ターゲットのテーブルを削除します。削除が成功してから、すべてのデータを挿入します。テーブルが存在していない場合、テーブルを作成し、すべてのデータを挿入します。削除が成功しなかった場合、操作は失敗します。
   +  **DROP** — 既にテーブルが存在している場合は、テーブルのメタデータとデータを削除します。削除が成功してから、すべてのデータを挿入します。テーブルが存在していない場合、テーブルを作成し、すべてのデータを挿入します。削除が成功しなかった場合、操作は失敗します。

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

「AWS Glue デベロッパーガイド」の「[Snowflake connections](https://docs.aws.amazon.com//glue/latest/dg/aws-glue-programming-etl-connect-snowflake-home.html)」を参照してください。