서명된 URL을 사용하여 PHP를 사용하여 Azure Storage의 이미지를 볼 수 있음(SAS)
너무 귀찮아서 디테일을 생략했습니다.
의 목적
이거야.
Shared Access Signature(SAS)는 Azure Storage BLOB에 대한 액세스 제한을 허용하는 URI입니다.메모리 계정 키를 공유하지 않습니다. 특정 시간 범위의 메모리 계정 자원에 접근할 때 사용할 수 있습니다.
컨디션
전제 조건
다음 그림 파일은 계정을 저장하는 용기에 업로드되었습니다.
※ 윈도우에서 이미지 대여
코드를 쓰다
디렉토리 구조
.
├── composer.json
├── composer.lock
├── index.php
└── vendor
코드
<?php
require_once "vendor/autoload.php";
use MicrosoftAzure\Storage\Blob\BlobRestProxy;
use MicrosoftAzure\Storage\Common\ServiceException;
use MicrosoftAzure\Storage\Blob\BlobSharedAccessSignatureHelper;
use MicrosoftAzure\Storage\Common\Internal\Resources;
function getBlobUrlWithSignature(string $filePath)
{
try {
// Default から始まってるやつ
$connectionString = {接続文字列};
$container = 'test-container';
$blobClient = BlobRestProxy::createBlobService($connectionString);
$url = $blobClient->getBlobUrl($container, $filePath);
// cs から始まってるやつ
$accountName = {ストレージ アカウント名};
// keyです。「アクセス キー」から確認できます
$accountKey = {キー};
$helper = new BlobSharedAccessSignatureHelper($accountName, $accountKey);
$d = new \Datetime('now', new \DateTimeZone('UTC'));
// リソース
// 以下どちらかを選択するとのこと
// ・Resources::RESOURCE_TYPE_BLOB
// ・Resources::RESOURCE_TYPE_CONTAINER
$signedResource = Resources::RESOURCE_TYPE_BLOB;
// リソース名
// コンテナからのリソースの場所を指定
$resourceName = "{$container}/{$filePath}";
// パーミッション
// リソースごとに指定できるパーミッション
// ・Resources::RESOURCE_TYPE_BLOB => ['r', 'a', 'c', 'w', 'd'],
// ・Resources::RESOURCE_TYPE_CONTAINER => ['r', 'a', 'c', 'w', 'd', 'l']
$signedPermissions = 'r';
// 開始日時
// Datetime or string でOK
$signedStart = new \Datetime();
// 有効期限
// 今回は1時間後
$signedExpiry = date_modify(date_create(), '+1 hour');
// IPを制限したい場合は指定
$signedIP = "";
// 有効なプロトコル
// https or httpだと思う
$signedProtocol = "https";
// ほかにも引数で指定できるが今回は不要なので省略
$token = $helper->generateBlobServiceSharedAccessSignatureToken(
$signedResource,
$resourceName,
$signedPermissions,
$signedExpiry,
$signedStart,
$signedIP,
$signedProtocol
);
return "{$url}?{$token}";
} catch (ServiceException $e) {
$code = $e->getCode();
$errorMessage = $e->getMessage();
echo "{$code}: {$errorMessage}" . PHP_EOL;
}
}
echo getBlobUrlWithSignature('pose_pien_uruuru_woman.png') . PHP_EOL;
실행하다
$ php index.php
https://{ストレージ アカウント名}.blob.core.windows.net/test-container/pose_pien_uruuru_woman.png?sv=2017-11-09&sr=b&st=2021-04-16T01:49:29Z&se=2021-04-16T02:49:29Z&sp=r&spr=https&sig=%2FPm0%2BgX4Iq8yvtLsgrTmis6VGJXEe5Gor9601cI6%2Fx4%3D
이상!
Reference
이 문제에 관하여(서명된 URL을 사용하여 PHP를 사용하여 Azure Storage의 이미지를 볼 수 있음(SAS)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/masawo/articles/72559a4350dcaa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)