AzCopyを使用してファイルを転送する:OAuthとSASトークン

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

  • AzCopyは、Azureストレージの管理を可能にするスタンドアロンユーティリティです。AzCopyを使用すると、いくつかの操作を実行できます。この記事では、以下に焦点を当てます:ストレージコンテナの作成
  • ローカルファイルのコンテナへのコピー
  • コンテナ間のファイルのコピー

さあ、始めましょう!

動画で学習するのが得意な方は、この記事で学ぶ内容に密接に関連したTechSnipsの動画もチェックしてみてください。

前提条件

この記事では、さまざまなタスクをデモンストレーションするウォークスルーを行います。一緒に進める場合は、以下の要件を満たしてから開始してください。

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

まずは、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にすでに認証済みであると想定されているため(前提条件に含まれているため)、以下に示すように、単純にazcopy copyを実行し、ローカルファイルパスの後にコンテナエンドポイントURLを指定することができます。

他のパラメータを指定しない場合、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 [コンテナ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トークンの生成方法を参照してください。

トークンが利用可能になったら、以下に示すように、そのトークンを宛先コンテナの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 ストレージからローカル ストレージにファイルをダウンロードすることもできます。以下の例では、file1.txt ファイルを SAS トークンで Azure ストレージからコピーしています。

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

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

Azure ストレージへのディレクトリのコピー/ダウンロード

Azure から転送またはダウンロードするファイルが多い場合、azcopy copy を使用して一度に複数のディレクトリ全体をコピーすることもできます。そうするためのコマンドは、単一のファイルをコピーするために使用するものとそれほど変わりません。

以下に、C:\\MyDir をブロブ コンテナー 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つのコンテナが同じストレージアカウントに属しているので、同じトークンをソースと宛先の両方に使用できます。

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

注意:Azure 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 Copyページをご覧ください。その後、この記事で学んだ手法を使用して、これらを自分で試すことができます。

概要

この記事では、AzCopyを使用してローカルとAzureストレージ間でファイルを転送する方法を学びました。また、認証にOAuthとShared Access Signature Tokenを使用しながらこれらのタスクを実行する方法も学びました。利用可能な他の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-storage/