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

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

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

미리 서명된 와 마찬가지로 URLs미리 서명된 를 POSTs 사용하면 사용자에게 AWS 자격 증명을 제공하지 않고도 사용자에게 쓰기 액세스 권한을 부여할 수 있습니다. 사전 서명된 POST 양식은 AwsS3PostObjectV4 인스턴스의 도움을 받아 생성할 수 있습니다.

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

  • PostObjectV4를 사용하여 S3 객체 POST 업로드 양식의 데이터를 가져옵니다.

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

보안 인증 정보

참고

PostObjectV4에서 AWS IAM Identity Center가져온 보안 인증으로는 작동하지 않습니다.

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

Create PostObjectV4

PostObjectV4 인스턴스를 생성하려면 다음을 제공해야 합니다.

  • Aws\S3\S3Client 인스턴스

  • 버킷

  • 양식 입력 필드의 결합형 배열

  • 정책 조건 배열 (Amazon Simple Storage Service 사용 설명서의 정책 구성 참조)

  • 정책에 대한 만료 시간 문자열(선택 사항, 기본적으로 1시간)

가져오기

require '../vendor/autoload.php'; use Aws\S3\PostObjectV4; use Aws\S3\S3Client;

샘플 코드

require '../vendor/autoload.php'; use Aws\S3\PostObjectV4; use Aws\S3\S3Client; $client = new S3Client([ 'profile' => 'default', 'region' => 'us-east-1', ]); $bucket = 'amzn-s3-demo-bucket10'; $starts_with = 'user/eric/'; $client->listBuckets(); // Set defaults for form input fields. $formInputs = ['acl' => 'public-read']; // Construct an array of conditions for policy. $options = [ ['acl' => 'public-read'], ['bucket' => $bucket], ['starts-with', '$key', $starts_with], ]; // Set an expiration time (optional). $expires = '+2 hours'; $postObject = new PostObjectV4( $client, $bucket, $formInputs, $options, $expires ); // Get attributes for the HTML form, for example, action, method, enctype. $formAttributes = $postObject->getFormAttributes(); // Get attributes for the HTML form values. $formInputs = $postObject->getFormInputs(); ?> <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>PHP</title> </head> <body> <form action="<?php echo $formAttributes['action'] ?>" method="<?php echo $formAttributes['method'] ?>" enctype="<?php echo $formAttributes['enctype'] ?>"> <label id="key"> <input hidden type="text" name="key" value="<?php echo $starts_with ?><?php echo $formInputs['key'] ?>"/> </label> <h3>$formInputs:</h3> acl: <label id="acl"> <input readonly type="text" name="acl" value="<?php echo $formInputs['acl'] ?>"/> </label><br/> X-Amz-Credential: <label id="credential"> <input readonly type="text" name="X-Amz-Credential" value="<?php echo $formInputs['X-Amz-Credential'] ?>"/> </label><br/> X-Amz-Algorithm: <label id="algorithm"> <input readonly type="text" name="X-Amz-Algorithm" value="<?php echo $formInputs['X-Amz-Algorithm'] ?>"/> </label><br/> X-Amz-Date: <label id="date"> <input readonly type="text" name="X-Amz-Date" value="<?php echo $formInputs['X-Amz-Date'] ?>"/> </label><br/><br/><br/> Policy: <label id="policy"> <input readonly type="text" name="Policy" value="<?php echo $formInputs['Policy'] ?>"/> </label><br/> X-Amz-Signature: <label id="signature"> <input readonly type="text" name="X-Amz-Signature" value="<?php echo $formInputs['X-Amz-Signature'] ?>"/> </label><br/><br/> <h3>Choose file:</h3> <input type="file" name="file"/> <br/><br/> <h3>Upload file:</h3> <input type="submit" name="submit" value="Upload to Amazon S3"/> </form> </body> </html>