facebook twitter hatena line email

「Azure/CLI」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(ページの作成:「==インストール== macの場合 brew update && brew install azure-cli 公式:https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli」)
 
(コンテナ内の削除)
 
(同じ利用者による、間の38版が非表示)
行4: 行4:
  
 
公式:https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli
 
公式:https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli
 +
 +
==login==
 +
az login
 +
ブラウザに飛び、ログインが成功すると、以下メッセージが帰ってくる
 +
<pre>
 +
The default web browser has been opened at https://login.microsoftonline.com/common/oauth2/authorize. Please continue the login in the web browser. If no web browser is available or if the web browser fails to open, use device code flow with `az login --use-device-code`.
 +
You have logged in. Now let us find all the subscriptions to which you have access...
 +
The following tenants don't contain accessible subscriptions. Use 'az login --allow-no-subscriptions' to have tenant level access.
 +
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx '既定のディレクトリ'
 +
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx 'hogeuser'
 +
[
 +
  {
 +
    "cloudName": "AzureCloud",
 +
    "homeTenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
 +
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx",
 +
    "isDefault": true,
 +
    "managedByTenants": [],
 +
    "name": "dv_xxx_cloudconfig-virtual-event-service_azureplan",
 +
    "state": "Enabled",
 +
    "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
 +
    "user": {
 +
      "name": "hogehoge@example.com",
 +
      "type": "user"
 +
    }
 +
  }
 +
]
 +
</pre>
 +
==コマンドにloginコマンドをつける==
 +
* --auth-mode login
 +
* --connection-string, --account-key
 +
* --sas-token
 +
===auth-mode login===
 +
途中でブラウザのログイン画面に移動
 +
 +
===sas-token===
 +
azure管理画面のコンテナの共有アクセストークンでアクセス許可の読み取り、追加、作成、書き込み、削除、リストなどをつけて、BLOB SASトークンをコピー
 +
 +
sp=racwdl&st=2021-03-20T11:50:30Z&se=2021-03-20T19:50:30Z&spr=https&sv=2020-08-04&sr=c&sig=xxxxxxZOIc8I4VptWt63fxrfV3Fh8G631XKtFcOxxxx%3D
 +
 +
コマンドにするときは以下のように、&を\&にエスケープしておく。
 +
--sas-token sp=racwdl\&st=2021-03-20T11:50:30Z\&se=2021-03-20T19:50:30Z\&spr=https\&sv=2020-08-04\&sr=c\&sig=xxxxxxZOIc8I4VptWt63fxrfV3Fh8G631XKtFcOxxxx%3D
 +
 +
shで実行時は、""で囲む(囲まないと、"RESPONSE Status: 401 Server failed to authenticate the request. Please refer to the information in the www-authenticate header."なエラーが出る)
 +
--sas-token "sp=racwdl&st=2021-03-20T11:50:30Z&se=2021-03-20T19:50:30Z&spr=https&sv=2020-08-04&sr=c&sig=xxxxxxZOIc8I4VptWt63fxrfV3Fh8G631XKtFcOxxxx%3D"
 +
 +
====権限エラーが出るとき====
 +
RESPONSE Status: 403 This request is not authorized to perform this operation using this permission.
 +
azure管理画面のコンテナの共有アクセストークンで、適切な権限が、ついてないので確認する
 +
 +
==コンテナupload==
 +
<pre>
 +
az storage blob upload \
 +
    --account-name <storage-account> \
 +
    --container-name <container> \
 +
    --name dir1/text.txt \
 +
    --file /Users/user1/Desktop/test.txt \
 +
    --auth-mode login
 +
</pre>
 +
* storage-accountは、左上のストレージアカウント
 +
* container-nameはコンテナーを選択した際に表示されるコンテナリスト内の名前
 +
* nameはazure内のpath
 +
* fileはローカル内のpath
 +
 +
 +
公式:https://docs.microsoft.com/ja-jp/azure/storage/blobs/storage-quickstart-blobs-cli
 +
 +
==コンテナupload(dir)旧==
 +
<pre>
 +
az storage blob directory upload \
 +
    --account-name <storage-account> \
 +
    -c <container> \
 +
    -s "path/to/directory/*" \
 +
    -d dir1 --recursive
 +
</pre>
 +
 +
引数指定で、DIRの上げ方は色々ある
 +
<pre>
 +
-s "path/to/file" -d directory
 +
-s "path/to/directory" -d directory --recursive
 +
