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:
-
Buat pra-ditandatangani URL untuk mendapatkan objek S3 menggunakan. createPresignedRequest
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.