Mengunggah Objek - 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

Saat Anda mengunggah file ke Amazon S3, file tersebut disimpan sebagai objek S3. Objek terdiri dari data file dan metadata yang menjelaskan objek tersebut. Anda dapat memiliki jumlah objek tak terbatas dalam satu bucket. Sebelum Anda dapat mengunggah file ke bucket Amazon S3, Anda memerlukan izin menulis untuk bucket tersebut. Untuk informasi selengkapnya tentang izin akses, lihat Identity and Access Management untuk Amazon S3.

Anda dapat mengunggah jenis file apa pun—gambar, cadangan, data, film, dan sebagainya—ke dalam bucket S3. Ukuran maksimum file yang dapat Anda unggah menggunakan konsol Amazon S3 adalah 160 GB. Untuk mengunggah file yang lebih besar dari 160 GB, gunakan AWS Command Line Interface (AWS CLI), AWS SDK, atau Amazon S3 REST API.

Jika Anda mengunggah sebuah objek dengan nama kunci yang sudah ada dalam bucket yang diaktifkan dengan Penentuan Versi, Amazon S3 membuat versi lain dari objek tersebut dan bukan mengganti objek yang ada. Untuk informasi selengkapnya tentang penentuan versi, lihat Menggunakan konsol S3.

Tergantung dari ukuran data yang Anda unggah, Amazon S3 menawarkan opsi berikut:

  • Unggah objek dalam satu operasi dengan menggunakan AWS SDK, REST API, atau AWS CLI — Dengan satu PUT operasi, Anda dapat mengunggah satu objek berukuran hingga 5 GB.

  • Unggah objek tunggal menggunakan konsol Amazon S3 Dengan konsol Amazon S3, Anda dapat mengunggah objek tunggal yang berukuran hingga 160 GB.

  • Unggah objek dalam beberapa bagian menggunakan AWS SDK, REST API, atau AWS CLI Menggunakan operasi API unggahan multibagian, Anda dapat mengunggah satu objek besar, berukuran hingga 5 TB.

    Pengoperasian API unggahan multibagian dirancang untuk meningkatkan pengalaman pengunggahan untuk objek yang lebih besar. Anda dapat mengunggah objek dalam beberapa bagian. Bagian-bagian objek ini dapat diunggah secara mandiri, dalam urutan apa pun, dan secara paralel. Anda dapat menggunakan unggahan multibagian untuk objek dengan ukuran mulai dari 5 MB hingga 5 TB. Untuk informasi selengkapnya, lihat Mengunggah dan menyalin objek menggunakan unggahan multibagian.

Saat Anda mengunggah sebuah objek, objek secara otomatis dienkripsi menggunakan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3) secara default. Saat Anda mengunduhnya, objek tersebut didekripsi. Untuk informasi selengkapnya, lihat Mengatur perilaku enkripsi di sisi server default untuk bucket Amazon S3 dan Melindungi data dengan enkripsi.

Saat mengunggah objek, jika Anda ingin menggunakan jenis enkripsi default yang berbeda, Anda juga dapat menentukan enkripsi di sisi server dengan kunci AWS Key Management Service (AWS KMS) (SSE-KMS) dalam permintaan PUT S3, atau mengatur konfigurasi enkripsi default di bucket tujuan untuk menggunakan SSE-KMS untuk mengenkripsi data Anda. Untuk informasi lebih lanjut tentang SSE-KMS, lihat Menentukan enkripsi di sisi server dengan AWS KMS (SSE-KMS). Jika Anda ingin menggunakan kunci KMS yang dimiliki oleh akun lain, Anda harus memiliki izin untuk menggunakan kunci tersebut. Untuk informasi selengkapnya tentang izin lintas akun untuk kunci KMS, lihat Membuat kunci KMS yang dapat digunakan oleh akun lain di Panduan Pengembang AWS Key Management Service .

