クライアント接続のリダイレクト¶
クライアントリダイレクトを使用すると、ビジネス継続性と障害復旧のために、またはアカウントを別のリージョンやクラウドプラットフォームに移行するときに、クライアント接続を異なる リージョン のSnowflakeアカウントにリダイレクトできます。
このトピックの内容:
クライアントリダイレクトの紹介¶
クライアントリダイレクトは、Snowflake 接続 オブジェクトを介して実装されます。接続オブジェクトは、SnowflakeクライアントでSnowflakeに接続するために使用する安全な 接続 URL を保存します。
接続 URL のホスト名は、共通ドメイン名に加えて、組織名と接続オブジェクト名で構成されます。
organization_name-connection_name.snowflakecomputing.com
このホスト名は、接続先のアカウントを指定しないことに注意してください。アカウント管理者は、そのアカウントの接続を プライマリ接続 として機能するように指定することにより、使用するアカウントを決定します。接続 URL を使用してSnowflakeに接続すると、プライマリ接続を含むアカウントに接続するようになります。
リージョンまたはクラウドプラットフォームで停止が発生し、その停止がプライマリ接続のアカウントに影響を与える場合、管理者は、プライマリ接続として機能するように、別のリージョンまたはクラウドプラットフォームにある別のアカウントの接続を昇格できます。
この停止の間、同じ接続 URL を引き続き使用してSnowflakeに接続できます。Snowflakeは、新しく昇格された接続を持つアカウント(停止の影響を受けるリージョンまたはクラウドプラットフォーム外のアカウント)への接続 URL を解決します。
注釈
プライマリ接続とセカンダリ接続を保存するSnowflakeアカウントは、異なる リージョン でホストする必要があります。
クライアントリダイレクトフロー¶
クライアントリダイレクトの構成 (このトピック内)にあるステップを実行して、クライアント接続用の接続 URL を作成します。これには、プライマリ接続とリンクされたセカンダリ接続の作成が含まれます。
接続 URL を使用して接続するようにSnowflakeクライアントを更新します。 接続 URL の使用 (このトピック内)には、サポートされているクライアントと接続の詳細のリストが含まれています。
プライマリ接続が配置されているリージョンでサービスが停止した場合は、 クライアント接続のリダイレクト (このトピック内)のステップを実行して接続 URL を更新し、セカンダリ接続にリダイレクトします。
停止が解決したら、 クライアント接続のリダイレクト のステップを実行して、クライアント接続を元のプライマリ接続にリダイレクトします。
次の図は、同じ組織内にあるが、同じまたは異なるクラウドプラットフォーム上の異なるリージョン(Region A
と Region B
)にある2つのアカウントのクライアントリダイレクトフローを示しています。
プライマリ接続は Region A
の Account 1
にあります。接続 URL を使用するSnowflakeクライアントは Account 1
に接続します。
Region A
でサービスが停止すると、クライアント接続に失敗します。
Region B
の Account 2
にある接続は、プライマリ接続として機能するように昇格されます。接続 URL を使用するSnowflakeクライアントは Account 2
に接続するようになりました。
例¶
次の SQL ステートメントは、クライアントリダイレクトワークフローを通過します。各ステップについては、このトピックの次のセクションで詳しく説明します。
通常のクライアント接続: クライアントリダイレクトの構成¶
ソースアカウントにプライマリ接続を作成¶
新しいプライマリ接続を作成し、組織内にある他のアカウントへのフェールオーバーを有効にします。フェールオーバーが有効になっている各アカウントは、プライマリ接続のアカウントとは異なるリージョンにする必要があります。
フェールオーバーを有効にする各アカウントの SHOW REPLICATION ACCOUNTS の出力にある account_name
列に注意してください。
ソース アカウントで次のステートメントを実行します。
-- Create a new primary connection
CREATE CONNECTION myconnection;
-- View accounts in your organization that are enabled for replication
SHOW REPLICATION ACCOUNTS;
-- Configure failover accounts for the primary connection
ALTER CONNECTION myconnection
ENABLE FAILOVER TO ACCOUNTS myorg.myaccount2, myorg.myaccount3;
-- View the details for the connection
SHOW CONNECTIONS;
SnowflakeアカウントでSnowflakeサービスへのプライベート接続が有効になっている場合は、接続 URL の DNS CNAME 記録を作成および管理する必要があります。詳細については、 Snowflakeサービスへのプライベート接続用 DNS 設定の構成 をご参照ください。
ターゲットアカウントでの実行¶
プライマリ接続にリンクされたセカンダリ接続を作成します。セカンダリ接続の名前は、プライマリ接続と同じ名前にする必要があります。
CREATE CONNECTION myconnection
AS REPLICA OF myorg.myaccount1.myconnection;
SnowflakeアカウントでSnowflakeサービスへのプライベート接続が有効になっている場合は、接続 URL の DNS CNAME 記録を作成または更新する必要があります。詳細については、 Snowflakeサービスへのプライベート接続用 DNS 記録の変更 をご参照ください。
ソースリージョンで停止が発生: フェールオーバー¶
プライマリ接続が配置されているリージョンで停止が発生した場合は、別のリージョンでセカンダリ接続を昇格し、プライマリ接続として機能させます。
ターゲットアカウントでの実行¶
ALTER CONNECTION myconnection PRIMARY;
SnowflakeアカウントでSnowflakeサービスへのプライベート接続が有効になっている場合は、接続 URL の DNS CNAME 記録を作成または更新する必要があります。詳細については、 Snowflakeサービスへのプライベート接続用 DNS 記録の変更 をご参照ください。
解決された停止: フェールバック¶
停止が解決されたら、元のプライマリ接続を昇格して、再びプライマリ接続として機能させます。
ソースアカウントでの実行¶
プライマリに昇格する接続があるアカウントから、次のコマンドを実行します。
ALTER CONNECTION myconnection PRIMARY;
SnowflakeアカウントでSnowflakeサービスへのプライベート接続が有効になっている場合は、接続 URL の DNS CNAME 記録を作成または更新する必要があります。詳細については、 Snowflakeサービスへのプライベート接続用 DNS 記録の変更 をご参照ください。
クライアントリダイレクトの構成¶
このセクションでは、接続グループにプライマリ接続と1つ以上のセカンダリ接続を作成する方法について説明します。
前提条件¶
アカウントのクライアントリダイレクト機能を有効にするには、組織の管理者(ORGADMIN ロールを持つユーザー)が、2つ以上のアカウントの複製を有効にする必要があります。複製を有効にするための詳細な手順については、 前提条件: 組織内のアカウントの複製を有効にする をご参照ください。
プライマリ接続の作成¶
重要
Snowflakeは、システムで作成されたときに、組織に一意の生成された名前を割り当てました。組織名は、接続オブジェクトで定義され、アカウントにアクセスするためにSnowflakeクライアントによって送信された接続 URL の一部です。接続オブジェクトを作成する前に、Snowflakeの組織名が適切であることを確認します。システムにある組織名を変更するには、 Snowflakeサポート にお問い合わせください。
Snowsight または SQL を使用して、ソースアカウントにプライマリ接続を作成できます。
Snowsightを使用したプライマリ&セカンダリ接続の作成¶
Snowsight を使用して接続を作成するには、次の手順を完了します。
注釈
Snowsight を使用して接続を作成できるのは、 ACCOUNTADMIN ロールを持つユーザーだけです。
ACCOUNTADMIN ロールを持つユーザーとしてターゲットアカウントにサインインする必要があります。そうでない場合は、サインインするよう促されます。
Snowsight にサインインし、 Admin » Accounts に移動します。
Client Redirect を選択します。
+ Connection を選択します。
Target Account を選択します。
Connection Name ボックスに、以下の要件を満たす接続名を入力します。
アルファベット文字で始まる必要があり、文字、10進数(0~9)、およびアンダースコア(_)のみを含めることができます。
組織内にある接続名とアカウント名全体で一意にする必要があります。
Create Connection を選択します。
SQL を使用したプライマリ接続の作成¶
注釈
ACCOUNTADMIN ロールを持つユーザーのみがこのセクションの SQL コマンドを実行できます。
CREATE CONNECTION コマンドを使用して新しいプライマリ接続を作成します。各プライマリ接続名は、組織内にあるすべての接続名とアカウント名全体において一意である必要があります。
接続名は、Snowflakeアカウントへの接続に使用される接続 URL の一部として含まれています。
たとえば、
myconnection
という名前の接続を作成するには、CREATE CONNECTION myconnection;
ALTER CONNECTION ... ENABLE FAILOVER TO ACCOUNTS ステートメントを使用して、このプライマリ接続を変更します。この接続(つまり、セカンダリ接続)のフェールオーバーオプションを保存できる、組織内にあるアカウントのコンマ区切りのリストを提供します。
セカンダリ接続を保存するアカウントは、プライマリ接続を保存するアカウントとは異なるリージョンでホストする必要があります。クライアントリダイレクトは、リージョン間でのみ正常に動作します。たとえば、同じリージョンでクライアント接続を
account1
からaccount2
にリダイレクトしようとすると、クライアントリダイレクトは機能しません。複製が有効になっている組織内のアカウントの完全なリストを表示するには、 SHOW REPLICATION ACCOUNTS を実行します。
たとえば、
myorg
組織のアカウントmyaccount2
とmyaccount3
に、それぞれmyconnection
接続のセカンダリ接続を保存することを許可します。ALTER CONNECTION myconnection ENABLE FAILOVER TO ACCOUNTS myorg.myaccount2, myorg.myaccount3;
SHOW CONNECTIONS コマンドを実行して、接続の詳細を表示します。
SHOW CONNECTIONS; +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+ | snowflake_region | created_on | account_name | name | comment | is_primary | primary | failover_allowed_to_accounts | connection_url | organization_name | account_locator | |--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------| | AWS_US_WEST_2 | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1 | MYCONNECTION | NULL | true | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3 | myorg-myconnection.snowflakecomputing.com | MYORG | MYACCOUNTLOCATOR1 | +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
セカンダリ接続の作成¶
CREATE CONNECTION ... AS REPLICA OF を使用してプライマリ接続にリンクされた、1つ以上のアカウントでセカンダリ接続を作成します。セカンダリ接続を作成できるのは、 プライマリ接続の作成 の ALTER CONNECTION ... ENABLE FAILOVER TO ACCOUNTS ステートメントで指定したアカウントのみであることに注意してください。
各ターゲットアカウントで CREATE CONNECTION ... AS REPLICA OF ステートメントを実行して、指定したプライマリ接続のレプリカを作成します。
重要
各セカンダリ接続は、プライマリ接続と同じ名前である 必要があります。接続名は接続 URL に含まれています。
セカンダリ接続を作成する ターゲット アカウントで、このセクションの SQL ステートメントを実行します。
注釈
ACCOUNTADMIN ロールを持つユーザーのみがこのセクションの SQL コマンドを実行できます。
SHOW CONNECTIONS コマンドを実行して、すべての接続を表示します。プライマリ接続の
primary
列の値をコピーします。次のステップでセカンダリ接続を作成するときに、この値を使用します。SHOW CONNECTIONS; +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+ | snowflake_region | created_on | account_name | name | comment | is_primary | primary | failover_allowed_to_accounts | connection_url | organization_name | account_locator | |--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------| | AWS_US_WEST_2 | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1 | MYCONNECTION | NULL | true | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3 | myorg-myconnection.snowflakecomputing.com | MYORG | MYACCOUNTLOCATOR1 | +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
CREATE CONNECTION ... AS REPLICA OF コマンドを実行して、セカンダリ接続を作成します。
たとえば、
myorg.myaccount1.myconnection
プライマリ接続にリンクされているmyconnection
という名前のセカンダリ接続を作成します。AS REPLICA OF
の後に、プライマリ接続の完全修飾名(前のステップで出力された SHOW CONNECTIONS からコピーした名前)を貼り付けます。CREATE CONNECTION myconnection AS REPLICA OF MYORG.MYACCOUNT1.MYCONNECTION;
SHOW CONNECTIONS コマンドを実行して、セカンダリ接続が作成されたことを確認します。
SHOW CONNECTIONS; +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+ | snowflake_region | created_on | account_name | name | comment | is_primary | primary | failover_allowed_to_accounts | connection_url | organization_name | account_locator | |--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------| | AWS_US_WEST_2 | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1 | MYCONNECTION | NULL | true | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3 | myorg-myconnection.snowflakecomputing.com | MYORG | MYACCOUNTLOCATOR1 | | AWS_US_EAST_1 | 2020-07-22 13:52:04.925 -0700 | MYORG.MYACCOUNT2 | MYCONNECTION | NULL | false | MYORG.MYACCOUNT1.MYCONNECTION | | myorg-myconnection.snowflakecomputing.com | MYORG | MYACCOUNTLOCATOR2 | +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
Snowflakeサービスへのプライベート接続用 DNS 設定の構成¶
SnowflakeアカウントでSnowflakeサービスへのプライベート接続が有効になっている場合、ネットワーク管理者は接続 URL 用 DNS 記録を作成および管理する必要があります。ネットワーク管理者は、ネットワークアーキテクチャの構成に基づいて、 CNAME 記録、エイリアス記録、またはエイリアスを使用できます。
その他のアカウントすべてでは、Snowflakeが DNS 記録を作成および管理します。一貫性を保つため、以下の例では CNAME 記録を使用しています。
これらのステップでは、例として AWS PrivateLink を使用しますが、SnowflakeアカウントでAzure Private LinkまたはGoogle Cloud Private Service Connectを使用する場合も、ステップは同じです。
クライアントリダイレクトが有効になっているアカウントの1つで SHOW CONNECTIONS を実行します。たとえば、
myaccount1
とmyaccount2
に対して AWS PrivateLink が有効になっているとします。SHOW CONNECTIONS; +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+ | snowflake_region | created_on | account_name | name | comment | is_primary | primary | failover_allowed_to_accounts | connection_url | organization_name | account_locator | |--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------| | AWS_US_WEST_2 | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1 | MYCONNECTION | NULL | true | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3 | myorg-myconnection.snowflakecomputing.com | MYORG | MYACCOUNTLOCATOR1 | |--------------------|-------------------------------|---------------------|-------------------|-----------------|---------------|-------------------------------|-------------------------------------|-------------------------------------------|-------------------|-------------------| | AWS_US_WEST_2 | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1 | MYCONNECTION | NULL | true | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3 | myorg-myconnection.snowflakecomputing.com | MYORG | MYACCOUNTLOCATOR1 | | AWS_US_EAST_1 | 2020-07-22 13:52:04.925 -0700 | MYORG.MYACCOUNT2 | MYCONNECTION | NULL | false | MYORG.MYACCOUNT1.MYCONNECTION | | myorg-myconnection.snowflakecomputing.com | MYORG | MYACCOUNTLOCATOR2 | +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
myaccount1
またはmyaccount2
で SYSTEM$GET_PRIVATELINK_CONFIG 関数を呼び出す場合、 CONNECTION_URL 列にあるこのコマンドの出力はprivatelink-connection-urls
リストと一致する必要があることに注意してください。このリストには、privatelink
セグメントでフォーマットされた接続 URL がすでに含まれています(次のステップで示すとおり)。オプションで、このステップでコマンドを実行するか、関数を呼び出すことができます。関数を呼び出す場合は、 URLs を変更せずにそのまま使用します。CONNECTION_URL 列の値を記録し、2つの URLs を作成して、プライベート接続と OCSP をサポートします。
snowflakecomputing.com
の直前の URL にprivatelink
セグメントを追加します(この例ではmyorg-myconnection.privatelink.snowflakecomputing.com
)。URL (この例では
ocsp.myorg-myconnection.privatelink.snowflakecomputing.com
)の先頭にocsp
セグメントを追加します。
DNS プロバイダーが提供するツールを使用して、接続 URL と OCSP URL の CNAME 記録を作成します。
変更された CONNECTION_URL 列の値を使用して、ドメイン(またはエイリアス)を設定します。
接続 URL がプライマリSnowflakeアカウント URL に解決されるように記録を構成します。選択した URL 形式に基づいて、クラウドリージョンと AWS PrivateLink の URL セグメントをすべて含めるようにしてください。これがプライマリアカウント URL であり、クライアント接続が接続 URL にリダイレクトされる場所です。
OCSP URL が、Azureのアカウントのプライベートエンドポイント IP アドレス、または AWS のアカウントのプライベートエンドポイント ID 値のいずれかに解決するように記録を構成します。
フェールオーバーの場合は、 Snowflakeサービスへのプライベート接続用 DNS 記録の変更 に示すように、 URL 接続がセカンダリアカウント URL をポイントするように、 DNS 設定を手動で更新する必要があります。同様に、 OCSP の設定を更新して、プライベートエンドポイント IP のアドレスまたはプライベートエンドポイント ID の値をポイントするようにする必要があります。
例:
myaccount1.us-west-2.privatelink.snowflakecomputing.com. ocsp.myaccount1.us-west-2.privatelink.snowflakecomputing.com.
または、組織名とアカウント名 URL を使用します。
例:
myorg-myaccount1.privatelink.snowflakecomputing.com. ocsp.myorg-myaccount1.privatelink.snowflakecomputing.com.
後続のピリオドに注意してください。これを含める必要があります。
ユーザーは、次の接続 URL 形式を使用してSnowflakeに接続します。
organization_name-connection_name.privatelink.snowflakecomputing.com
条件:
organization_name
Snowflake組織の名前。ユーザーが接続するSnowflakeアカウントは、この組織に含まれています。
connection_name
接続オブジェクトの名前。
詳細については、次をご参照ください。
接続 URL の使用 (このトピック内)
Snowflakeサービスへのプライベート接続用 DNS 記録の変更 (このトピック内)
接続 URL の使用¶
このセクションでは、さまざまなSnowflakeクライアントの構成で接続 URL を参照する手順について説明します。
サポートされているSnowflakeクライアント¶
クライアントリダイレクトは Snowsight と Snowflakeの従来のコンソール でサポートされています。加えて、次のSnowflakeクライアントバージョン(およびそれ以上)は、クライアントリダイレクトをサポートしています。
Snowflakeクライアント |
サポートされている最小バージョン |
---|---|
SnowSQL |
1.1.82 |
Python用Snowflakeコネクタ |
1.8.3 |
Node.jsドライバー |
1.2.0 |
Go Snowflakeドライバー |
1.2.0 |
.NET ドライバー |
1.0.0 |
JDBC ドライバー |
3.8.4 |
ODBC ドライバー |
2.19.4 |
Snowpark |
すべてのバージョン |
Snowflakeクライアントの構成¶
Snowflakeに接続するときは、接続 URL に次のホスト名を使用します。
ホスト名:
organization_name-connection_name.snowflakecomputing.com
条件:
organization_name
Snowflake組織の名前。ユーザーが接続するSnowflakeアカウントは、この組織に含まれています。
connection_name
接続オブジェクトの名前。
重要
Snowflakeサービスへのプライベート接続
Snowflakeサービスへのプライベート接続を使用しているお客様は、 snowflakecomputing.com
の直前に privatelink
セグメントを URL に追加する必要があります。
organization_name-connection_name.privatelink.snowflakecomputing.com
Snowsight¶
app.snowflake.com のアカウント名フィールドに次のように入力します。
<organization-name>-<connection-name>
例:
myorg-myconnection
organization-connection
を使用してログインすると、 Snowsight は現在のプライマリ接続における特定のリージョンとロケーターに移動します。停止中、接続がリダイレクトされたら、ユーザーは organization-connection
を介して再度ログインし、新しいプライマリに接続する必要があります。
Snowflakeの従来のコンソール¶
ウェブブラウザーに次の URL を入力します。
https://<organization_name>-<connection_name>.snowflakecomputing.com/
例:
https://myorg-myconnection.snowflakecomputing.com/
SnowSQL¶
SnowSQL config
ファイルの accountname
接続パラメーターで接続 URL のホスト名を指定します。 config
ファイルについては、 SnowSQL の構成 をご参照ください。
accountname = <organization_name>-<connection_name>
username = <username>
password = <password>
例:
accountname = myorg-myconnection
username = jsmith
password = mySecurePassword
Python用Snowflakeコネクタ¶
接続関数を呼び出すときに、 account
接続パラメーターで接続 URL のホスト名を指定します。詳細については、 Pythonコネクタ API および Pythonコネクタの使用 をご参照ください。
con = snowflake.connector.connect (
account = <organization_name>-<connection_name>
user = <username>
password = <password>
)
例:
con = snowflake.connector.connect (
account = myorg-myconnection
user = jsmith
password = mySecurePassword
)
JDBC ドライバー¶
接続文字列で接続 URL のホスト名を指定します。詳細については、 JDBC ドライバーの構成 をご参照ください。
jdbc:snowflake://<organization_name>-<connection_name>.snowflakecomputing.com/?user=<username>&password=<password>
例:
jdbc:snowflake://myorg-myconnection.snowflakecomputing.com/?user=jsmith&password=mySecurePassword
ODBC ドライバー¶
サーバー接続パラメーターで接続 URL のホスト名を指定します。接続パラメーターの詳細については、 ODBC 構成および接続パラメーター をご参照ください。
[ODBC Data Sources]
<account_name> = SnowflakeDSIIDriver
[<dsn_name>]
Description = SnowflakeDB
Driver = SnowflakeDSIIDriver
Locale = en-US
SERVER = <organization_name>-<connection_name>.snowflakecomputing.com
例:
[ODBC Data Sources]
myaccount = SnowflakeDSIIDriver
[client_redirect]
Description = SnowflakeDB
Driver = SnowflakeDSIIDriver
Locale = en-US
SERVER = myorg-myconnection.snowflakecomputing.com
Node.jsドライバー¶
account
接続オプションで接続 URL のホスト名を指定します。接続パラメーターの詳細については、 Node.jsオプションリファレンス をご参照ください。
var configuration = {
username: '<username>',
password: '<password>',
account: <organization_name>-<connection_name>.
}
var connection = snowflake.createConnection(configuration)
例:
var configuration = {
username: 'jsmith',
password: 'mySecurePassword',
account: myorg-myconnection.
}
var connection = snowflake.createConnection(configuration)
Go Snowflakeドライバー¶
Account
パラメーターで接続 URL のホスト名を指定します。詳細については、 Go Snowflakeドライバー をご参照ください。
cfg := &Config{
Account: "<organization_name>-<connection_name>",
User: "<username>",
Password: "<password>"
}
dsn, err := DSN(cfg)
例:
cfg := &Config{
Account: "myorg-myconnection",
User: "jsmith",
Password: "mySecurePassword"
}
dsn, err := DSN(cfg)
Snowpark¶
Snowpark Python¶
セッションを確立するために使用したPythonディクショナリ(dict
)の account
接続パラメーターで、接続 URL のホスト名を指定します。セッションの作成の詳細については、 Snowpark Pythonのセッションの作成 をご参照ください。
connection_parameters = {
"account": "<organization_name>-<connection_name>",
"user": "<snowflake_user>",
"password": "<snowflake_password>"
}
例:
connection_parameters = {
"account": "myorg-myconnection",
"user": "jsmith",
"password": "mySecurePassword"
}
Snowpark Java¶
プロパティファイルの URL
プロパティで接続 URL を指定するか、セッションの確立に使用する Map
を指定します。セッションの作成の詳細については、 Snowpark Javaのセッションの作成 をご参照ください。
# Properties file (a text file) for establishing a Snowpark session
URL = https://<organization_name>-<connection_name>.snowflakecomputing.com
例:
# Properties file (a text file) for establishing a Snowpark session
URL = https://myorg-myconnection.snowflakecomputing.com
Snowpark Scala¶
プロパティファイルの URL
プロパティで接続 URL を指定するか、セッションの確立に使用する Map
を指定します。セッションの作成の詳細については、 Snowpark Scalaのセッションの作成 をご参照ください。
# Properties file (a text file) for establishing a Snowpark session
URL = https://<organization_name>-<connection_name>.snowflakecomputing.com
例:
# Properties file (a text file) for establishing a Snowpark session
URL = https://myorg-myconnection.snowflakecomputing.com
認証とクライアントリダイレクト¶
セキュリティ統合が 複製 されない場合、ユーザーは、ソースアカウントと各ターゲットアカウントでプロビジョニングする必要があります。
フェデレーション認証と SSO¶
各ターゲットアカウントで個別にフェデレーション認証を構成します。 フェデレーション認証を使用するためのSnowflakeの構成 の設定オプションを使用して、IDプロバイダー(IdP)の詳細を提供します。
注釈
Snowflakeは、フェールオーバーの場合にユーザーが正しいアカウントにリダイレクトされるように、アカウント URL ではなく接続 URL を使用して SAML 2.0準拠のIDプロバイダー(IdP)を構成することをお勧めします。
OAuth¶
各ターゲットアカウントで OAuth のセキュリティ統合オブジェクトを構成します。セキュリティ統合オブジェクトは、ソースアカウントにある同じオブジェクトと同一である必要があります。手順については、適切なトピックをご参照ください。
セキュリティ統合プロパティを取得するには、ソースアカウントのセキュリティ統合ごとに DESCRIBE INTEGRATION コマンドをクエリします。次に、 CREATE INTEGRATION コマンドを実行して、ターゲットアカウントに各セキュリティ統合を再作成します。
OAuth リダイレクト動作¶
クライアント接続の認証にSnowflake OAuth を使用していて、接続 URL を使用してSnowflakeに接続している場合は、接続 URL が別のアカウントにリダイレクトされると(例: フェールオーバーの場合)、再認証するように求められます。Snowflake OAuth トークンは、特定のアカウントでの使用に有効です。別のリージョンのアカウントをポイントするように接続 URL が更新されると、既存の OAuth トークンは無効になります。
フェールオーバーの場合、接続 URL が新しいアカウントに更新されると、クライアントは invalid OAuth access token
エラーで接続解除されます。接続を再確立するには、再認証してアクセス許可に同意する必要があります。
注釈
そのアカウントに OAuth セキュリティ統合が複製 されている場合は、接続 URL が新しいアカウントに更新されるときに、再認証を求めるプロンプトが表示 されません。詳細については、 OAuth セキュリティ統合の複製 をご参照ください。
クライアント接続のリダイレクト¶
プライマリ接続が配置されているリージョンでサービスが停止した場合は、セカンダリ接続を保存しているアカウントにクライアント接続をリダイレクトします。
プライマリ接続として機能するセカンダリ接続の昇格¶
リダイレクトを開始するには、 ALTER CONNECTION を使用してプライマリ接続として機能するように、使用可能なリージョンでセカンダリ接続を昇格する必要があります。同時に、以前のプライマリ接続がセカンダリ接続になります。
昇格している現在のセカンダリ接続を含むターゲットアカウントで、このセクションの SQL ステートメントを実行します。
例:
-- view all connections
SHOW CONNECTIONS;
+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
| snowflake_region | created_on | account_name | name | comment | is_primary | primary | failover_allowed_to_accounts | connection_url | organization_name | account_locator |
|--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------|
| AWS_US_WEST_2 | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1 | MYCONNECTION | NULL | true | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3 | myorg-myconnection.snowflakecomputing.com | MYORG | MYACCOUNTLOCATOR1 |
| AWS_US_EAST_1 | 2020-07-22 13:52:04.925 -0700 | MYORG.MYACCOUNT2 | MYCONNECTION | NULL | false | MYORG.MYACCOUNT1.MYCONNECTION | | myorg-myconnection.snowflakecomputing.com | MYORG | MYACCOUNTLOCATOR2 |
+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
-- promote the secondary connection to serve as the primary connection
ALTER CONNECTION myconnection PRIMARY;
-- verify that the former secondary connection was promoted successfully
SHOW CONNECTIONS;
+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
| snowflake_region | created_on | account_name | name | comment | is_primary | primary | failover_allowed_to_accounts | connection_url | organization_name | account_locator |
|--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------|
| AWS_US_WEST_2 | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1 | MYCONNECTION | NULL | false | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3 | myorg-myconnection.snowflakecomputing.com | MYORG | MYACCOUNTLOCATOR1 |
| AWS_US_EAST_1 | 2020-07-22 13:52:04.925 -0700 | MYORG.MYACCOUNT2 | MYCONNECTION | NULL | true | MYORG.MYACCOUNT1.MYCONNECTION | | myorg-myconnection.snowflakecomputing.com | MYORG | MYACCOUNTLOCATOR2 |
+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
Snowflakeサービスへのプライベート接続用 DNS 記録の変更¶
クライアント接続をセカンダリアカウントにリダイレクトするには、ネットワーク管理者は Snowflakeサービスへのプライベート接続用 DNS 設定の構成 で作成した DNS 設定を変更する必要があります。
DNS プロバイダーが提供するツールを使用して、接続 URL の DNS 設定を変更します。
宛先のホスト名を、新しいプライマリ接続を保存するアカウントの完全なSnowflakeアカウント URL として設定します。これには、アカウントがホストされているリージョンとクラウドプラットフォームを識別する追加のセグメント、および AWS PrivateLink、Azure Private Link、またはGoogle Cloud Private Service Connectのサポートが含まれます。これは、接続 URL へのクライアント接続がリダイレクトされるようになるアカウント名です。DNS 設定を更新する際には、必ずプライベート接続 OCSP URL を含めてください。
例:
myaccount1.us-east-1.privatelink.snowflakecomputing.com.
ocsp.myaccount1.us-east-1.privatelink.snowflakecomputing.com.
(末尾のピリオドに注意してください。これを含める必要があります。)
注釈
Snowsightで動作するように、プライベート接続とクライアントリダイレクトを構成できます。DNS の更新に、 SYSTEM$GET_PRIVATELINK_CONFIG 関数の出力からのSnowsight値が含まれていることを確認してください。詳しくは、 プライベート接続およびSnowsight をご参照ください。
接続 URL の更新の確認¶
接続 URL が更新されたことを確認するには、現在の接続リージョンを確認します。接続 URL を使用してSnowflakeに接続し、 CURRENT_REGION 関数を実行します。
SELECT CURRENT_REGION();
接続の変更¶
Snowsight または SQL を使用して接続を作成した後、接続のターゲットアカウントを編集できます。
Snowsightを使用した接続のターゲットアカウントの変更¶
接続を作成した後で、接続のターゲットアカウントを変更することはできますが、接続名を変更することはできません。
注釈
接続を編集するには、 ACCOUNTADMIN ロールを持つユーザーとして、以下のアカウントにサインインする必要があります。
プライマリ接続のソースアカウント。
セカンダリ接続の現在のターゲットアカウント。
プライマリ接続に追加する新しいターゲットアカウント。
Snowsight を使用してプライマリ接続に追加できるターゲットアカウントは1つだけです。ターゲットアカウントを追加するには、 ALTER CONNECTION コマンド を使用します。
Snowsight にサインインし、 Admin » Accounts に移動します。
Client Redirect を選択します。
編集したい接続を探します。行の最後の列で More メニュー (...) を選択します。
SQL を使用して接続のターゲットアカウントを変更します。¶
ALTER CONNECTION コマンドを使用して、プライマリ接続に複数のターゲットアカウントを追加できます。例については、 例 をご参照ください。
接続の切断¶
Snowsight または SQL を使用して接続を切断できます。
Snowsightを使用した接続の切断¶
接続を削除するには、プライマリ接続を持つ ソース アカウントに ACCOUNTADMIN ロールを持つユーザーとしてサインインする必要があります。
Snowsight にサインインし、 Admin » Accounts に移動します。
Client Redirect を選択します。
削除したい接続を探します。行の最後の列で More メニュー (...) を選択します。
Drop を選択してから、 Drop Connection を選択します。
SQL を使用した接続の切断¶
接続を削除するには、 DROP CONNECTION コマンドを使用します。
ターゲットアカウントのすべてのセカンダリ接続を削除します。
ソースアカウントのプライマリ接続を削除します。
例については、 例 をご参照ください。
クライアントリダイレクトのモニター¶
Snowsight または SQL を使用して、組織内のアカウントのクライアントリダイレクト接続と使用状況をモニターできます。
Snowsight を使用したクライアントリダイレクトのモニター¶
注釈
Snowsight を使用して接続の詳細を表示できるのは、 ACCOUNTADMIN ロールを持つユーザーのみです。
ACCOUNTADMIN ロールを持つユーザーとしてターゲットアカウントにサインインする必要があります。そうでない場合は、サインインするよう促されます。
クライアントリダイレクト接続の詳細を表示するには、次の手順を完了します。
Snowsight にサインインし、 Admin » Accounts に移動します。
Replication 、 Client Redirect の順に選択します。
そのセッションでアクティブなウェアハウスがない場合は、ウェアハウスを選択するプロンプトが表示されます。
検索とフィルタを使用して特定の接続をモニターします。
プライマリ接続 (To) またはセカンダリ接続 (From) で結果をフィルタリングするには、 Redirecting を選択します。
各接続について以下の情報を確認できます。
列 |
説明 |
---|---|
Name |
接続名。 |
Redirecting |
接続が To ターゲットアカウントか、 From ソースアカウントか、およびアカウント名を示します。 この列に 利用可能な宛先 が含まれている場合、セカンダリ接続は存在しません。利用可能な宛先数は、プライマリ接続が複製できるターゲットアカウントの数を示します。 複数のセカンダリー接続がある場合、各接続の詳細は別の行に記載されます。 |
Usage |
過去7日間に接続が使用された回数を表示します。そのアカウントの使用状況データを表示するには、ターゲットアカウントにサインインする必要があります。 |
Connection URL |
Snowflakeクライアントで使用する接続 URL 。列の接続 URL を選択して、 URL をコピーします。 |
SQL を使用したクライアントリダイレクトのモニター¶
SHOW CONNECTIONS コマンドと LOGIN_HISTORY 機能を使用して、接続の詳細を表示し、使用状況をモニターできます。
接続の詳細を表示¶
接続名と詳細は、 SHOW CONNECTIONS コマンドを使用して取得できます。
SHOW CONNECTIONS;
戻り値:
+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
| snowflake_region | created_on | account_name | name | comment | is_primary | primary | failover_allowed_to_accounts | connection_url | organization_name | account_locator |
|--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------|
| AWS_US_WEST_2 | 2023-07-05 08:57:11.143 -0700 | MYORG.MYACCOUNT1 | MYCONNECTION | NULL | true | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3 | myorg-myconnection.snowflakecomputing.com | MYORG | MYACCOUNTLOCATOR1 |
| AWS_US_EAST_1 | 2023-07-08 09:15:11.143 -0700 | MYORG.MYACCOUNT2 | MYCONNECTION | NULL | false | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3 | myorg-myconnection.snowflakecomputing.com | MYORG | MYACCOUNTLOCATOR1 |
|--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------|
ユーザーが使用する接続 URL の確認¶
テーブル関数の LOGIN_HISTORY , LOGIN_HISTORY_BY_USER ファミリーをクエリして、過去7日以内のユーザーのログインアクティビティを表示します。出力は、どのユーザーとSnowflakeクライアントが接続 URL を使用しているかを示します。REPORTED_CLIENT_TYPE 列と REPORTED_CLIENT_VERSION 列には、Snowflakeへの各接続に使用されるクライアントとバージョンが表示され、 CONNECTION 列には、使用される接続 URL (存在する場合)が表示されます。
注釈
クライアントが接続 URL ではなく、アカウント URL で構成されたIDプロバイダー(IdP)を介して認証する場合は、認証の完了後、 IdP がクライアントをアカウント URL に転送します。このログインイベントの CONNECTION 列は NULL です。 認証とクライアントリダイレクト (このトピック内)をご参照ください。
たとえば、過去72時間に、現在のロールがモニターを許可されている各ユーザーのログインイベントを最大100個取得するとします。
SELECT event_timestamp, user_name, client_ip, reported_client_type, is_success, connection
FROM TABLE(INFORMATION_SCHEMA.LOGIN_HISTORY(
DATEADD('HOURS',-72,CURRENT_TIMESTAMP()),
CURRENT_TIMESTAMP()))
ORDER BY EVENT_TIMESTAMP;
クライアントリダイレクトの現在の制限¶
そのアカウントに OAuth セキュリティ統合が複製されていない場合は、接続 URL と OAuth の統合を使用するクライアント接続では、接続 URL が更新されて別のアカウントをポイントすると、再認証が必要になります。詳細については、 OAuth リダイレクト動作 をご参照ください。
ウェブブラウザーは、ブラウザーのキャッシュが原因で、リダイレクトに数分かかる場合があります。
リダイレクトが機能することを確認する必要がある場合は、 別のクライアント でSnowflakeに接続できます。
または、ブラウザーのキャッシュの問題を回避するために、新しいプライベートブラウザーウィンドウ(例: Google Chromeのシークレットモード)を開きます。一部のウェブブラウザーでは、プライベートモードまたはシークレットモードでも引き続きデータをキャッシュする可能性があることに注意してください。ブラウザーのキャッシュの使用を避けるには、新しいプライベートブラウザーウィンドウを開く前に、開いているプライベートブラウザーウィンドウとタブをすべて閉じます。
Snowsight を使用して追加できるターゲットアカウントは1つのみです。許可されるフェイルオーバーアカウントのリストに複数のターゲットアカウントを追加するには、 ALTER CONNECTION ... ENABLE FAILOVER TO ACCOUNTS コマンドを使用します。