이 빠른 시작에서는 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 Portal에서 스토리지 계정으로 이동합니다.
스토리지 계정 개요의 설정 섹션에서 액세스 키 선택하여 계정 액세스 키 및 연결 문자열을 표시합니다.
권한 부여에 필요한 스토리지 계정의 이름을 확인합니다.
key1아래에서 키 값을 찾고 복사를 선택하여 계정 키를 복사합니다.
계정 키를 Azure 포탈에서 복사하는 방법을 보여주는 스크린샷
스토리지 연결 문자열 구성
애플리케이션에서 애플리케이션에 대한 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!
표시된 단추를 누르면 샘플 프로그램에서 스토리지 컨테이너와 파일을 삭제합니다. 계속하기 전에 서버의 폴더에서 두 파일을 확인합니다. 열면 동일한지 확인할 수 있습니다.
Azure Storage Explorer와 같은 도구를 사용하여 Blob Storage의 파일을 볼 수도 있습니다. Azure Storage Explorer는 스토리지 계정 정보에 액세스할 수 있는 무료 플랫폼 간 도구입니다.
파일을 확인한 후 키를 눌러 데모를 완료하고 테스트 파일을 삭제합니다. 이제 샘플이 수행하는 작업을 확인했으므로 example.rb 파일을 열어 코드를 확인합니다.
샘플 코드 이해
다음으로, 작동 방식을 이해할 수 있도록 샘플 코드를 안내합니다.
스토리지 개체에 대한 참조 가져오기
가장 먼저 해야 할 일은 Blob Storage에 액세스하고 관리하는 데 사용되는 개체에 대한 참조를 만드는 것입니다. 이러한 개체는 서로 빌드되며, 각 개체는 목록의 다음 개체에서 사용됩니다.
- Azure Storage BlobRestProxy 개체의 인스턴스를 만들어 연결 자격 증명을 설정합니다.
- 스토리지 계정에서 Blob 서비스를 가리키는 BlobService 개체를 만듭니다.
- 액세스하는 컨테이너 를 나타내는 Container 개체를 만듭니다. 컨테이너는 컴퓨터의 폴더를 사용하여 파일을 구성하는 것처럼 Blob을 구성하는 데 사용됩니다.
BlobClient 컨테이너 개체가 있으면 관심 있는 특정 Blob을 가리키는 Block 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 Storage는 블록 Blob, 추가 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() 메서드를 사용합니다. 블록 블롭은 최대 4.7 TB일 수 있으며, Excel 스프레드시트에서 큰 비디오 파일에 이르기까지 어떤 것이든 될 수 있습니다. 페이지 블롭은 주로 IaaS VM을 구동하기 위해 사용되는 VHD 파일에 사용됩니다. 첨부 Blob은 로깅에 사용되며, 예를 들어 파일에 정보를 기록하고 계속해서 더 많은 정보를 추가하고자 할 때 유용합니다. 추가 Blob은 한 명의 작성자가 있는 모델에서 사용해야 합니다. Blob Storage에 저장된 대부분의 개체는 블록 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());
Blob의 콘텐츠 가져오기
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 Storage를 사용한 PHP 개발에 대한 다음 추가 리소스를 참조하세요.
- GitHub에서 Azure Storage에 대한 PHP 클라이언트 라이브러리 소스 코드를 보고 다운로드하고 설치합니다.
- PHP 클라이언트 라이브러리를 사용하여 작성된 Blob Storage 샘플을 탐색합니다.
다음 단계
이 빠른 시작에서는 PHP를 사용하여 로컬 디스크와 Azure Blob Storage 간에 파일을 전송하는 방법을 알아보았습니다. PHP 작업에 대해 자세히 알아보려면 PHP 개발자 센터로 계속 진행하세요.
Storage Explorer 및 Blob에 대한 자세한 내용은 Storage Explorer를 사용하여 Azure Blob Storage 리소스 관리를 참조하세요.