AzCopyを使ったファイルの転送:OAuthとSASトークン

ITの中で自動化は今やどこにでも存在しています。仮想マシンのプロビジョニングからウェブサイトの展開まで、特に複数のアイテムを扱う必要がある場合には、自動化が重要です。Azureストレージとローカルマシン間のファイル管理さえも、AzCopyというユーティリティプログラムを使用して自動化することができます。

AzCopyは、Azureストレージの管理を可能にするスタンドアロンのユーティリティです。AzCopyを使用すると、複数の操作を実行することができます。この記事では、以下の操作に焦点を当てます:

  • ストレージコンテナの作成
  • ローカルファイルをコンテナにコピーする
  • コンテナ間でファイルをコピーする

それでは始めましょう!

ビデオでの学習が得意な方は、この記事で学ぶ内容に密接に関連したTechSnipsのビデオもご覧いただけます。

前提条件

この記事では、さまざまなタスクを実演します。一緒に進める場合は、以下の要件を満たしていることを確認してください。

  • Azureのサブスクリプション。まだお持ちでない場合は、試用版サブスクリプションをリクエストしてください。
  • Azureストレージアカウント。詳細については、ストレージアカウントの作成を参照してください。
  • AzCopyをダウンロードして認証しました(設定方法については、記事「AZCopyツールのダウンロードとインストール方法」を参照してください)

新しいストレージコンテナの作成

まずは、既存のストレージアカウントに新しいストレージコンテナを作成するためにAzCopyを使用しましょう。この例では、container1container2という2つの新しいコンテナを作成します。

注意:新しいコンテナを作成する前に、コンテナのエンドポイントURLを把握しておく必要があります。エンドポイントURLは以下の形式に従います:https://[storageaccountname].blob.core.windows.net/[container_name]。

まず、エンドポイントURLを定義します。この例では、storageaccount1207というストレージアカウントに2つのエンドポイントURLを作成します:

エンドポイントURLが分かったので、以下のようにazcopy makeコマンドを使用して各エンドポイントURLをパラメータとして渡します。

> azcopy make https://storageaccount1207.blob.core.windows.net/container1
> azcopy make https://storageaccount1207.blob.core.windows.net/container2
Creating new containers in the storageaccount1207 storage account

Azureコンテナへのファイルのコピー

ストレージコンテナが作成されたら、「Azure Blob Storageにアップロードするにはどうすればいいですか?」と思うかもしれません。AzCopyを使用してazcopy copyコマンドを使用することで実現できます。AzCopyを使用してPSTファイル、VHDファイルなどをコピーすることができます。

OAuth認証の使用

AzCopyを使用してファイルをBlobにコピーする際、認証にはいくつかのオプションがあります。Azure Storageにすでに認証されていることが前提とされているため、以下に示すようにローカルファイルパスの後にコンテナのエンドポイントURLを指定して単にazcopy copyを実行するだけです。

他のパラメータを指定しない場合、OAuth認証が使用されます。

> azcopy copy c:\myDir\file1.txt https://storageaccount1207.blob.core.windows.net/container1
Upload file to Azure Storage using OAuth

Azure blobコンテナにファイルがコピーされたことを確認するには、azcopy list [container url]コマンドを使用できます。以下の例では、file1.txtファイルが存在することが示されています。

> azcopy list https://storageaccount1207.blob.core.windows.net/container1
List the contents of the Azure blob container

Azure blobからローカルディレクトリにファイルをダウンロードするには、ソースと宛先の引数の位置を入れ替えるだけです。以下の例を参照してください。

> azcopy copy https://storageaccount1207.blob.core.windows.net/container1/file1.txt>c:\myDir
Download file from Azure Storage using OAuth authentication

共有アクセス署名(SAS)トークンの使用

SASトークンを使用するには、まずトークンを生成する必要があります。SASトークンの生成方法がわからない場合は、「Azure SASトークンを生成する方法」の記事を参照してください。

利用可能なSASトークンがある場合は、以下のようにトークンを宛先コンテナのURLにHTTPパラメータとして追加することができます。

> azcopy copy c:\myDir\file1.txt 'https://storageaccount1207.blob.core.windows.net/container1?sv=2019-02-02&sr=c&sig=LgFsqIRHZovsSjpAVNAyyyy4tnDJ%2BxNh%2B1Cq3rY4Gbk%3D&se=2019-12-09T06%3A34%3A30Z&sp=rw'

