Amazon S3에서 사전 서명된 URL ( AWS SDK for PHP 버전 3 포함) - AWS SDK for PHP

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon S3에서 사전 서명된 URL ( AWS SDK for PHP 버전 3 포함)

HTTP 인증 헤더를 사용하는 대신 쿼리 문자열 파라미터로 필요한 정보를 전달하여 특정 유형의 요청을 인증할 수 있습니다. 이 방법은 요청을 프록시하지 않고 타사 브라우저에서 Amazon S3 비공개 데이터에 직접 액세스할 수 있도록 할 경우에 유용합니다. 방법은 "미리 서명된" 요청을 작성한 후 이를 최종 사용자의 브라우저가 검색할 수 있는 URL로 인코딩하는 것입니다. 또한 만료 시간을 지정하여 미리 서명된 요청을 제한할 수 있습니다.

다음 예제에서는 다음과 같은 작업을 하는 방법을 보여줍니다.

의 모든 예제 코드는 여기에서 확인할 GitHub 수 있습니다. AWS SDK for PHP

보안 인증 정보

예제 코드를 실행하기 전에 에 설명된 대로 AWS 자격 증명을 구성하십시오보안 인증. 그런 다음 에 설명된 대로 AWS SDK for PHP를 가져옵니다기본 사용법.

미리 서명된 요청 생성

Aws\S3\S3Client::createPresignedRequest() 메서드를 사용하여 Amazon S3 객체에 대한 미리 서명된 URL을 가져올 수 있습니다. 이 메서드는 Aws\CommandInterface 객체와 만료된 타임스탬프를 받아 미리 서명된 Psr\Http\Message\RequestInterface 객체를 반환합니다. 요청의 getUri() 메서드를 사용하여 객체의 미리 서명된 URL을 검색할 수 있습니다.

가장 일반적인 시나리오는 객체에 대해 GET을 실행하는 미리 서명된 URL을 생성하는 것입니다.

가져오기

use Aws\Exception\AwsException; use AwsUtilities\PrintableLineBreak; use AwsUtilities\TestableReadline; use DateTime; require 'vendor/autoload.php';

샘플 코드

$command = $s3Service->getClient()->getCommand('GetObject', [ 'Bucket' => $bucket, 'Key' => $key, ]);

미리 서명된 URL 생성

명령 객체를 생성하는 getCommand 메서드를 사용한 후 createPresignedRequest() 메서드를 호출하여 Amazon S3 작업에 대한 미리 서명된 URL을 생성할 수 있습니다. 요청을 전송할 때 반환되는 요청과 동일한 메서드와 동일한 헤더를 사용해야 합니다.

샘플 코드

try { $preSignedUrl = $s3Service->preSignedUrl($command, $expiration); echo "Your preSignedUrl is \n$preSignedUrl\nand will be good for the next 20 minutes.\n"; echo $linebreak; echo "Thanks for trying the Amazon S3 presigned URL demo.\n"; } catch (AwsException $exception) { echo $linebreak; echo "Something went wrong: $exception"; die(); }

객체에 대한 URL 가져오기

Amazon S3 버킷에 저장된 객체에 대한 퍼블릭 URL만 필요한 경우 Aws\S3\S3Client::getObjectUrl() 메서드를 사용할 수 있습니다. 이 메서드는 지정된 버킷 및 키에 대한 부호 없는 URL을 반환합니다.

샘플 코드

$preSignedUrl = $s3Service->preSignedUrl($command, $expiration);
중요

이 메서드에 의해 반환되는 URL은 버킷 또는 키가 존재하는지 검증되지 않았으며, 이 메서드는 객체가 무단 액세스를 허용하는지 여부를 확인하지 않습니다.