AzCopyモジュールを使ってストレージアカウントにファイルをアップロードする方法

# 概要
AzCopyのコマンドを使ってAzureのストレージアカウントにファイル等をアップロードする方法です。

AzCopyの説明とモジュールのダウンロードはこちらから↓
参考資料：[AzCopy v10を使用してAzure Storageにデータをコピーする](https://docs.microsoft.com/ja-jp/azure/storage/common/storage-use-azcopy-v10)

## ①AzCopyモジュールの準備
1. 上記リンクからダウンロードしたAzCopyモジュールを作業端末の任意の場所に格納する。
※いくつか種類があるので、作業端末にあったモジュールをダウンロードしてください。

1. Zipファイルを展開する。

1. **管理者権限**のPowerShellを起動して、モジュールを格納したフォルダに移動する。

1. 下記コマンドを実行してエラーが出力されないことを確認したら準備完了。（簡単。。！）

```
.\azcopy
```
![SnapCrab_No-0003.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/01e0e013-2c50-664b-8dd9-a3c9ffc34122.jpeg)
※システムの環境変数に登録しておくと、フォルダを移動しなくても実行が可能になります。

## ②SASトークンの作成
アップロード先のストレージアカウントを準備します。
アップロード先と外部から接続するときに利用するSASトークンを作成します。

1. Azure Portalにログインして、ストレージアカウントの画面を開く。
1. アップロード先のストレージアカウントをクリック。
![SnapCrab_No-0004.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/dd2ff588-3229-fee3-6c16-3ef19a4297cc.jpeg)
1. 「Shared Access Signature」をクリック。
1. 以下の項目を設定して、「SASと接続文字列を生成する」をクリック。  
    * 使用できるサービス：アップロード先のサービスにチェックが入ってることを確認
    * 使用できるリソースの種類：「サービス」「コンテナー」「オブジェクト」にチェックを入れる
    * 開始日時と有効期限の日時：作成するSASが利用できる期間を指定
![_005.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/b0a60d2f-353d-63b7-3deb-0ed6aaa8423c.jpeg)




1. ページ下部に表示される「SASトークン」をコピーする。
※作成時にのみ表示されるため、忘れずに保存する。
![_006.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/497272ec-daf9-1c6e-e230-7a98f1036ee9.jpeg)

## ③アップロード先の作成
ストレートアカウント内にアップロード先となるBLOBストレージまたはAzure Filesを作成します。

### BLOBストレージにファイルをアップロードする場合
1. 「コンテナー」をクリック。
1. 「+コンテナー」をクリック。 
![_007.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/aa17d550-71be-e820-23c4-dee1f8189a12.jpeg)

1. 任意のコンテナー名を入力し、「作成」をクリック。
![_008.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/f1eaa195-aa80-c0c7-6bc1-40292bf05c89.jpeg)

1. 作成したコンテナーをクリック。
1. 「プロパティ」をクリックし、URLをコピーする。
![_009.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/66bcade1-65bb-c0b2-abc4-0b2c3c685419.jpeg)


### Azure Filesにファイルをアップロードする場合
1. 「ファイル共有」をクリック。
1. 「+ファイル共有」をクリック。 
![_010.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/a353d868-9ac4-7465-ad02-32b0bb654105.jpeg)

1. 任意のファイル共有名とサイズを入力し、「作成」をクリック。
![_011.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/18272161-5b28-1315-c578-966b15871a06.jpeg)

1. 作成したファイル共有をクリック。
1. 「プロパティ」をクリックし、URLをコピーする。
![_012.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/f0d96597-6258-84d5-4a95-4d50985ba983.jpeg)

## ③ファイルのアップロード
作業端末からストレージアカウントにファイルをアップロードします。

1. 作業端末で**管理者権限**のPowerShellを起動して、以下のコマンドを実行する。  

    ```
.\azcopy copy "<コピー元のパス>" "<コピー先のURL><SASトークン>" --recursive=true --overwrite=prompt
    ```
※「ファイルを上書きしますか？」と警告メッセージが出力された場合は、[Y]（表示されているファイルのみ上書きする）または[A]（すべてのファイルを上書きする）を選択して「Enter」を押下する。
1. 「Final Job Status」が「Completed」になることを確認する。
![_013.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/19eeded1-d926-5d94-f5fa-dcb680797af7.jpeg)

1. ストレージアカウントにアップロードされていることを確認する。
![_014.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/96c29e35-0031-6be3-2b66-9373777f2d1b.jpeg)

***
以上、割と簡単に何でもコピーできるAzCopyの紹介でした。
ファイルがたくさんあるときや、VHDファイルからAzure上に仮想マシンを作成するときなど、GUIでストレージアカウントにアップロードしようとすると時間が掛かるときによく重宝してます。
ストレートアカウントにファイル等をアップロードする際には一度使ってみてください。