1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Snowflake Azure BLOB Storageデータロード:②ストレージネットワーク構成

Last updated at Posted at 2024-03-14

目次に戻る

■本記事の目的

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();

情報をコピーしてテキストなどに貼り付けておきます。
image.png

後ほど、コマンドにサブネット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

何も設定していない場合は、以下のように出ます。
image.png

次に以下のコマンドで、サービスエンドポイントを展開します。
※仮想ネットワークとサブネットは、事前にユーザー管理の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つとしています。
次回は、外部ステージから行います。

■次の記事

Snowflake Azure BLOB Storageデータロード:③外部ステージ~データロード
 
目次に戻る

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?