■本記事の目的
Snowflakeのデータロードを理解する。
ユーザー管理のAzureBLOBStorageからSnowflakeにデータロードを行います。
コンテナーおよび取込用のテストデータ(CSV形式)は、事前に作成済みとします。
※階層型名前空間を有効にしないのでコンテナー配下のフォルダはありません。
■前回の記事
Snowflake Azure BLOB Storageデータロード:①ストレージ統合
■概要
Azureストレージのネットワークルールを構成します。
■前提
SnowflakeはAzure(tokyoリージョン)にホストします。トライアル環境です。
■Azureストレージのネットワーク設定
SnowflakeとストレージがAzureでの組み合わせ場合は、VnetIDで仮想ネットワーク内部に限定したセキュアアクセスを構成することができます。
実際に設定していきます。
SnowflakeをホストしているVnetの情報を取得します。
Snowflakeで、以下を実行します。
use role ACCOUNTADMIN;
SELECT SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO();
後ほど、コマンドにサブネットIDとして、入れるので以下のように分解しておきます。
※サブネットが2つ存在していますので、サブネット1,サブネット2とします。
{"snowflake-vnet-subnet-id":["/subscriptions/<サブスクリプション名>/resourceGroups/<リソースグループ名>/providers/Microsoft.Network/virtualNetworks/<仮想ネットワーク名>/subnets/<サブネット1名>","/subscriptions/<サブスクリプション名>/resourceGroups/<リソースグループ名>/providers/Microsoft.Network/virtualNetworks/<仮想ネットワーク名>/subnets/<サブネット2名>"]}
↓↓↓↓以下のように分解しておく
#サブネット1ID:
"/subscriptions/<サブスクリプション名>/resourceGroups/<リソースグループ名>/providers/Microsoft.Network/virtualNetworks/<仮想ネットワーク名>/subnets/<サブネット1名>"
#サブネット2ID:
"/subscriptions/<サブスクリプション名>/resourceGroups/<リソースグループ名>/providers/Microsoft.Network/virtualNetworks/<仮想ネットワーク名>/subnets/<サブネット2名>"
取得できたら、次に上記の情報をネットワークルールに追加する必要があるのですが、
事前にユーザー管理のAzureで、仮想ネットワーク(VNet)、サブネットを作成しておく必要があります。別途作成してください。
また、AzureCLIをインストールする必要があります。以下からインストラーをダウンロードして、インストールしてください。
公式リファレンスより引用
Azure CLI をインストールする方法
AzureCLIを、今回はコマンドプロンプト(CMD)から使用します。
ネットワークルールの有無を確認します。
az storage account network-rule list --resource-group "<リソースグループ名>" --account-name "<ストレージアカウント名>" --query virtualNetworkRules
次に以下のコマンドで、サービスエンドポイントを展開します。
※仮想ネットワークとサブネットは、事前にユーザー管理のAzureに作成します。
az network vnet subnet update --resource-group "<リソースグループ名>" --vnet-name "<仮想ネットワーク名>" --name "<サブネット名>" --service-endpoints "Microsoft.Storage.Global"
実行すると以下のJSON形式で、返ってきます。
{
"addressPrefix": "<サブネットIPアドレス(CIDR)>",
"delegations": [],
"etag": "W/\"<ETAG情報>"",
"id": "<サブネットID>",
"name": "<サブネット名>",
"privateEndpointNetworkPolicies": "Disabled",
"privateLinkServiceNetworkPolicies": "Enabled",
"provisioningState": "Succeeded",
"resourceGroup": "<リソースグループ名>",
"serviceEndpoints": [
{
"locations": [
"*"
],
"provisioningState": "Succeeded",
"service": "Microsoft.Storage.Global"
}
],
"type": "Microsoft.Network/virtualNetworks/subnets"
}
ネットワークルールにSnowflakeのVNet、サブネット情報を追加します。
以下のコマンドに、前段で分解したSnowflakeのサブネットIDを入れて各実行します。
※登録するサブネットが2つ存在していますので、サブネット1、サブネット2とします。
#Snowflakeのサブネット1を登録します。
az storage account network-rule add --resource-group "<MYリソースグループ名>" --account-name "<MYストレージアカウント名>" --subnet <サブネット1ID>
#Snowflakeのサブネット2を登録します。
az storage account network-rule add --resource-group "<MYリソースグループ名>" --account-name "<MYストレージアカウント名>" --subnet <サブネット2ID>
JSON形式の結果が返ってきたらOKです。(長いので割愛)
ネットワークルールの有無を確認します。
az storage account network-rule list --resource-group "<リソースグループ名>" --account-name "<ストレージアカウント名>" --query virtualNetworkRules
以下のように登録されていたらOKです。
[
{
"action": "Allow",
"state": "Succeeded",
"virtualNetworkResourceId": "<サブネット1ID>"
},
{
"action": "Allow",
"state": "Succeeded",
"virtualNetworkResourceId": "<サブネット2ID>"
}
]
以上でネットワーク構成は完了です。
■あとがき
Azureストレージのネットワーク構成が、少しCLI含めて行う必要があったので
今回はネットワーク構成だけで記事1つとしています。
次回は、外部ステージから行います。