Microsoft Azure を使用していて、ローカルのオンプレミスに保存されているファイルにアクセスする必要が生ずることは必ずと言っていいほど起こります。
必要なファイルは、Azure の IaaS サービスで使用するVHDフォーマットの仮想ディスク上のファイルや、Azure 仮想マシンで実行する必要がある PowerShell スクリプト、または Azure Web サイト用の設定ファイルなど、いろいろなケースが考えられます。 いずれにしても、Azure でオンプレミスのファイルにアクセスするには、それらを Azure ストレージアカウントに配置する必要があります。
ローカルに保存されているファイルを Microsoft Azure ストレージアカウントに転送する方法はいくつかありますが、ここでは、新しいAzure Resource Manager(ARM)リソースを使用して、PowerShell の Set-AzureStorageBlobContent コマンドレットで行います。Set-AzureStorageBlobContent は Azure PowerShellモジュールで利用するので、まず、このモジュールをダウンロードして使用できるようにする必要があります。ファイルを保存するためには、Azure サブスクリプションとストレージアカウントも必要です。この例では、ストレージコンテナがすでに作成されていると仮定します。
これらの前提条件が整ったら、Set-AzureStorageBlobContent コマンドレットを使用してローカルファイルを転送し、Blob ストレージに自動的に変換できます。
参照: クラウド・マネージド・ファイル・トランスファーの説明、「マネージド・ファイル・トランスファー バイヤーズガイド」をご参照ください。
まず最初に、Azure サブスクリプションを認証する必要があります。これは、Add-AzureRmAccount コマンドレットを使用して実行できます。ユーザー名とパスワードを入力し、Azure サブスクリプションを変更する場合に必要なトークンを獲得します。
Azure サブスクリプションを認証したら、Azure Blob ストレージを作成するためのストレージアカウントを指定する必要があります。ファイルが Azure に転送されると、ローカルファイルは自動的に Blob ストレージになります。ストレージアカウントを指定するにはまず、Get-AzureRmStorageAccount コマンドレットを使用して利用可能なストレージアカウントを確認します。この場合、2つのストレージアカウントがあるのがわかります。
Get-AzureRmStorageAccount | select storageaccountname
どちらかのストレージアカウントの内部のストレージコンテナを指定する必要がありますが、ストレージアカウントオブジェクトを Get-AzureStorageContainer コマンドレットに直接パスすることができます。
$storageContainer = Get-AzureRmStorageAccount | where {$_.StorageAccountName -eq 'adbdemostorageaccount'} | Get-AzureStorageContainer
このストレージコンテナを変数に割り当てたので、オブジェクトをすぐに Set-AzureStorageBlobContent コマンドレットにパスすることができます。ストレージコンテナが設定できたら、次にローカルファイルパスとデスティネーションを定義する必要があります。ここでは、ファイルパスと配置先を Set-AzureStorageBlobContent コマンドレットのパラメータとして使用することにします。
$FilePath = 'C:\Users\Adam\MyFile.txt'
$BlobName = 'MyFile.txt'
$storageContainer | Set-AzureStorageBlobContent –File $FilePath –Blob $BlobName
上を見てわかるように、C:\Users\Adamフォルダに保存されたテキストファイルを指定し、blob をそのファイルと同じ名前にしてあります。ファイル名は必ずも同じにする必要はなく、コピー中に名前を変更することも可能ですが、シンプルな方がいいのでこのやり方を推奨します。
(注: Azure ストレージアカウントにVHDをアップロードする必要がある場合は、Set-AzureStorageBlobContent は使用しないでください。データが破損する可能性があります。VHDの場合は、常に Add-AzureRmVhd コマンドレットを使用するようにしてください。)
この方法を使用すると、ファイルを Azure ストレージアカウントに簡単にコピーできます。PowerShell でスクリプトを書く場合は、いつも再利用可能なコードを作成するようにする姿勢が推奨されますが、このプロセスを容易にするための Copy-AzureItem という関数を作成してあります。VHD もサポートしていますので、ご自由にダウンロードしてご利用ください。
Subscribe to get all the news, info and tutorials you need to build better business apps and sites