Edited at

Raspberry Pi 2(Raspbian)からAzure Storage Serviceにfileをuploadしてみた

More than 1 year has passed since last update.

Azureには様々なサービスがあることは知られていますが、どれも日本語の解説記事は少ないので大変ですね。

そういった場合、たいていはMicrosoft公式のリファレンスを見れば活用方法は書いてあるのですが、難しい言葉で長々と書いてあったりするので、ここではまとめて簡単に書いてみます。

今回はタイトルの通り、Azure CLIを使って Azure Storage Serviceと連携しました。


➀必要なもののインストール

今回はRaspbianを使っているので、Azure CLIを使用します。

Azure CLIはコマンドラインシェルからオープンソースのコマンドを使ってAzure上のリソース管理をすることができるものです。

Azure CLIはnpmパッケージからインストールするので、まずはNode.jsとnpmをインストールしましょう。

(注:Raspberry piにデフォルトでインストールされているNode.js(v0.10.29)はかなり古いものなので、Node.js LTSver(4.x)をインストールしてください)

ここでは「uepon日々の備忘録」様の記事を参考にさせていただきました。(URL:http://uepon.hatenadiary.com/entry/2016/06/06/234224)

これができたらAzure CLIパッケージをインストールしましょう。

けっこう時間がかかるかと思います。気長に待ちましょう。

npm install azure-cli -g

終わったら上手くいってるかどうか確認するために次のコマンドを入力してみましょう。上手くできていればすぐわかると思います。

azure help


②Azureログインとコマンドモード

個人のMicrosoftアカウントでログインするなら

azure login

と入力し、画面の支持に従ってください。

僕は今回学校のアカウントを使用するので、

azure login -u アカウントメールアドレス

を入力してから、パスワードを入力します。

あとはコマンドモードを選択しましょう。

デフォルトではService Managementモードといい、クラシックデプロイモデル、つまり旧AzurePortalで作成されたAzureリソースの操作用に使います。設定するには、

azure config mode asm

を入力します。

新AzurePortalで作成されたResource ManagerデプロイモデルでのAzureリソース操作は、

azure config mode arm

を実行します。


➂ストレージアカウントの設定

新しいストレージアカウントを作成するなら

azure storage account create <account_name>

によって作成できます。は3~24文字で、数字と小文字のみ使用できます。

次に、環境変数で規定のAzureストレージアカウントを設定します。

export AZURE_STORAGE_ACCOUNT=<account_name>

export AZURE_STORAGE_ACCESS_KEY=<key>

<account_name>は先程指定したものや、既存に作ってあるものの名前を指定します。

<key>はAzureサービス内でよく使われるconnectionstringという接続文字列であり、ポータルサイトから確認できます。

あるいは、次のコマンドで接続文字列を取得し、

azure storage account connectionstring show <account_name>

<connection_string>の部分を変更して環境変数に設定することもできます

export AZURE_STORAGE_CONNECTION_STRING=<connection_string>

注意として、この接続文字列のなかに ; が2箇所入っているのですが、

";" と書き換えないと全文が環境変数に書き込まれません。


➃Azure File ストレージでの管理

Azure Storage serviceの中には4つの種類に分かれていますが、今回はfileストレージを使ってみます。

ストレージアカウント - ファイル共有 - ディレクトリ - 各ファイル という階層構造になっています。

ファイル共有の作成は以下のコマンドでできます。(nameに任意のファイル共有名を追加)

azure storage share create <name>

ディレクトリの作成は以下のコマンドです。(nameに任意のファイル共有名を指定、name1に任意のディレクトリ名を追加)

azure storage directory create <name> <name1>

それでは、ディレクトリにファイルをアップロードしましょう。

以下のコマンドで可能です。(nameに任意のファイル共有名を指定、name1に任意のディレクトリ名を指定)

azure storage file upload 'ファイル.txt' <name> <name1>