기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS SDK for PHP 버전 3으로 사전 서명된 Amazon S3 POSTs
미리 서명된 와 마찬가지로 URLs미리 서명된 를 POSTs 사용하면 사용자에게 AWS 자격 증명을 제공하지 않고도 사용자에게 쓰기 액세스 권한을 부여할 수 있습니다. 사전 서명된 POST 양식은 AwsS3PostObjectV4 인스턴스의 도움을 받아 생성할 수 있습니다.
다음 예제에서는 다음과 같은 작업을 하는 방법을 보여줍니다.
-
PostObjectV4를 사용하여 S3 객체 POST 업로드 양식의 데이터를 가져옵니다.
에 대한 모든 예제 코드는 에서 GitHub
보안 인증 정보
참고
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>