プライベート接続エンドポイントの管理: AWS¶
このトピックでは、 AWS へのプライベート接続で使用するプライベート接続エンドポイントの管理方法について説明します。
プライベート接続エンドポイントのプロビジョニング¶
SYSTEM$PROVISION_PRIVATELINK_ENDPOINT システム関数を使用し、サービスまたはリソースとホスト名を指定して、プライベート接続エンドポイントを作成できます。このシステム関数を使用する場合は、 ACCOUNTADMIN ロールを使用する必要があります。
注釈
外部ステージまたは外部ボリュームにプライベート接続を使用する場合は、ホスト名を指定する際にワイルドカード文字 (*
) を使用する必要があります。ワイルドカードを使用しても、すべてのS3バケットがプライベート接続でアクセスされるわけではありません。プライベート接続が有効であるSnowflakeオブジェクト(つまり、外部ステージまたは外部ボリューム)から参照されるバケットのみ、 VPC エンドポイント経由でアクセスできます。
SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 関数はプロバイダーサービス名とホスト名を引数として受け取ります。これらの値は、 AWS コマンドラインから describe-vpc-endpoint-services
サブコマンドを使用して取得できます。 AWS ドキュメント で説明されているように、この AWS サブコマンドは ServiceName
フィールドと PrivateDnsName
フィールドを含む JSON オブジェクトを返します。SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 関数にどの値を使用するかは、以下の表をご参照ください。
SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 引数 |
|
---|---|
|
|
|
外部ステージまたは外部ボリュームにプライベート接続を使用する場合は、値をワイルドカードで指定する必要があります。 |
例えば、Amazon S3への外部アクセスで PrivateLink を作成するには、次の SQL ステートメントを実行して us-west-2
エンドポイントを構成します。
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
'com.amazonaws.us-west-2.s3',
'*.s3.us-west-2.amazonaws.com'
);
エンドポイントを作成した後、エンドポイントを使用できるようになるまでには時間がかかります。作成したエンドポイントのステータスの確認については、 SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO を参照してください。
サービスへのプライベート接続エンドポイントの削除¶
SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT システム関数を使用し、サービスまたはリソースを指定して、プライベート接続エンドポイントを削除できます。
エンドポイントが削除されると、そのエンドポイントはキューに入り、7日後に削除されます。
このシステム関数を使用する場合は、 ACCOUNTADMIN ロールを使用する必要があります。
例えば、Amazon S3への外部アクセスで PrivateLink を削除するには、次の SQL ステートメントを実行します。
SELECT SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT('com.amazonaws.us-west-2.s3');
サービスへのプライベート接続エンドポイントの復元¶
SYSTEM$RESTORE_PRIVATELINK_ENDPOINT システム関数を使用し、サービスまたはリソースを指定して、削除キューに残っている削除済みのプライベート接続エンドポイントを復元できます。削除キューにエンドポイントが見つからない場合、エンドポイントを復元することはできません。
このシステム関数を使用する場合は、 ACCOUNTADMIN ロールを使用する必要があります。
例えば、Amazon S3への外部アクセスで PrivateLink を復元するには、次の SQL ステートメントを実行します。
SELECT SYSTEM$RESTORE_PRIVATELINK_ENDPOINT('com.amazonaws.us-west-2.s3');
サービスへのプライベート接続エンドポイントのリストアップ¶
SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO システム関数を使用すると、アカウント内のすべてのプライベート接続エンドポイント、およびエンドポイントに関する情報をリストアップできます。
このシステム関数を使用する場合は、 ACCOUNTADMIN ロールを使用する必要があります。
例えば、すべての AWS PrivateLink エンドポイントを AWS サービスでリストアップするには、次の SQL ステートメントを実行します。
SELECT SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO();
[
{
"provider_service_name": "com.amazonaws.us-west-2.s3",
"snowflake_endpoint_name": "vpce-123456789012abcdea",
"endpoint_state": "CREATED",
"host": "*.s3.us-west-2.amazonaws.com",
"status": "Available"
},
...
]
関数によって返される JSON オブジェクトのフィールドについては、 戻り値 をご参照ください。
注釈
ACCOUNT_USAGE スキーマの OUTBOUND_PRIVATELINK_ENDPOINTS ビューをクエリして、アカウントのプライベートエンドポイントをリストアップすることもできます。