Mengunggah objek dengan presigned URLs - Amazon Simple Storage Service

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

Mengunggah objek dengan presigned URLs

Anda dapat menggunakan presigned URLs untuk mengizinkan seseorang mengunggah objek ke bucket Amazon S3 Anda. Menggunakan URL yang telah ditetapkan sebelumnya akan memungkinkan unggahan tanpa mengharuskan pihak lain memiliki kredensyal atau izin AWS keamanan. URL yang telah ditandatangani sebelumnya dibatasi oleh izin pengguna yang membuatnya. Artinya, jika Anda menerima URL yang telah ditandatangani sebelumnya untuk mengunggah suatu objek, Anda dapat mengunggah objek hanya jika pembuat URL tersebut memiliki izin yang diperlukan untuk mengunggah objek tersebut.

Saat seseorang menggunakan URL untuk mengunggah sebuah objek, Amazon S3 membuat objek dalam bucket yang ditentukan. Jika objek dengan kunci yang sama yang ditentukan dalam URL yang telah ditandatangani sebelumnya sudah ada di bucket, Amazon S3 akan menggantikan objek yang ada dengan objek yang diunggah. Setelah diunggah, pemilik bucket akan memiliki objek tersebut.

Untuk informasi umum tentang presigned URLs, lihatUnduh dan unggah objek dengan presigned URLs.

Anda dapat membuat URL yang telah ditandatangani sebelumnya untuk mengunggah objek tanpa menulis kode apa pun dengan menggunakan AWS Explorer for Visual Studio. Anda juga dapat membuat URL presigned secara terprogram dengan menggunakan. AWS SDKs

catatan

Saat ini, AWS Toolkit for Visual Studio tidak mendukung Visual Studio untuk Mac.

  1. Instal AWS Toolkit for Visual Studio menggunakan petunjuk berikut, Menginstal dan menyiapkan Toolkit for Visual Studio di AWS Toolkit for Visual Studio Panduan Pengguna.

  2. Connect untuk AWS menggunakan langkah-langkah berikut, Connecting to AWS di Panduan AWS Toolkit for Visual Studio Pengguna.

  3. Di panel sisi kiri berlabel AWS Explorer, klik kanan bucket yang ingin Anda unggah objek.

  4. Pilih Buat URL Pra-Tanda Tangan... .

  5. Di jendela pop-up, atur tanggal kedaluwarsa dan waktu untuk URL yang telah ditetapkan sebelumnya.

  6. Untuk Object Key, atur nama file yang akan diunggah. File yang Anda unggah harus sama persis dengan nama ini. Jika objek dengan kunci objek yang sama sudah ada di bucket, Amazon S3 akan mengganti objek yang ada dengan objek yang baru diunggah.

  7. Pilih PUT untuk menentukan bahwa URL yang telah ditandatangani sebelumnya ini akan digunakan untuk mengunggah objek.

  8. Pilih tombol Hasilkan.

  9. Untuk menyalin URL ke clipboard, pilih Salin.

  10. Untuk menggunakan URL ini, Anda dapat mengirim permintaan PUT dengan perintah curl. Sertakan path lengkap ke file Anda dan URL presigned itu sendiri.

    curl -X PUT -T "/path/to/file" "presigned URL"

Anda dapat membuat URL presigned yang dapat melakukan tindakan S3 untuk waktu yang terbatas.

catatan

Jika Anda menggunakan AWS CLI atau AWS SDKs, waktu kedaluwarsa untuk presigned URLs dapat diatur setinggi 7 hari. Untuk informasi selengkapnya, lihat Waktu kedaluwarsa untuk presigned. URLs

Python

Skrip Python berikut menghasilkan URL yang PUT telah ditetapkan sebelumnya untuk mengunggah objek ke bucket tujuan umum S3.

  1. Salin isi skrip dan simpan sebagai file “put-only-url.py”. Untuk menggunakan contoh berikut, ganti user input placeholders dengan informasi Anda sendiri (seperti nama file Anda).

    import argparse import boto3 from botocore.exceptions import ClientError def generate_presigned_url(s3_client, client_method, method_parameters, expires_in): """ Generate a presigned Amazon S3 URL that can be used to perform an action. :param s3_client: A Boto3 Amazon S3 client. :param client_method: The name of the client method that the URL performs. :param method_parameters: The parameters of the specified client method. :param expires_in: The number of seconds the presigned URL is valid for. :return: The presigned URL. """ try: url = s3_client.generate_presigned_url( ClientMethod=client_method, Params=method_parameters, ExpiresIn=expires_in ) except ClientError: print(f"Couldn't get a presigned URL for client method '{client_method}'.") raise return url def main(): parser = argparse.ArgumentParser() parser.add_argument("bucket", help="The name of the bucket.") parser.add_argument( "key", help="The key (path and filename) in the S3 bucket.", ) args = parser.parse_args() # By default, this will use credentials from ~/.aws/credentials s3_client = boto3.client("s3") # The presigned URL is specified to expire in 1000 seconds url = generate_presigned_url( s3_client, "put_object", {"Bucket": args.bucket, "Key": args.key}, 1000 ) print(f"Generated PUT presigned URL: {url}") if __name__ == "__main__": main()
  2. Untuk menghasilkan URL yang PUT telah ditetapkan sebelumnya untuk mengunggah file, jalankan skrip berikut dengan nama bucket dan jalur objek yang diinginkan.

    Perintah berikut menggunakan nilai contoh. Ganti user input placeholders dengan informasi Anda sendiri.

    python put-only-url.py amzn-s3-demo-bucket <object-path>

    Skrip akan menampilkan URL yang PUT telah ditentukan sebelumnya:

    Generated PUT presigned URL: https://amzn-s3-demo-bucket.s3.amazonaws.com/object.txt?AWS AccessKeyId=AKIAIOSFODNN7EXAMPLE&Signature=vjbyNxybdZaMmLa%2ByT372YEAiv4%3D&Expires=1741978496
  3. Anda sekarang dapat mengunggah file menggunakan URL presigned yang dihasilkan dengan curl:

    curl -X PUT -T "path/to/your/local/file" "generated-presigned-url"

Untuk lebih banyak contoh penggunaan AWS SDKs untuk menghasilkan URL yang telah ditetapkan sebelumnya untuk mengunggah objek, lihat Membuat URL yang telah ditetapkan sebelumnya untuk Amazon S3 menggunakan SDK. AWS