Snowflake接続の管理¶
Snowflake CLI を使用する前に、 Snowflake CLI がどのように Snowflake に接続するかを指定する接続を定義する必要があります。 Snowflake CLI は、接続パラメーターが複数の場所で定義されている場合にどの値を使用するかを決定するために、次の優先順位階層を使用します。
コマンドラインパラメーター
特定の
config.toml
パラメーターを上書きする環境変数の例:SNOWFLAKE_CONNECTIONS_MYCONNECTION_PASSWORD
手動または:codenowrap:
snow connection add
コマンドを使用してconfig.toml
ファイルに定義された接続SNOWFLAKE_USER
などの汎用環境変数。
また、--temporary-connection
オプションを使用することもできます。この場合、config.toml
で定義する必要はありません。
注意
セキュリティ向上のため、Snowflakeでは:codenowrap:SNOWFLAKE_CONNECTIONS_<NAME>_PASSWORD
または:codenowrap:SNOWFLAKE_PASSWORD
環境変数の使用を強く推奨しています。
コネクションの定義¶
接続定義は、以下のように config.toml
ファイルの [connections] セクションに保存されます。
[connections.myconnection]
account = "myaccount"
user = "jondoe"
password = "hunter2"
warehouse = "my-wh"
database = "my_db"
schema = "my_schema"
接続定義は、 Snowflake Connector for Python と同じ構成オプションをサポートしています。さらに、ファイルの一番上にある:codenowrap:default_connection_name
変数でデフォルトの接続を指定することができます。接続定義の中に含めることはできません。例:
default_connection_name = "myconnection"
[connections.myconnection]
account = "myaccount"
...
注釈
MacOS およびLinuxシステムの場合、 Snowflake CLI は、 config.toml
ファイルの権限を、ファイル所有者のみが読み取りおよび書き込みできるように制限する必要があります。ファイルに必要なファイル権限を設定するには、次のコマンドを実行します。
chown $USER config.toml
chmod 0600 config.toml
代替構成ファイル¶
注釈
Snowflake CLI の場合、Snowflake は構成定義に config.toml
ファイルを使用することを推奨します。ただし、必要に応じて connections.toml
ファイルを使用することもできます。
Snowflake CLI は、 connections.toml
構成ファイルもサポートしています。このファイルは、 config.toml
ファイルと同じディレクトリに配置し、接続のみを含める必要があります。 connections.toml
の構成には、 connections
のない別のセクション名が必要です。例えば、[connections.myconnection]
は、単に:codenowrap:[myconnection]
となります。
注釈
config.toml
と connections.toml
の両方の構成に接続が含まれている場合、 Snowflake CLI は connections.toml
の構成のみを使用します。
snow connection
コマンドを使用して、Snowflake への接続を管理または追加します。¶
snow connection
コマンドを使用すると、Snowflake 接続を作成、管理、テストできます。
接続を追加します。¶
新しい接続を作成し、 構成ファイル に追加するには、以下のようにします。
snow connection add
コマンドを実行します。
snow connection add
プロンプトが表示されたら、必要な接続、アカウント、ユーザー名のパラメーターと、その他必要なオプションのパラメーターを入力します。
Name for this connection: <connection-name> Snowflake account name: <account-name> Snowflake username: <user-name> Snowflake password [optional]: <password-value> Role for the connection [optional]: <role-name> Warehouse for the connection [optional]: <warehouse-name> Database for the connection [optional]: <database-name> Schema for the connection [optional]: <schema-name> Connection host [optional]: <host-name> Connection port [optional]: <port-value> Snowflake region [optional]: <region-name> Authentication method [optional]: <authentication-method> Path to private key file [optional]: <path-to-private-key> Path to token file [optional]: <path-to-mfa-token> Wrote new connection myconnection2 to config.toml
また、図のようにコマンドラインで特定のパラメーターの値を追加することもできます。
snow --config-file config.toml connection add -n myconnection2 --account myaccount2 --user jdoe2
注釈
--private_key_file
オプションが存在しないファイルを参照している場合など、コマンドがエラーで終了すると、接続は config.toml
設定ファイルに保存されません。
デフォルトでは、snow connection add
コマンドは、オプションのパラメーターがコマンドラインで指定されていない場合、プロンプトを表示します。account
のようなオプションパラメーターを指定せずに接続を追加し、対話式プロンプトをスキップしたい場合は、示されているように:codenowrap:--no-interactive
オプションを使用することができます。。
snow connection add -n myconnection2 --user jdoe2 --no-interactive
定義された接続を一覧表示する¶
利用可能な接続を一覧表示するには、次のように:codenowrap:snow connection list
コマンドを入力します。
snow connection list
+-------------------------------------------------------------------------------------------------+
| connection_name | parameters | is_default |
|-----------------+------------------------------------------------------------------+------------|
| myconnection | {'account': 'myaccount', 'user': 'jondoe', 'password': '****', | False |
| | 'database': 'my_db', 'schema': 'my_schema', 'warehouse': | |
| | 'my-wh'} | |
| myconnection2 | {'account': 'myaccount2', 'user': 'jdoe2'} | False |
+-------------------------------------------------------------------------------------------------+
接続をテストする¶
接続がSnowflakeに正常に接続できるかどうかをテストするには、次のような:codenowrap:snow connection test
コマンドを入力します。
snow connection test -c myconnection2
+--------------------------------------------------+
| key | value |
|-----------------+--------------------------------|
| Connection name | myconnection2 |
| Status | OK |
| Host | example.snowflakecomputing.com |
| Account | myaccount2 |
| User | jdoe2 |
| Role | ACCOUNTADMIN |
| Database | not set |
| Warehouse | not set |
+--------------------------------------------------+
デフォルト接続の設定¶
default_connection_name
構成ファイルと:codenowrap:SNOWFLAKE_DEFAULT_CONNECTION_NAME
変数が設定されていれば、それを上書きして、デフォルトとして使用する構成 Snowflake CLI を指定するために、snow connection set-default
コマンドを使用できます。
次の例では、デフォルトの接続を:codenowrap:myconnection2
に設定しています。
snow connection set-default myconnection2
Default connection set to: myconnection2
注釈
connections.toml
と config.toml
の両方のファイルが存在する場合、 Snowflake CLI は connections.toml
で定義された接続のみを使用します。
Snowflake認証情報に環境変数を使用する¶
構成ファイルではなく、システム環境変数でSnowflake認証情報を指定することもできます。次の汎用環境変数は、接続パラメーターを置き換えるためにのみ使用できます。
SNOWFLAKE_ACCOUNT
SNOWFLAKE_USER
SNOWFLAKE_PASSWORD
SNOWFLAKE_DATABASE
SNOWFLAKE_SCHEMA
SNOWFLAKE_ROLE
SNOWFLAKE_WAREHOUSE
SNOWFLAKE_AUTHENTICATOR
SNOWFLAKE_PRIVATE_KEY_PATH
SNOWFLAKE_SESSION_TOKEN
SNOWFLAKE_MASTER_TOKEN
snow
コマンドに接続パラメーターを渡します。¶
snow
コマンド、接続を必要とするすべてのコマンドで、接続パラメーターを直接渡すことができます。接続構成パラメーターの完全なリストについては、snow sql --help
コマンドを実行します。出力は、接続構成オプションのあるセクションのみを示していることに注意してください。
snow sql --help
╭─ Connection configuration ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --connection,--environment -c TEXT Name of the connection, as defined in your config.toml. Default: default. │
│ --host TEXT Host address for the connection. Overrides the value specified for the connection. │
│ --port INTEGER Port for the connection. Overrides the value specified for the connection. │
│ --account,--accountname TEXT Name assigned to your Snowflake account. Overrides the value specified for the │
│ connection. │
│ --user,--username TEXT Username to connect to Snowflake. Overrides the value specified for the connection. │
│ --password TEXT Snowflake password. Overrides the value specified for the connection. │
│ --authenticator TEXT Snowflake authenticator. Overrides the value specified for the connection. │
│ --private-key-file,--private-key-path TEXT Snowflake private key file path. Overrides the value specified for the connection. │
│ --token-file-path TEXT Path to file with an OAuth token that should be used when connecting to Snowflake │
│ --database,--dbname TEXT Database to use. Overrides the value specified for the connection. │
│ --schema,--schemaname TEXT Database schema to use. Overrides the value specified for the connection. │
│ --role,--rolename TEXT Role to use. Overrides the value specified for the connection. │
│ --warehouse TEXT Warehouse to use. Overrides the value specified for the connection. │
│ --temporary-connection -x Uses connection defined with command line parameters, instead of one defined in │
│ config │
│ --mfa-passcode TEXT Token to use for multi-factor authentication (MFA) │
│ --enable-diag Run python connector diagnostic test │
│ --diag-log-path TEXT Diagnostic report path │
│ --diag-allowlist-path TEXT Diagnostic report path to optional allowlist │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
注意
セキュリティ向上のため、Snowflakeでは:codenowrap:SNOWFLAKE_CONNECTIONS_<NAME>_PASSWORD
または:codenowrap:SNOWFLAKE_PASSWORD
環境変数の使用を強く推奨しています。
SnowSQL からの接続をインポートします。¶
SnowSQL で定義された既存の接続がある場合、 Snowflake CLIconfig.toml
の構成ファイルにインポートすることができます。その際には:codenowrap:snow helpers import-snowsql-connections
コマンドを使用します。
SnowSQL 接続をインポートするには、以下のような:codenowrap:snow helpers import-snowsql-connections
コマンドを入力します:
snow helpers import-snowsql-connections
以下の例では、標準構成ファイルの場所から SnowSQL 接続をインポートしています:
snow helpers import-snowsql-connections
コマンドは SnowSQL 構成ファイルを処理する際、進行状況を表示し、 Snowflake CLI config.toml
ファイルに同名の接続が既に定義されている場合は確認を求めます:
SnowSQL config file [/etc/snowsql.cnf] does not exist. Skipping.
SnowSQL config file [/etc/snowflake/snowsql.cnf] does not exist. Skipping.
SnowSQL config file [/usr/local/etc/snowsql.cnf] does not exist. Skipping.
Trying to read connections from [/Users/<user>/.snowsql.cnf].
Reading SnowSQL's connection configuration [connections.connection1] from [/Users/<user>/.snowsql.cnf]
Trying to read connections from [/Users/<user>/.snowsql/config].
Reading SnowSQL's default connection configuration from [/Users/<user>/.snowsql/config]
Reading SnowSQL's connection configuration [connections.connection1] from [/Users/<user>/.snowsql/config]
Reading SnowSQL's connection configuration [connections.connection2] from [/Users/<user>/.snowsql/config]
Connection 'connection1' already exists in Snowflake CLI, do you want to use SnowSQL definition and override existing connection in Snowflake CLI? [y/N]: Y
Connection 'connection2' already exists in Snowflake CLI, do you want to use SnowSQL definition and override existing connection in Snowflake CLI? [y/N]: n
Connection 'default' already exists in Snowflake CLI, do you want to use SnowSQL definition and override existing connection in Snowflake CLI? [y/N]: n
Saving [connection1] connection in Snowflake CLI's config.
Connections successfully imported from SnowSQL to Snowflake CLI.
詳細については、 snow helpers import-snowsql-connections コマンドリファレンスをご参照ください。
仮接続の使用¶
--temporary-connection [-x]
オプションを使用して、コマンドラインから接続パラメーターを指定することもできます。 config.toml
からのすべての定義を無視し、代わりにコマンドラインオプションで指定された定義を使用します。このアプローチは、構成ファイルを使用しない CI/CD ユースケースに役立ちます。仮接続を使用する場合、 Snowflake CLI は config.toml
ファイルで定義された接続変数を無視しますが、設定した 環境変数 (SNOWFLAKE_ACCOUNT
など)は引き続き使用されます。
snow sql -q "select 42;" --temporary-connection \
--account myaccount \
--user jdoe
select 42;
+----+
| 42 |
|----|
| 42 |
+----+
注意
セキュリティ向上のため、Snowflakeでは:codenowrap:SNOWFLAKE_CONNECTIONS_<NAME>_PASSWORD
または:codenowrap:SNOWFLAKE_PASSWORD
環境変数の使用を強く推奨しています。
接続を認証するその他の方法¶
また、以下の方法を使用して、Snowflakeへの接続を認証することもできます。
認証にプライベートキーファイルを使用する¶
認証にプライベートキーファイルを使用するには、接続構成で:codenowrap:認証コード
パラメーターを SNOWFLAKE_JWT
に設定し、次のようにプライベートキーを含むファイルへのパスを指定する必要があります。
snow connection add
コマンドで、--private_key-file
オプションを図のように指定します。snow connection add \ --connection-name jwt \ --authenticator SNOWFLAKE_JWT \ --private-key-file ~/.ssh/sf_private_key.p8
構成ファイルを使用する。
[connections.jwt] account = "my_account" user = "jdoe" authenticator = "SNOWFLAKE_JWT" private_key_file = "~/sf_private_key.p8"
キーペア認証の設定の詳細については、 キーペア認証とキーペアローテーション をご参照ください。
注釈
プライベートキーがパスフレーズで保護されている場合は、そのパスフレーズを:codenowrap:PRIVATE_KEY_PASSPHRASE
環境変数に設定します。
認証に OAuth を使用する¶
OATH を使って接続するには、以下のどちらかを行います。
snow connection add
コマンドで、--token-file-path
オプションを図のように指定します。snow connection add --token-file-path "my-token.txt"
config.toml
ファイルで、authenticator = "oauth"
を設定し、図のように接続定義にtoken_file_path
パラメーターを追加します。[connections.oauth] account = "my_account" user = "jdoe" authenticator = "oauth" token_file_path = "my-token.txt"
多要素認証(MFA)を使用する¶
MFA を使用するには、
Snowflakeで 多要素認証 を設定し、
authenticator
パラメーターをsnowflake
(デフォルト値)に設定します。プッシュの代わりにDuoが生成したパスコードを使用したい場合は、
--mfa-passcode <passcode>
オプションを使用するか、config.toml
ファイルに:codenowrap:passcode_in_password = true
をセットし、 Pythonで MFA を使用する で説明されているように、パスコードをパスワードに含めます。注釈
認証コードにパスコードを使用したい場合、最初の:codenowrap:
snow
コマンドを実行した後は、トークンが有効である限りパスコードを入力することはできなくなります。以下のことを行ってください:パスワードからパスコードを削除します。
config.toml
ファイルの:codenowrap:passcode_in_password = true
を削除またはコメントします。
MFA キャッシュを有効にします。
あなたのアカウントで、
ALLOW_CLIENT_MFA_CACHING = true
を設定します。config.toml
ファイルで、接続に:codenowrap:authenticator = username_password_mfa
を追加します。
SSO (シングルサインオン)を使用する¶
シングルサインオン(SSO)を使用するようにSnowflakeを構成 している場合、認証に SSO を使用するようにクライアントアプリケーションを構成できます。詳細は Using SSO with client applications that connect to Snowflake を参照し、Python 用の手順を使用して接続を設定します。