「バッチ処理でローカルのファイルをAzureのStorage accountsに上げたい」となったので、その時に使うPowershellスクリプトを作ろうとしたのですが、ログインしてする方法ばかりで困ったので記録用に。
「ログインせずに」したかった理由としては、ログインに使ったアカウントは2段階認証が必要でaz login -u $username -p $password
が使えなかったからです。
環境
- OS: Windows
1. Azure CLIをインストール
2. Powershellスクリプトの作成
2-1. Storage accountsにつなげる
「Windows PowerShell ISE」というアプリを開き、「ファイル>新規作成」をします。
開けたら以下のコードを貼り付けます。
$account_name = ''
$account_key = ''
$container_name = ''
これらの変数に値を入れていくために、Storage accountsからkeyとaccount nameを取ってきます。
account_nameには「ストレージアカウント名」の値を、
account_keyには「キー」の値を入れます。
conainer_nameには「Name」の文字列を入れます。
画像だと「$logs」しかないので、新しく作ってもらうのがいいと思います。
では接続できるかどうかを試してみます。
ファイルの一番最後にコマンドを追加し、上の緑の三角マークをクリックして実行します。
$account_name = ''
$account_key = ''
$container_name = ''
az storage blob list --account-key $account_key --account-name $account_name -c $container_name
空っぽのコンテナであれば空配列が、ファイルが入っていればいろいろ表示されると思います。
表示されれば次へ。
2-2. ファイルをアップロードする
次はファイルをアップロードします。
アップロードするファイルを用意し、以下の変数名に値を入れてください。
file_nameは拡張子さえ同じであればなんでも大丈夫です。
$file_name = ''
$file_path = ''
「C:\Images\Image001.png」に画像ファイルがあるとすると、こんな感じになります。
$file_name = 'Image001.png'
$file_path = 'C:\Images\Image001.png'
ではアップロードするコマンドを貼り付けて実行してみます。
$account_name = ''
$account_key = ''
$container_name = ''
$file_name = ''
$file_path = ''
az storage blob upload --account-key $account_key --account-name $account_name -c $container_name --name $file_name --file $file_path
私の場合は赤い文字で何やら表示されましたが、Account Storageを確認したところ、ちゃんとアップロードできてました。
参考