Amazon S3 pra-ditandatangani URL dengan Versi 3 AWS SDK for PHP - AWS SDK for PHP

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Amazon S3 pra-ditandatangani URL dengan Versi 3 AWS SDK for PHP

Anda dapat mengautentikasi jenis permintaan tertentu dengan meneruskan informasi yang diperlukan sebagai parameter string kueri alih-alih menggunakan header Otorisasi. HTTP Ini berguna untuk mengaktifkan akses browser pihak ketiga langsung ke data Amazon S3 pribadi Anda, tanpa memproksi permintaan. Idenya adalah untuk membuat permintaan “pra-ditandatangani” dan menyandikannya sebagai URL yang dapat diambil oleh browser pengguna akhir. Selain itu, Anda dapat membatasi permintaan yang telah ditandatangani sebelumnya dengan menentukan waktu kedaluwarsa.

Contoh berikut menunjukkan cara:

Semua kode contoh untuk AWS SDK for PHP tersedia di sini GitHub.

Kredensial

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensional Anda, seperti yang dijelaskan dalam. Kredensial Kemudian impor AWS SDK for PHP, seperti yang dijelaskan dalamPenggunaan dasar.

Membuat permintaan yang telah ditandatangani sebelumnya

Anda bisa mendapatkan pra-ditandatangani URL ke objek Amazon S3 dengan menggunakan Aws\S3\S3Client::createPresignedRequest() metode ini. Metode ini menerima Aws\CommandInterface objek dan stempel waktu kedaluwarsa dan mengembalikan objek yang telah ditandatangani sebelumnya. Psr\Http\Message\RequestInterface Anda dapat mengambil objek yang telah ditandatangani sebelumnya URL menggunakan getUri() metode permintaan.

Skenario yang paling umum adalah membuat pra-ditandatangani URL ke GET objek.

Impor

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

Kode Sampel

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

Membuat pra-ditandatangani URL

Anda dapat membuat pra-ditandatangani URLs untuk setiap operasi Amazon S3 menggunakan getCommand metode untuk membuat objek perintah, dan kemudian memanggil createPresignedRequest() metode dengan perintah. Saat akhirnya mengirim permintaan, pastikan untuk menggunakan metode yang sama dan header yang sama dengan permintaan yang dikembalikan.

Kode Sampel

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(); }

Mendapatkan URL ke suatu objek

Jika Anda hanya membutuhkan publik URL untuk objek yang disimpan dalam bucket Amazon S3, Anda dapat menggunakan metode iniAws\S3\S3Client::getObjectUrl(). Metode ini mengembalikan unsigned URL ke bucket dan kunci yang diberikan.

Kode Sampel

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

Yang URL dikembalikan oleh metode ini tidak divalidasi untuk memastikan bahwa bucket atau kunci ada, metode ini juga tidak memastikan bahwa objek mengizinkan akses yang tidak diautentikasi.