PowerShellを使用してトークンを変数に格納した場合(例:$token)、以下のコマンドのようにフルトークン文字列の代わりにその変数を渡すことができます。

> azcopy copy c:\myDir\file1.txt "https://storageaccount1207.blob.core.windows.net/container1?$token"
Copy file to Azure Container using SAS Token Authentication

同じトークンを使用して(有効期限内であると仮定する)、Azureストレージからローカルストレージにファイルをダウンロードすることもできます。

以下の例では、SASトークンを使用してAzureストレージからfile1.txtファイルをコピーしています。

> azcopy copy ('https://storageaccount1207.blob.core.windows.net/container1/file1.txt'+$token) C:\MyDir\
Copy file from Azure Container with SAS Token

以下のコードでは、トークンをコンテナ名の後に追加するのではなく、ファイル名を最初に追加しています。これにより、SAS認証を使用して特定のファイルをコピーするようにAzCopyに指示されます。

ディレクトリをAzureストレージにコピー/ダウンロードする

以下のコマンドは、C:\\MyDirを再帰的にblobコンテナcontainer1にコピーするものです。ここで重要なのは、--recursiveパラメータです。コマンドの末尾の--recursiveフラグは、親ディレクトリとサブディレクトリ内のすべてのコンテンツがコピーされることを示しています。

> azcopy copy C:\MyDir\ https://storageaccount1207.blob.core.windows.net/container1/ --recursive

C:\MyDirフォルダ内の10個のファイルがジョブのサマリに基づいてすべて正常にコピーされたことが以下に示されています。

Copying a directory and its contents

Azureストレージコンテナ間のファイルのコピー

この記事では、azcopy copyコマンドを頻繁に使用してきましたが、これで止める必要はありません!ローカルのファイルやディレクトリをオンプレミスにコピーするだけでなく、ストレージコンテナ間でもブロブをコピーすることができます。

ローカルファイルパスの代わりに、パラメータを変更してソースとなる1つのブロブコンテナのURLと宛先となる別のブロブコンテナのURLを使用します。

すでにcontainer1container2という2つのストレージコンテナを作成しました。このセクションでは、container1からcontainer2にファイル、ディレクトリ、さらにはブロブコンテナ全体をコピーしましょう。

別のコンテナにファイルをコピーするには、まず新しいSASトークンを生成します。2つのコンテナが同じストレージアカウントに属しているため、同じトークンをソースと宛先の両方に使用できます。

トークンの文字列を$tokenという変数に保存していると仮定します(PowerShellでazcopyを実行している場合)。以下に示すように、1つのストレージコンテナから別のストレージコンテナにすべてのデータを簡単にコピーできます。

注意: SASトークンを生成する方法がわからない場合は、「Azure SASトークンを生成してストレージアカウントにアクセスする方法」の記事を参照してください。

> azcopy copy ('https://storageaccount1207.blob.core.windows.net/container1'+$token) ('https://storageaccount1207.blob.core.windows.net/container2'+$token) --recursive
Copying data between containers using SAS Token authentication

その他の便利なAzCopy操作

ファイルやフォルダのコピー以外にも、AzCopyで実行できる他のコピー操作があります。いくつかは次のとおりです:

  • 特定のファイルのコピー(フィルタリング)。
  • ブロブコンテナ内の別のディレクトリにディレクトリをコピーする。
  • Amazon AWSからAzure Storageへのコピー。

AzCopyが提供する機能について学びたい場合は、azcopy -hを実行してヘルプコンテンツを確認してください。この記事ではcopyコマンドに焦点を当てましたが、他にも便利なコマンドが多数あります。以下にこれらのコマンドのスクリーンショットが表示されます。

List of AzCopy Commands

詳細については、AzCopyコピーページを参照してください。その後、この記事で学んだ技術を使用して、これらを自分自身で試すことができます。

要約

この記事では、AzCopyを使用してローカルとAzureストレージ間でファイルを転送する方法、およびOAuthと共有アクセス署名トークンを使用した認証によるタスクの実行方法を学びました。また、他のAzCopyコマンドの利用方法と検索方法についても紹介しました。

I hope this article has helped you get started with AzCopy and sparked your interest in using it more as part of your administration or development tasks. Thank you!

Source:
https://adamtheautomator.com/azcopy/