PHPでAzureのBlobを操作する際に、Azure Storage SDK for PHPを使用したので、使い方を紹介します。
- Azure Storage SDK for PHPをインストール
- Azure Storage SDK for PHPの使い方
- Azure Storage SDK for PHPを使用する際に出るエラーについて
- まとめ
1. Azure Storage SDK for PHPのBlobをインストール
まず、Azure Storage SDK for PHPのBlobをComposerでインストールします。
1 2 3 4 5 |
{ "require": { "microsoft/azure-storage-blob": "*" } } |
2. Azure Storage SDK for PHPのBlobの使い方
今回はBlobへの書き込みと読み取り操作を説明します。
BlobRestProxyのインポート
1 |
use MicrosoftAzure\Storage\Blob\BlobRestProxy; |
Blobのクライアントとなるインスタンスを作成
1 2 |
$connectionString = "DefaultEndpointsProtocol=https;AccountName={Blobのアカウントネーム};AccountKey={Blobのアカウントキー}"; $blobClient = BlobRestProxy::createBlobService($connectionString); |
Blobに接続するための接続文字列を用意します。
先程インポートしたBlobRestProxyのcreateBlobServiceメソッドの引数に渡し、Blobのクライアントを作成します。
{Blobのアカウントネーム}と{Blobのアカウントキー}は各自のAzureポータルからストレージアカウントの「セキュリティとネットワーク」の下にある「アクセスキー」から確認できます。
Blobの書き込み
1 2 3 4 |
$containerName = 'コンテナ名'; $blobName = 'Blob名'; $content = '中身'; $blobClient->createBlockBlob($containerName, $blobName, $content); |
先程作成した$blobClientのcreateBlockBlobメソッドの引数に「書き込みたいBlobのコンテナ名」、「Blob名」、「書き込む内容」を渡します。
Blobの読み取り
1 |
$blob = $blobClient->getBlob($containerName, $blobName); |
先程作成した$blobClientのgetBlobメソッドの引数に「読み込みたいBlobのコンテナ名」、「Blob名」を渡します。
3. Azure Storage SDK for PHPのBlobを使用する際に出るエラーについて
Blobの操作をすると下記のようなエラーが出ます。(2021/09/18時点)
1 |
Uncaught Error: Call to undefined function GuzzleHttp\Psr7\stream_for() in microsoft/azure-storage-blob/src/Blob/BlobRestProxy.php:1837 |
このエラーはguzzlehttp/psr7が1.7.0から2.0.0にバージョンが上がったことで起こり、現時点(2021/09/18)のComposerでインストールできるAzure Storage SDK for PHPのBlobの最新で起こります。
対応としては、guzzlehttp/psr7の1.7.0を使用しているmicrosoft/azure-storage-blobの1.3.0を使用するか、エラーのでたguzzlehttp/psr7のメソッドをこちらの対応表に従って変換するかで解決します。
4. まとめ
Azure Storage SDK for PHPを使えば、簡単にAzureのストレージを操作できるので、AppServiceなどの状態を持つべきでないサービスを使用する際はAzure Storageを活用していきたいと思います。
参考
https://github.com/Azure/azure-storage-php