-s "path/to/*" -d directory --recursive
 +
</pre>
 +
 +
===--container/-cのエラーが出たら===
 +
the following arguments are required: --container/-c
 +
コンテナ引数は--container-nameではなく --containerか、-cにするとよい。
 +
 +
===storage-previewのメッセージが出てきたら===
 +
The command requires the extension storage-preview. Do you want to install it now? The command will continue to run after the extension is installed. (Y/n):
 +
yを押してインストール
 +
 +
===storage blob directoryは非推奨===
 +
This command is implicitly deprecated because command group 'storage blob directory' is deprecated and will be removed in a future release. Use 'az storage fs directory' instead
 +
 +
az storage fs directoryが良いらしい
 +
 +
===unrecognized argumentsエラーが出る===
 +
大きめサイズのjsonで起こった。謎だったが、blob syncを使ってuploadできたの良しとした。
 +
 +
==コンテナupload(dir)新==
 +
<pre>
 +
az storage fs directory upload \
 +
    --account-name <storage-account> \
 +
    --file-system <container> \
 +
    -s "path/to/directory/*" \
 +
    -d dir1 --recursive
 +
</pre>
 +
* -fは--file-systemでコンテナ名を入れる
 +
 +
公式:https://docs.microsoft.com/ja-jp/cli/azure/storage/fs/directory?view=azure-cli-latest#az_storage_fs_directory_upload
 +
 +
===Failed to perform copy operation.エラーが出る===
 +
これは常に出てた・・・。ログを見ると以下が出てた。
 +
RESPONSE Status: 409 This endpoint does not support BlobStorageEvents or SoftDelete. Please disable these account features if you would like to use this endpoint.
 +
BlobStorageEventsまたはSoftDeleteをサポートしていません。ということ。
 +
 +
==コンテナにupload時にファイル同期==
 +
<pre>
 +
az storage blob sync \
 +
    --account-name <storage-account> \
 +
    --container <container> \
 +
    -s "path/to/directory" \
 +
    -d dir1 \
 +
    --sas-token "sp=racwdl&st=2021-03-20T11:50:30Z&se=2021-03-20T19:50:30Z&spr=https&sv=2020-08-04&sr=c&sig=xxxxxxZOIc8I4VptWt63fxrfV3Fh8G631XKtFcOxxxx%3D"
 +
</pre>
 +
 +
* --source -s:同期元のソースファイルのパス。
 +
* --destination -d:Blob 名の前に付加される宛先パス。
 +
 +
==コンテナ内リスト取得==
 +
$ az storage blob list \
 +
    --account-name <storage-account> \
 +
    --container-name hoge-workspace \
 +
    --auth-mode login \
 +
    | grep name
 +
    "name": "dir1/file1.txt,
 +
    "name": "dir1/file2.txt",
 +
 +
* storage-accountは、左上のストレージアカウント
 +
 +
参考:https://www.se-from30.com/azure/azurecli-az-storage-blob-01/

2022年4月19日 (火) 15:51時点における最新版

インストール

macの場合

brew update && brew install azure-cli

公式:https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli

login

az login

ブラウザに飛び、ログインが成功すると、以下メッセージが帰ってくる

The default web browser has been opened at https://login.microsoftonline.com/common/oauth2/authorize. Please continue the login in the web browser. If no web browser is available or if the web browser fails to open, use device code flow with `az login --use-device-code`.
You have logged in. Now let us find all the subscriptions to which you have access...
The following tenants don't contain accessible subscriptions. Use 'az login --allow-no-subscriptions' to have tenant level access.
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx '既定のディレクトリ'
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx 'hogeuser'
[
  {
    "cloudName": "AzureCloud",
    "homeTenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx",
    "isDefault": true,
    "managedByTenants": [],
    "name": "dv_xxx_cloudconfig-virtual-event-service_azureplan",
    "state": "Enabled",
    "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "user": {
      "name": "hogehoge@example.com",
      "type": "user"
    }
  }
]

コマンドにloginコマンドをつける

  • --auth-mode login
  • --connection-string, --account-key
  • --sas-token

auth-mode login

途中でブラウザのログイン画面に移動

sas-token

azure管理画面のコンテナの共有アクセストークンでアクセス許可の読み取り、追加、作成、書き込み、削除、リストなどをつけて、BLOB SASトークンをコピー

