🔍
sqlcmdで、Azure Data Lake Storageを利用する(マネージドサービスIDを使用)
はじめに
Azure Data Lake Storageに対して、匿名アクセス、SAS を使って利用する方法を記事にしてきました。
今回はマネージドサービスIDを使った方法を記事にしました。
概要
- 保存場所のストレージアカウントへのアクセス権限を、Azure Synapse Analyticsに対して割り当てます
- Azure Synapse Analyticsで、資格情報やデータソースを作成します
- アクセスは、Cloud Shell上のsqlcmdから行います
参考
やってみた
以前に作成した環境が土台となります。
ストレージへのアクセス許可
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