AWS SDK for PHP 버전 3으로 사전 서명된 Amazon S3 URL - AWS SDK for PHP

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

AWS SDK for PHP 버전 3으로 사전 서명된 Amazon S3 URL

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

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

  • 를 사용하여 S3 객체를 가져오URL려면 미리 서명된 을 생성합니다createPresignedRequest.

에 대한 모든 예제 코드는 에서 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의 사전 서명된 를 검색할 수 있습니다.

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

가져오기

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 메서드를 사용하여 URLs 모든 Amazon S3 작업에 대해 미리 서명된 를 생성할 수 createPresignedRequest() 있습니다. 요청을 전송할 때 반환되는 요청과 동일한 메서드와 동일한 헤더를 사용해야 합니다.

샘플 코드

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 반환한 는 버킷 또는 키가 있는지 확인하기 위해 검증되지 않으며, 이 메서드는 객체가 인증되지 않은 액세스를 허용하는지도 확인합니다.