sp=racwdl&st=2021-03-20T11:50:30Z&se=2021-03-20T19:50:30Z&spr=https&sv=2020-08-04&sr=c&sig=xxxxxxZOIc8I4VptWt63fxrfV3Fh8G631XKtFcOxxxx%3D

コマンドにするときは以下のように、&を\&にエスケープしておく。

--sas-token sp=racwdl\&st=2021-03-20T11:50:30Z\&se=2021-03-20T19:50:30Z\&spr=https\&sv=2020-08-04\&sr=c\&sig=xxxxxxZOIc8I4VptWt63fxrfV3Fh8G631XKtFcOxxxx%3D

shで実行時は、""で囲む(囲まないと、"RESPONSE Status: 401 Server failed to authenticate the request. Please refer to the information in the www-authenticate header."なエラーが出る)

--sas-token "sp=racwdl&st=2021-03-20T11:50:30Z&se=2021-03-20T19:50:30Z&spr=https&sv=2020-08-04&sr=c&sig=xxxxxxZOIc8I4VptWt63fxrfV3Fh8G631XKtFcOxxxx%3D"

権限エラーが出るとき

RESPONSE Status: 403 This request is not authorized to perform this operation using this permission.

azure管理画面のコンテナの共有アクセストークンで、適切な権限が、ついてないので確認する

コンテナupload

az storage blob upload \
    --account-name <storage-account> \
    --container-name <container> \
    --name dir1/text.txt \
    --file /Users/user1/Desktop/test.txt \
    --auth-mode login
  • storage-accountは、左上のストレージアカウント
  • container-nameはコンテナーを選択した際に表示されるコンテナリスト内の名前
  • nameはazure内のpath
  • fileはローカル内のpath


公式:https://docs.microsoft.com/ja-jp/azure/storage/blobs/storage-quickstart-blobs-cli

コンテナupload(dir)旧

az storage blob directory upload \
    --account-name <storage-account> \
    -c <container> \ 
    -s "path/to/directory/*" \
    -d dir1 --recursive

引数指定で、DIRの上げ方は色々ある

-s "path/to/file" -d directory
-s "path/to/directory" -d directory --recursive
-s "path/to/*" -d directory --recursive

--container/-cのエラーが出たら

the following arguments are required: --container/-c

コンテナ引数は--container-nameではなく --containerか、-cにするとよい。

storage-previewのメッセージが出てきたら

The command requires the extension storage-preview. Do you want to install it now? The command will continue to run after the extension is installed. (Y/n): 

yを押してインストール

storage blob directoryは非推奨

This command is implicitly deprecated because command group 'storage blob directory' is deprecated and will be removed in a future release. Use 'az storage fs directory' instead

az storage fs directoryが良いらしい

unrecognized argumentsエラーが出る

大きめサイズのjsonで起こった。謎だったが、blob syncを使ってuploadできたの良しとした。

コンテナupload(dir)新

az storage fs directory upload \
    --account-name <storage-account> \
    --file-system <container> \ 
    -s "path/to/directory/*" \
    -d dir1 --recursive
  • -fは--file-systemでコンテナ名を入れる

公式:https://docs.microsoft.com/ja-jp/cli/azure/storage/fs/directory?view=azure-cli-latest#az_storage_fs_directory_upload

Failed to perform copy operation.エラーが出る

これは常に出てた・・・。ログを見ると以下が出てた。

RESPONSE Status: 409 This endpoint does not support BlobStorageEvents or SoftDelete. Please disable these account features if you would like to use this endpoint.

BlobStorageEventsまたはSoftDeleteをサポートしていません。ということ。

コンテナにupload時にファイル同期

az storage blob sync \
    --account-name <storage-account> \
    --container <container> \ 
    -s "path/to/directory" \
    -d dir1 \
    --sas-token "sp=racwdl&st=2021-03-20T11:50:30Z&se=2021-03-20T19:50:30Z&spr=https&sv=2020-08-04&sr=c&sig=xxxxxxZOIc8I4VptWt63fxrfV3Fh8G631XKtFcOxxxx%3D"
  • --source -s:同期元のソースファイルのパス。
  • --destination -d:Blob 名の前に付加される宛先パス。

コンテナ内リスト取得

$ az storage blob list \
   --account-name <storage-account> \
   --container-name hoge-workspace \
   --auth-mode login \
   | grep name
   "name": "dir1/file1.txt,
   "name": "dir1/file2.txt",
  • storage-accountは、左上のストレージアカウント

参考:https://www.se-from30.com/azure/azurecli-az-storage-blob-01/