Jika Anda menemukan error Access Denied (403 Forbidden) di Amazon S3, Pecahkan masalah kesalahan Akses Ditolak (403 Forbidden) di Amazon S3 lihat untuk mempelajari lebih lanjut tentang penyebab umumnya.

Prosedur ini menjelaskan cara untuk mengunggah objek dan folder ke bucket Amazon S3 menggunakan konsol tersebut.

Ketika Anda mengunggah objek, nama kunci objek adalah nama file dan prefiks opsional. Di konsol Amazon S3, Anda dapat membuat folder untuk mengatur objek Anda. Di Amazon S3, folder diwakili sebagai prefiks yang muncul dalam nama kunci objek. Jika Anda mengunggah objek individu ke folder di konsol Amazon S3, nama folder disertakan dalam nama kunci objek.

Misalnya, jika Anda mengunggah sebuah objek bernama sample1.jpg ke folder bernama backup, nama kuncinya adalah backup/sample1.jpg. Namun, objek ditampilkan di konsol sebagai sample1.jpg dalam folder backup. Untuk informasi selengkapnya tentang nama kunci, lihat Bekerja dengan metadata objek.

catatan

Jika Anda mengganti sebuah objek atau mengubah properti apa pun di konsol Amazon S3, misalnya Kelas Penyimpanan, Enkripsi, atau Metadata, sebuah objek baru dibuat untuk menggantikan yang lama. Jika Penentuan Versi S3 diaktifkan, versi baru objek akan dibuat, dan objek yang sudah ada menjadi versi yang lebih lama. Peran yang mengubah properti juga menjadi pemilik objek baru (atau versi objek).

Saat Anda mengunggah folder, Amazon S3 mengunggah semua file dan subfolder dari folder yang ditentukan ke bucket Anda. Kode tersebut kemudian menetapkan nama kunci objek yang merupakan kombinasi nama file unggahan dan nama folder. Misalnya, jika Anda mengunggah folder bernama /images yang berisi dua file, sample1.jpg dan sample2.jpg, Amazon S3 mengunggah file tersebut dan kemudian menetapkan nama kunci yang sesuai, images/sample1.jpg dan images/sample2.jpg. Nama-nama kunci termasuk nama folder sebagai prefiks. Konsol Amazon S3 hanya menampilkan bagian dari nama kunci yang mengikuti / yang terakhir. Misalnya, dalam folder images, objek images/sample1.jpg dan images/sample2.jpg ditampilkan sebagai sample1.jpg dan sample2.jpg.

Untuk mengunggah file dan folder ke bucket S3
  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

  2. Di panel navigasi kiri, pilih Bucket.

  3. Di dalam daftar Bucket, pilih nama bucket tempat Anda ingin mengunggah folder dan file.

  4. Pilih Unggah.

  5. Di jendela Unggah, lakukan salah satu hal berikut:

    • Seret dan jatuhkan file dan folder ke jendela Unggah.

    • Pilih Tambahkan file atau Tambahkan folder, pilih file atau folder untuk diunggah, dan pilih Buka.

  6. Untuk mengaktifkan Penentuan Versi, di bawah Tujuan memilih Aktifkan Penentuan Versi Bucket.

  7. Untuk mengunggah file dan folder yang terdaftar tanpa mengonfigurasi opsi pengunggahan tambahan, di bagian bawah halaman, pilih Unggah.

    Amazon S3 mengunggah objek dan folder Anda. Setelah unggahan selesai, Anda melihat pesan sukses di halaman Unggahan: status.

