😎
Azure Data FactoryでAzure Filesにコピーを使わずファイルを作成する
はじめに
おそらくもっと合理的な方法があると思いますが、のっぴきならない理由でAzure Files上にADFでファイルを作成しなけらばならないときのために手順を残しました。Blob上にファイルを置きたい場合はこちらの記事もあります。
やること
ADFからREST APIを利用してAzure Files上にファイルを作成します。
REST APIを叩くためにアプリ登録を事前にしておきます。当然ですが、アプリ登録したあとはストレージアカウントなどに対して書き込み権限を付与する必要があります。
また、Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action
もしくはMicrosoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action
が必要となるのでStorage File Data Privileged Contributorなども付与しておきます。
Azure Filesのファイルを作成する
パイプライン
今回はWebアクティビティを2つ使用してファイルを作成します。
最初のアクティビティでTokenをゲットし、それを使ってファイルを作成します。
変数設定
変数としては次のものを用意しました。環境に応じて変更してください。
ここではSecretも変数としていますが本番利用の際はくれぐれも埋め込まないようにしてください。
Token取得
URL
@concat('https://login.microsoftonline.com/',
variables('vTenantID'),
'/oauth2/token'
)
Body
@concat('grant_type=client_credentials&client_id=',
variables('vClientID'),
'&client_secret=',
variables('vClientSecret'),
'&resource=https://storage.azure.com/'
)
ヘッダには以下を設定。
Content-Type: application/x-www-form-urlencoded
ファイル作成
URL
@concat('https://',
variables('vStorageAccountName'), '.file.core.windows.net/',
variables('vContainerName'), '/',
variables('vDirectoryName'), '/',
'createfile01-', utcNow('yyyyMMdd_hhmmss'),'.txt'
)
ヘッダには以下の値を設定します。Authorizationには、GetTokenの出力からaccess_tokenを利用します。
x-ms-version: 2022-11-02
x-ms-date: @utcNow('R')
Authorization: @concat('Bearer ', activity('GetToken').output.access_token)
x-ms-type: file
x-ms-content-length: 1024
x-ms-file-request-intent: backup
設定可能なヘッダなど詳細はこちらです。
結果
こんな感じでファイルが作成されます。
Discussion