Melakukan Operasi pada Amazon S3 Objek - AWS SDK for Java 1.x

AWS SDK for Java 1.x telah memasuki mode pemeliharaan pada 31 Juli 2024, dan akan mencapai end-of-supportpada 31 Desember 2025. Kami menyarankan Anda bermigrasi ke AWS SDK for Java 2.xuntuk terus menerima fitur baru, peningkatan ketersediaan, dan pembaruan keamanan.

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

Melakukan Operasi pada Amazon S3 Objek

Sebuah Amazon S3 objek merupakan file atau koleksi data. Setiap objek harus berada dalam ember.

catatan

Contoh kode ini mengasumsikan bahwa Anda memahami materi dalam Menggunakan AWS SDK for Java dan telah mengkonfigurasi AWS kredensyal default menggunakan informasi di Menyiapkan AWS Kredensyal dan Wilayah untuk Pengembangan.

Meng-unggah Objek

Gunakan putObject metode klien AmazonS3, menyediakan nama bucket, nama kunci, dan file untuk diunggah. Bucket harus ada, atau eror akan terjadi.

Impor

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3;

Kode

System.out.format("Uploading %s to S3 bucket %s...\n", file_path, bucket_name); final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { s3.putObject(bucket_name, key_name, new File(file_path)); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Lihat contoh lengkapnyaGitHub.

Daftar Objek

Untuk mendapatkan daftar objek dalam bucket, gunakan listObjects metode klien AmazonS3, yang menyediakan nama bucket.

listObjectsMetode mengembalikan sebuah ObjectListingobjek yang menyediakan informasi tentang objek dalam ember. Untuk daftar nama objek (kunci), gunakan getObjectSummaries metode untuk mendapatkan Daftar ObjectSummary objek S3, yang masing-masing mewakili satu objek dalam ember. Kemudian panggil getKey metodenya untuk mengambil nama objek.

Impor

import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.ListObjectsV2Result; import com.amazonaws.services.s3.model.S3ObjectSummary;

Kode

System.out.format("Objects in S3 bucket %s:\n", bucket_name); final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); ListObjectsV2Result result = s3.listObjectsV2(bucket_name); List<S3ObjectSummary> objects = result.getObjectSummaries(); for (S3ObjectSummary os : objects) { System.out.println("* " + os.getKey()); }

Lihat contoh lengkapnyaGitHub.

Mengunduh Objek

Gunakan getObject metode klien AmazonS3, berikan nama bucket dan objek untuk diunduh. Jika berhasil, metode mengembalikan S3Object. Bucket dan kunci objek yang ditentukan harus ada, atau eror akan terjadi.

Anda bisa mendapatkan isi objek dengan memanggil getObjectContentS3Object. Ini mengembalikan S3 ObjectInputStream yang berperilaku sebagai objek Java InputStream standar.

Contoh berikut mendownload objek dari S3 dan menyimpan isinya ke file (menggunakan nama yang sama dengan kunci objek).

Impor

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.S3Object; import com.amazonaws.services.s3.model.S3ObjectInputStream; import java.io.File;

Kode

System.out.format("Downloading %s from S3 bucket %s...\n", key_name, bucket_name); final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { S3Object o = s3.getObject(bucket_name, key_name); S3ObjectInputStream s3is = o.getObjectContent(); FileOutputStream fos = new FileOutputStream(new File(key_name)); byte[] read_buf = new byte[1024]; int read_len = 0; while ((read_len = s3is.read(read_buf)) > 0) { fos.write(read_buf, 0, read_len); } s3is.close(); fos.close(); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } catch (FileNotFoundException e) { System.err.println(e.getMessage()); System.exit(1); } catch (IOException e) { System.err.println(e.getMessage()); System.exit(1); }

Lihat contoh lengkapnyaGitHub.

Menyalin, Memindahkan, atau Mengganti Nama Objek

Anda dapat menyalin sebuah objek dari satu bucket ke bucket lainnya menggunakan Amazons3. copyObject Dibutuhkan nama bucket untuk menyalin dari, objek untuk menyalin, dan nama bucket tujuan.

Impor

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions;

Kode

try { s3.copyObject(from_bucket, object_key, to_bucket, object_key); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } System.out.println("Done!");

Lihat contoh lengkapnyaGitHub.

catatan

Anda dapat menggunakan copyObject dengan deleteObject untuk memindahkan atau mengganti nama objek, dengan terlebih dahulu menyalin objek ke nama baru (Anda dapat menggunakan bucket yang sama sebagai sumber dan tujuan) dan kemudian menghapus objek dari lokasi lamanya.

Menghapus Objek

Gunakan deleteObject metode klien Amazons3, berikan nama bucket dan objek yang akan dihapus. Bucket dan kunci objek yang ditentukan harus ada, atau eror akan terjadi.

Impor

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions;

Kode

final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { s3.deleteObject(bucket_name, object_key); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Lihat contoh lengkapnyaGitHub.

Hapus Beberapa Objek Sekaligus

Menggunakan deleteObjects metode AmazonS3 klien, Anda dapat menghapus beberapa objek dari bucket yang sama dengan meneruskan nama mereka ke link: sdk-for-java DeleteObjectsRequest /v1/reference/com/amazonaws/services/s3/model/.html metode.

Impor

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3;

Kode

final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { DeleteObjectsRequest dor = new DeleteObjectsRequest(bucket_name) .withKeys(object_keys); s3.deleteObjects(dor); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Lihat contoh lengkapnyaGitHub.