Untuk mengonfigurasi properti objek tambahan
  1. Untuk mengubah izin daftar kontrol akses, pilih Izin.

  2. Di bagian bawah Daftar kontrol akses (ACL), edit izinnya.

    Untuk informasi selengkapnya tentang izin akses objek, lihat Menggunakan konsol S3 untuk mengatur izin ACL untuk objek. Anda dapat memberikan akses baca ke objek Anda kepada publik (semua orang di dunia) untuk semua file yang Anda unggah. Namun, kami merekomendasikan untuk tidak mengubah pengaturan default untuk mengakses baca publik. Pemberian akses baca publik berlaku untuk sebagian kecil kasus penggunaan, seperti saat bucket digunakan untuk situs web. Anda dapat selalu mengubah izin objek setelah Anda mengunggah objek.

  3. Untuk mengonfigurasi properti tambahan lainnya, pilih Properti.

  4. Di bagian bawah Kelas penyimpanan pilih kelas penyimpanan untuk file yang Anda unggah.

    Untuk informasi selengkapnya tentang kelas penyimpanan, lihat Menggunakan kelas penyimpanan Amazon S3.

  5. Untuk memperbarui pengaturan enkripsi untuk objek Anda, di bagian bawah Pengaturan enkripsi di sisi server, lakukan hal berikut.

    1. Pilih Tentukan kunci enkripsi.

    2. Di bawah Pengaturan enkripsi, pilih Gunakan pengaturan bucket untuk enkripsi default, atau Ganti pengaturan bucket untuk enkripsi default.

    3. Jika Anda memilih Ganti pengaturan bucket untuk enkripsi default, Anda harus mengonfigurasi pengaturan enkripsi berikut.

      • Untuk mengenkripsi file yang diunggah dengan menggunakan kunci yang dikelola oleh Amazon S3, pilih Kunci yang dikelola Amazon S3 (SSE-S3).

        Untuk informasi selengkapnya, lihat Menggunakan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3).

      • Untuk mengenkripsi file yang diunggah dengan menggunakan kunci yang disimpan di AWS Key Management Service (AWS KMS), pilih AWS Key Management Service kunci (SSE-KMS). Lalu pilih salah satu opsi berikut ini untuk kunci AWS KMS :

        • Untuk memilih dari daftar kunci KMS yang tersedia, pilih Pilih dari AWS KMS keys Anda, dan pilih Kunci KMS Anda dari daftar kunci yang tersedia.

          Kunci Kunci yang dikelola AWS (aws/s3) dan kunci terkelola pelanggan Anda muncul dalam daftar ini. Untuk informasi selengkapnya tentang CMK, lihat Kunci pelanggan dan AWS kunci di AWS Key Management Service Panduan Pengembang.

        • Untuk memasukkan ARN kunci KMS, pilih Masukkan AWS KMS key ARN, lalu masukkan ARN kunci KMS Anda di bidang yang muncul.

        • Untuk membuat kunci terkelola pelanggan baru di AWS KMS konsol, pilih Buat kunci KMS.

          Untuk informasi selengkapnya tentang membuat AWS KMS key, lihat Membuat kunci di Panduan AWS Key Management Service Pengembang.

        penting

        Anda hanya dapat menggunakan tombol KMS yang tersedia Wilayah AWS sama dengan bucket. Konsol Amazon S3 hanya mencantumkan kunci 100 KMS pertama di Wilayah yang sama dengan bucket. Untuk menggunakan kunci KMS yang tidak terdaftar, Anda harus memasukkan ARN kunci KMS Anda. Jika Anda ingin menggunakan kunci KMS yang dimiliki oleh akun lain, Anda harus terlebih dahulu memiliki izin untuk menggunakan kunci tersebut, dan kemudian Anda harus memasukkan ARN kunci KMS.

        Amazon S3 hanya mendukung kunci KMS enkripsi simetris, dan tidak mendukung kunci KMS asimetris. Untuk informasi selengkapnya, lihat Mengidentifikasi tombol KMS simetris dan asimetris dalam Panduan Pengembang AWS Key Management Service .

  6. Untuk menggunakan checksum tambahan, pilih Aktif. Kemudian untuk Fungsi checksum, pilih fungsi yang ingin Anda gunakan. Amazon S3 menghitung dan menyimpan nilai checksum setelah menerima objek secara keseluruhan. Anda dapat menggunakan kotak Nilai prakalkulasi untuk memberikan nilai yang telah dihitung sebelumnya. Jika sudah, Amazon S3 membandingkan nilai yang Anda berikan dengan nilai yang dihitung. Jika kedua nilai tidak cocok, Amazon S3 menghasilkan kesalahan.

    Checksum tambahan memungkinkan Anda menentukan algoritma checksum yang ingin Anda gunakan untuk memverifikasi data Anda. Untuk informasi selengkapnya tentang checksum tambahan, lihat Memeriksa integritas objek.

  7. Untuk menambahkan tanda ke semua objek yang Anda unggah, pilih Tambahkan tag. Masukkan nama tag di bidang Kunci. Masukkan nilai untuk tanda.

    Penandaan objek memberi Anda cara untuk mengategorikan penyimpanan. Setiap tag adalah pasangan nilai kunci. Kunci dan nilai tag peka huruf besar dan kecil. Anda dapat membuat hingga 10 tanda per objek. Kunci tanda dapat terdiri dari hingga 128 karakter Unicode, dan nilai tanda dapat terdiri dari hingga 256 karakter Unicode. Untuk informasi selengkapnya tentang tag objek, lihat Mengategorikan penyimpanan Anda menggunakan tag.

  8. Untuk menambahkan metadata, pilih Tambahkan metadata.

    1. Di bawah Jenis, pilih Ditentukan sistem atau Ditentukan pengguna.

      Untuk metadata yang ditentukan sistem, Anda dapat memilih header HTTP umum, seperti Jenis Konten dan Konten-Disposisi. Untuk daftar metadata yang ditentukan sistem, serta informasi tentang apakah Anda dapat menambahkan nilai, lihat Metadata objek yang ditentukan sistem. Metadata apa pun yang dimulai dengan prefiks x-amz-meta- diperlakukan sebagai metadata yang ditentukan pengguna. Metadata yang ditentukan pengguna disimpan bersama objek, dan dikembalikan saat Anda mengunduh objek tersebut. Baik kunci maupun nilainya harus sesuai dengan standar US-ASCII. Metadata yang ditentukan pengguna dapat berukuran sebesar 2 KB. Untuk informasi selengkapnya tentang metadata yang ditentukan sistem dan yang ditentukan pengguna, lihat Bekerja dengan metadata objek.

    2. Untuk Kunci, pilih kuncinya.

    3. Ketikkan nilai untuk kunci tersebut.

  9. Untuk mengunggah objek Anda, pilih Unggah.

    Amazon S3 mengunggah objek Anda. Setelah unggahannya selesai, Anda dapat melihat pesan sukses di halaman Unggah: status.

  10. Pilih Keluar.

