🔍

sqlcmdで、Azure Data Lake Storageを利用する(マネージドサービスIDを使用)

2024/03/31に公開

はじめに

Azure Data Lake Storageに対して、匿名アクセス、SAS を使って利用する方法を記事にしてきました。

https://zenn.dev/arbr/articles/a408d0399d50ab
https://zenn.dev/arbr/articles/768ce799e7311b

今回はマネージドサービスIDを使った方法を記事にしました。

概要

  • 保存場所のストレージアカウントへのアクセス権限を、Azure Synapse Analyticsに対して割り当てます
  • Azure Synapse Analyticsで、資格情報やデータソースを作成します
  • アクセスは、Cloud Shell上のsqlcmdから行います

参考

https://learn.microsoft.com/ja-jp/azure/synapse-analytics/sql/develop-storage-files-storage-access-control?tabs=managed-identity

やってみた

以前に作成した環境が土台となります。
https://zenn.dev/arbr/articles/0de760d21649d6

ストレージへのアクセス許可

CSVファイル群の格納場所のストレージアカウントに、Azure Synapse Analyticsからのアクセス許可を付与します。

ストレージアカウントで、[追加]-[ロールの割り当ての追加]をクリックします。

ストレージBLOG共同作成者 を付与しました。(より狭い権限でも可能かもしれませんが試していません。)

メンバータブで、マネージドIDを選択し、対象のAzure Synapse Analyticsを選択します。

作成が成功すると、ロールの割り当てに表示されます。

データベースのリソース作成

資格情報などを作成していきます。各クエリはSynapse Studioから実行しました。

-- 別途、データベースを作成します。作成後はデータベースを変更します。
CREATE DATABASE hogehoge

CREATE CREDENTIAL [<コンテナーのURL>]
WITH IDENTITY='Managed Identity'

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '#Strongpassword'

CREATE DATABASE SCOPED CREDENTIAL SynapseIdentity
WITH IDENTITY = 'Managed Identity';

CREATE EXTERNAL DATA SOURCE mysample
WITH (    LOCATION   = '<コンテナーのURL>',
          CREDENTIAL = SynapseIdentity
)

クエリ

作成したデータソースに対して、クエリを実行します。
Cloud Shellのsqlcmdからログインします。

sqlcmd -S <サーバーレス SQL エンドポイント> -d hogehoge -U sqladminuser

SELECTを実行してみます。

SELECT count(*) FROM OPENROWSET(    BULK 'corona-tokyo/2022/130001_tokyo_covid19_patients_2022.csv'    , DATA_SOURCE='mysample'    , FORMAT='CSV'    , PARSER_VERSION='2.0') AS [result];

結果が返ってきました。問題なく使えているようです。

おわりに

今回はAzure Data Lake Storageへのアクセスを、マネージドサービスIDを用いて行ってみました。
ロールの割り当て という、クラウドサービスでは馴染みの方法でも利用することができました。
この記事がどなたかのお役に立てれば幸いです。

Discussion