このクイック スタートでは、PHP を使用して、Azure Blob Storage 内のコンテナー内のブロック BLOB をアップロード、ダウンロード、および一覧表示する方法について説明します。
[前提条件]
Azure Storage にアクセスするには、Azure サブスクリプションが必要です。 まだサブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
Azure Storage へのアクセスはすべて、ストレージ アカウント経由で行われます。 このクイック スタートでは、Azure portal、Azure PowerShell、または Azure CLI を使用して、ストレージ アカウントを作成します。 ストレージ アカウントの作成については、「ストレージ アカウントの作成」を参照してください。
次の追加の前提条件がインストールされていることを確認します。
サンプル アプリケーションのダウンロード
このクイック スタートで使用する サンプル アプリケーション は、基本的な PHP アプリケーションです。
アプリケーションのコピーを開発環境にダウンロードするには、git を使います。
git clone https://github.com/Azure-Samples/storage-blobs-php-quickstart.git
このコマンドは、ローカルの git フォルダーにリポジトリを複製します。 PHP サンプル アプリケーションを開くには、storage-blobs-php-quickstart フォルダーを探して、phpqs.php ファイルを開きます。
Azure Portal で資格情報をコピーする
サンプル アプリケーションでは、ストレージ アカウントへのアクセスを承認する必要があります。 接続文字列の形式でストレージ アカウントの資格情報をアプリケーションに提供します。 ストレージ アカウントの資格情報を表示するには:
Azure ポータル にアクセスし、ストレージ アカウントに移動します。
ストレージ アカウントの概要の [設定] セクションで、[アクセス キー] 選択して、アカウント アクセス キーと接続文字列を表示します。
承認に必要なストレージ アカウントの名前をメモします。
key1の下で キー の値を見つけ、[ コピー] を選択してアカウントキーをコピーします。
からアカウント キーをコピーする方法を示すスクリーンショット
ストレージ接続文字列を構成してください
アプリケーションでは、ストレージ アカウント名とアカウント キーを指定して、アプリケーションの BlobRestProxy インスタンスを作成する必要があります。 これらの識別子は、アプリケーションを実行しているローカル コンピューターの環境変数内に格納することをお勧めします。 環境変数を作成するには、オペレーティング システムに応じて次のいずれかの例を使用します。 youraccountname と youraccountkey の値をアカウント名とキーに置き換えます。
環境を構成する
ローカル Git フォルダーからフォルダーを取得し、PHP サーバーによって提供されるディレクトリに配置します。 次に、同じディレクトリをスコープとするコマンド プロンプトを開き、次のように入力します。 php composer.phar install
サンプルを実行する
このサンプルでは、'.' フォルダーにテスト ファイルを作成します。 サンプル プログラムは、テスト ファイルを Blob Storage にアップロードし、コンテナー内の BLOB を一覧表示し、新しい名前でファイルをダウンロードします。
サンプルを実行します。 次の出力は、アプリケーションの実行時に返される出力の例です。
Uploading BlockBlob: HelloWorld.txt
These are the blobs present in the container: HelloWorld.txt: https://myexamplesacct.blob.core.windows.net/blockblobsleqvxd/HelloWorld.txt
This is the content of the blob uploaded: Hello Azure!
表示されたボタンを押すと、サンプル プログラムによってストレージ コンテナーとファイルが削除されます。 続行する前に、サーバーのフォルダーで 2 つのファイルを確認します。 それらを開いて、それらが同じであることを確認できます。
Azure Storage Explorer などのツールを使って、Blob Storage のファイルを表示することもできます。 Microsoft Azure Storage Explorer は無料のクロスプラットフォーム ツールであり、ストレージ アカウントの情報にアクセスできます。
ファイルを確認したら、任意のキーを押してデモを完了し、テスト ファイルを削除します。 サンプルの動作がわかったら、example.rb ファイルを開いてコードを確認します。
サンプル コードを理解する
次に、そのしくみを理解できるように、サンプル コードについて説明します。
ストレージ オブジェクトへの参照を取得する
最初に、BLOB ストレージへのアクセスと管理に使用されるオブジェクトへの参照を作成します。 これらのオブジェクトは互いに構築され、それぞれがリスト内の次のオブジェクトによって使用されます。
- Azure Storage BlobRestProxy オブジェクトのインスタンスを作成して、接続資格情報を設定します。
- ストレージ アカウント内の BLOB サービスを指す BlobService オブジェクトを作成します。
- アクセスする コンテナー を表す Container オブジェクトを作成します。 コンテナーは、コンピューター上のフォルダーを使用してファイルを整理する場合と同様に、BLOB を整理するために使用されます。
blobClient コンテナー オブジェクトを取得したら、関心のある特定の BLOB を指すブロック BLOB オブジェクトを作成できます。 その後、アップロード、ダウンロード、コピーなどの操作を実行できます。
重要
コンテナーの名前は小文字にする必要があります。 コンテナー名と BLOB 名の詳細については、「コンテナー、BLOB、およびメタデータの名前付けと参照」を参照してください。
このセクションでは、Azure Storage クライアントのインスタンスを設定し、BLOB サービス オブジェクトをインスタンス化し、新しいコンテナーを作成し、BLOB がパブリックになるようにコンテナーにアクセス許可を設定します。 コンテナーは quickstartblobs と呼ばれます。
# Setup a specific instance of an Azure::Storage::Client
$connectionString = "DefaultEndpointsProtocol=https;AccountName=".getenv('account_name').";AccountKey=".getenv('account_key');
// Create blob client.
$blobClient = BlobRestProxy::createBlobService($connectionString);
# Create the BlobService that represents the Blob service for the storage account
$createContainerOptions = new CreateContainerOptions();
$createContainerOptions->setPublicAccess(PublicAccessType::CONTAINER_AND_BLOBS);
// Set container metadata.
$createContainerOptions->addMetaData("key1", "value1");
$createContainerOptions->addMetaData("key2", "value2");
$containerName = "blockblobs".generateRandomString();
try {
// Create container.
$blobClient->createContainer($containerName, $createContainerOptions);
BLOB をコンテナーにアップロードする
Blob Storage は、ブロック BLOB、追加 BLOB、およびページ BLOB をサポートします。 ブロック・ブロブは最も一般的に使用されており、このクイックスタートで使用されます。
ファイルを BLOB にアップロードするには、ローカル ドライブのディレクトリ名とファイル名を結合して、ファイルの完全なパスを取得します。 その後、 createBlockBlob() メソッドを使用して、指定したパスにファイルをアップロードできます。
サンプル コードでは、ローカル ファイルを取得し、Azure にアップロードします。 ファイルは myfile として格納され、BLOB の名前は fileToUpload としてコードに格納されます。 次の例では、 quickstartblobs という名前のコンテナーにファイルをアップロードします。
$myfile = fopen("HelloWorld.txt", "w") or die("Unable to open file!");
fclose($myfile);
# Upload file as a block blob
echo "Uploading BlockBlob: ".PHP_EOL;
echo $fileToUpload;
echo "<br />";
$content = fopen($fileToUpload, "r");
//Upload blob
$blobClient->createBlockBlob($containerName, $fileToUpload, $content);
ブロック BLOB のコンテンツの部分的な更新を実行するには、 createblocklist() メソッドを使用します。 ブロック BLOB は 4.7 TB までであり、Excel スプレッドシートから大きなビデオ ファイルまで、あらゆるものにすることができます。 ページ BLOB は、主に IaaS VM のバックアップに使用される VHD ファイルに使用されます。 追加 BLOB は、ファイルに書き込んでから詳細情報を追加し続ける場合などの、ログ記録に使用されます。 付加 BLOB は、単一の書き込みモデルで使用する必要があります。 BLOB ストレージに格納されているほとんどのオブジェクトはブロック BLOB です。
コンテナー内の BLOB を一覧表示する
listBlobs() メソッドを使用して、コンテナー内のファイルの一覧を取得できます。 次のコードでは、BLOB の一覧を取得し、それらをループして、コンテナー内で見つかった BLOB の名前を示します。
$listBlobsOptions = new ListBlobsOptions();
$listBlobsOptions->setPrefix("HelloWorld");
echo "These are the blobs present in the container: ";
do{
$result = $blobClient->listBlobs($containerName, $listBlobsOptions);
foreach ($result->getBlobs() as $blob)
{
echo $blob->getName().": ".$blob->getUrl()."<br />";
}
$listBlobsOptions->setContinuationToken($result->getContinuationToken());
} while($result->getContinuationToken());
ブロブのコンテンツを取得する
getBlob() メソッドを使用して BLOB の内容を取得します。 次のコードは、前のセクションでアップロードされた BLOB の内容を表示します。
$blob = $blobClient->getBlob($containerName, $fileToUpload);
fpassthru($blob->getContentStream());
リソースをクリーンアップする
このクイック スタートでアップロードした BLOB が不要になった場合は、 deleteContainer() メソッドを使用してコンテナー全体を削除できます。 作成されたファイルが不要になった場合は、 deleteBlob() メソッドを使用してファイルを削除します。
// Delete blob.
echo "Deleting Blob".PHP_EOL;
echo $fileToUpload;
echo "<br />";
$blobClient->deleteBlob($_GET["containerName"], $fileToUpload);
// Delete container.
echo "Deleting Container".PHP_EOL;
echo $_GET["containerName"].PHP_EOL;
echo "<br />";
$blobClient->deleteContainer($_GET["containerName"]);
//Deleting local file
echo "Deleting file".PHP_EOL;
echo "<br />";
unlink($fileToUpload);
BLOB を使用して PHP アプリケーションを開発するためのリソース
BLOB ストレージを使用した PHP 開発に関する次の追加リソースを参照してください。
- GitHub で Azure Storage の PHP クライアント ライブラリのソース コード を表示、ダウンロード、インストールします。
- PHP クライアント ライブラリを使用して記述された Blob Storage サンプル について説明します。
次のステップ
このクイック スタートでは、PHP を使用してローカル ディスクと Azure BLOB ストレージの間でファイルを転送する方法について説明しました。 PHP の操作の詳細については、PHP デベロッパー センターに進んでください。
ストレージ エクスプローラーと BLOB の詳細については、「Storage Explorer を使用した Azure Blob Storage リソースの管理」を参照してください。