Anda dapat menggunakan AWS SDK untuk mengunggah objek di Amazon S3. SDK menyediakan pustaka wrapper agar Anda dapat mengunggah data dengan mudah. Untuk informasi lebih lanjut, lihat Daftar SDK yang didukung.

Berikut adalah beberapa contoh dengan beberapa pilihan SDK:

.NET

Contoh kode C# berikut ini membuat dua objek dengan dua permintaan PutObjectRequest:

  • Permintaan PutObjectRequest yang pertama menyimpan sebuah string teks sebagai data objek sampel. Permintaan ini juga menentukan nama kunci bucket dan objek.

  • Permintaan PutObjectRequest yang kedua mengunggah sebuah file dengan menentukan nama file tersebut. Permintaan ini juga menentukan header ContentType dan metadata objek opsional (sebuah judul).

Untuk petunjuk tentang cara membuat dan menguji sampel yang berfungsi, lihat Menjalankan Contoh Kode Amazon S3 .NET.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class UploadObjectTest { private const string bucketName = "*** bucket name ***"; // For simplicity the example creates two objects from the same file. // You specify key names for these objects. private const string keyName1 = "*** key name for first object created ***"; private const string keyName2 = "*** key name for second object created ***"; private const string filePath = @"*** file path ***"; private static readonly RegionEndpoint bucketRegion = RegionEndpoint.EUWest1; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); WritingAnObjectAsync().Wait(); } static async Task WritingAnObjectAsync() { try { // 1. Put object-specify only key name for the new object. var putRequest1 = new PutObjectRequest { BucketName = bucketName, Key = keyName1, ContentBody = "sample text" }; PutObjectResponse response1 = await client.PutObjectAsync(putRequest1); // 2. Put the object-set ContentType and add metadata. var putRequest2 = new PutObjectRequest { BucketName = bucketName, Key = keyName2, FilePath = filePath, ContentType = "text/plain" }; putRequest2.Metadata.Add("x-amz-meta-title", "someTitle"); PutObjectResponse response2 = await client.PutObjectAsync(putRequest2); } catch (AmazonS3Exception e) { Console.WriteLine( "Error encountered ***. Message:'{0}' when writing an object" , e.Message); } catch (Exception e) { Console.WriteLine( "Unknown encountered on server. Message:'{0}' when writing an object" , e.Message); } } } }
Java

Contoh berikut ini menampilkan pembuatan dua objek. Objek pertama memiliki string teks sebagai data, dan objek kedua adalah sebuah file. Contoh ini membuat objek pertama dengan menentukan nama bucket, kunci objek, dan data teks dalam panggilan langsung ke AmazonS3Client.putObject(). Contoh ini membuat objek kedua dengan menggunakan PutObjectRequest yang menentukan nama bucket, kunci objek, dan jalur file. PutObjectRequest juga menentukan header ContentType dan metadata judul.

Untuk instruksi tentang membuat dan menguji sampel kerja, lihat Menguji Contoh Kode Java Amazon S3.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.ObjectMetadata; import com.amazonaws.services.s3.model.PutObjectRequest; import java.io.File; import java.io.IOException; public class UploadObject { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String stringObjKeyName = "*** String object key name ***"; String fileObjKeyName = "*** File object key name ***"; String fileName = "*** Path to file to upload ***"; try { // This code expects that you have AWS credentials set up per: // https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(clientRegion) .build(); // Upload a text string as a new object. s3Client.putObject(bucketName, stringObjKeyName, "Uploaded String Object"); // Upload a file as a new object with ContentType and title specified. PutObjectRequest request = new PutObjectRequest(bucketName, fileObjKeyName, new File(fileName)); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("plain/text"); metadata.addUserMetadata("title", "someTitle"); request.setMetadata(metadata); s3Client.putObject(request); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
JavaScript

Contoh berikut ini menampilkan pengunggahan sebuah file yang ada ke bucket Amazon S3 di Wilayah tertentu.

import { PutObjectCommand, S3Client } from "@aws-sdk/client-s3"; const client = new S3Client({}); export const main = async () => { const command = new PutObjectCommand({ Bucket: "test-bucket", Key: "hello-s3.txt", Body: "Hello S3!", }); try { const response = await client.send(command); console.log(response); } catch (err) { console.error(err); } };
PHP

Contoh ini memandu Anda menggunakan kelas dari AWS SDK for PHP untuk mengunggah objek berukuran hingga 5 GB. Untuk file yang lebih besar, Anda harus menggunakan operasi pengunggahan API multibagian. Untuk informasi selengkapnya, lihat Mengunggah dan menyalin objek menggunakan unggahan multibagian.

Contoh ini mengasumsikan bahwa Anda sudah mengikuti instruksinya untuk Menggunakan AWS SDK for PHP dan Menjalankan Contoh PHP dan menginstal AWS SDK for PHP dengan benar.

contoh — Membuat sebuah objek dalam sebuah bucket Amazon S3 dengan mengunggah data

Contoh PHP berikut ini membuat objek dalam bucket tertentu dengan mengunggah data menggunakan metode putObject(). Untuk informasi tentang menjalankan contoh PHP dalam panduan ini, lihat Menjalankan Contoh PHP.

require 'vendor/autoload.php'; use Aws\S3\Exception\S3Exception; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; $s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-east-1' ]); try { // Upload data. $result = $s3->putObject([ 'Bucket' => $bucket, 'Key' => $keyname, 'Body' => 'Hello, world!', 'ACL' => 'public-read' ]); // Print the URL to the object. echo $result['ObjectURL'] . PHP_EOL; } catch (S3Exception $e) { echo $e->getMessage() . PHP_EOL; }
Ruby

The AWS SDK for Ruby - Versi 3 memiliki dua cara untuk mengunggah objek ke Amazon S3. Yang pertama menggunakan pengunggah file terkelola, yang mempermudah pengunggahan file berukuran berapa pun dari disk. Untuk menggunakan metode pengunggah file terkelola:

  1. Ciptakan contoh dari kelas Aws::S3::Resource.

  2. Referensikan objek target berdasarkan nama dan kunci bucket. Objek muncul di dalam bucket dan memiliki kunci unik yang mengidentifikasi setiap objek.

  3. Panggil#upload_file pada objek.

require "aws-sdk-s3" # Wraps Amazon S3 object actions. class ObjectUploadFileWrapper attr_reader :object # @param object [Aws::S3::Object] An existing Amazon S3 object. def initialize(object) @object = object end # Uploads a file to an Amazon S3 object by using a managed uploader. # # @param file_path [String] The path to the file to upload. # @return [Boolean] True when the file is uploaded; otherwise false. def upload_file(file_path) @object.upload_file(file_path) true rescue Aws::Errors::ServiceError => e puts "Couldn't upload file #{file_path} to #{@object.key}. Here's why: #{e.message}" false end end # Example usage: def run_demo bucket_name = "doc-example-bucket" object_key = "my-uploaded-file" file_path = "object_upload_file.rb" wrapper = ObjectUploadFileWrapper.new(Aws::S3::Object.new(bucket_name, object_key)) return unless wrapper.upload_file(file_path) puts "File #{file_path} successfully uploaded to #{bucket_name}:#{object_key}." end run_demo if $PROGRAM_NAME == __FILE__

Cara kedua bahwa AWS SDK for Ruby - Versi 3 dapat meng-upload objek menggunakan #put metodeAws::S3::Object. Hal ini berguna jika objeknya adalah string atau objek I/O yang bukan merupakan file pada disk. Untuk menggunakan metode ini:

  1. Buat instans dari kelas Aws::S3::Resource.

  2. Referensikan objek target berdasarkan nama dan kunci bucket.

  3. Panggil#put, pindahkan ke dalam string atau objek I/O.

require "aws-sdk-s3" # Wraps Amazon S3 object actions. class ObjectPutWrapper attr_reader :object # @param object [Aws::S3::Object] An existing Amazon S3 object. def initialize(object) @object = object end def put_object(source_file_path) File.open(source_file_path, "rb") do |file| @object.put(body: file) end true rescue Aws::Errors::ServiceError => e puts "Couldn't put #{source_file_path} to #{object.key}. Here's why: #{e.message}" false end end # Example usage: def run_demo bucket_name = "doc-example-bucket" object_key = "my-object-key" file_path = "my-local-file.txt" wrapper = ObjectPutWrapper.new(Aws::S3::Object.new(bucket_name, object_key)) success = wrapper.put_object(file_path) return unless success puts "Put file #{file_path} into #{object_key} in #{bucket_name}." end run_demo if $PROGRAM_NAME == __FILE__

Anda dapat mengirim permintaan REST untuk mengunggah sebuah objek. Anda dapat mengirim permintaan PUT untuk mengunggah dalam satu operasi. Untuk informasi lebih lanjut, lihat PUT Objek.

Anda dapat mengirim permintaan PUT untuk mengunggah objek hingga 5 GB dalam satu operasi. Untuk informasi dan contoh selengkapnya, lihat contoh PutObject di AWS CLI Referensi Perintah.