Menentukan enkripsi sisi server dengan kunci terkelola Amazon S3 (-S3) SSE - Amazon Simple Storage Service

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

Menentukan enkripsi sisi server dengan kunci terkelola Amazon S3 (-S3) SSE

Semua bucket Amazon S3 memiliki enkripsi yang dikonfigurasi secara default, dan semua objek baru yang diunggah ke bucket S3 secara otomatis dienkripsi saat sedang tidak aktif. Enkripsi sisi server dengan kunci terkelola Amazon S3 (SSE-S3) adalah konfigurasi enkripsi default untuk setiap bucket di Amazon S3. Untuk menggunakan jenis enkripsi yang berbeda, Anda dapat menentukan jenis enkripsi di sisi server yang akan digunakan dalam permintaan PUT S3, atau Anda dapat mengatur konfigurasi enkripsi default di bucket tujuan.

Jika Anda ingin menentukan jenis enkripsi yang berbeda dalam PUT permintaan Anda, Anda dapat menggunakan enkripsi sisi server dengan AWS Key Management Service (AWS KMS) kunci (-), enkripsi sisi server dua lapis dengan kunci (SSE-KMS), atau enkripsi sisi server dengan AWS KMS kunci yang disediakan DSSE pelanggan (-CKMS). SSE Jika Anda ingin mengatur konfigurasi enkripsi default yang berbeda di bucket tujuan, Anda dapat menggunakan SSE - KMS atau DSSE -KMS.

Anda dapat menentukan SSE -S3 dengan menggunakan konsol S3,, REST APIs AWS SDKs, dan AWS Command Line Interface ().AWS CLI Untuk informasi selengkapnya, lihat Mengatur perilaku enkripsi di sisi server default untuk bucket Amazon S3.

Topik ini menjelaskan cara mengatur atau mengubah jenis enkripsi objek dengan menggunakan AWS Management Console. Saat menyalin objek dengan menggunakan konsol, Amazon S3 menyalin objek seperti apa adanya. Itu berarti bahwa jika objek sumber dienkripsi, objek target juga dienkripsi. Anda dapat menggunakan konsol untuk menambahkan atau mengubah enkripsi untuk suatu objek.

catatan
  • Anda dapat mengubah enkripsi objek jika objek Anda kurang dari 5 GB. Jika objek Anda lebih besar dari 5 GB, Anda harus menggunakan AWS CLIatau AWS SDKsuntuk mengubah enkripsi objek.

  • Untuk daftar izin tambahan yang diperlukan untuk mengubah enkripsi objek, lihatIzin yang diperlukan untuk operasi Amazon API S3. Misalnya kebijakan yang memberikan izin ini, lihatContoh kebijakan berbasis identitas untuk Amazon S3.

  • Jika Anda mengubah enkripsi objek, sebuah objek baru akan dibuat untuk menggantikan objek 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).

Untuk mengubah enkripsi untuk objek
  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/

  2. Di panel navigasi, pilih Bucket, lalu pilih tab Bucket tujuan umum. Arahkan ke bucket Amazon S3 atau folder yang berisi objek yang ingin Anda ubah.

  3. Pilih kotak centang untuk objek yang ingin Anda ubah.

  4. Pada menu Tindakan, pilih Edit enkripsi sisi server dari daftar opsi yang muncul.

  5. Gulir ke bagian enkripsi sisi server.

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

  7. Jika Anda memilih Timpa pengaturan bucket untuk enkripsi default, konfigurasikan pengaturan enkripsi berikut.

    1. Di bawah Jenis enkripsi, pilih Enkripsi sisi server dengan kunci terkelola Amazon S3 (-S3). SSE SSE-S3 menggunakan salah satu cifer blok terkuat—256-bit Advanced Encryption Standard (AES-256) untuk mengenkripsi setiap objek. Untuk informasi selengkapnya, lihat Menggunakan enkripsi sisi server dengan kunci terkelola Amazon S3 (-S3) SSE.

  8. Di bawah Pengaturan salinan tambahan, pilih apakah Anda ingin Menyalin setelan sumber, Jangan tentukan pengaturan, atau Tentukan pengaturan. Pengaturan sumber salin adalah opsi default. Jika Anda hanya ingin menyalin objek tanpa atribut pengaturan sumber, pilih Jangan tentukan pengaturan. Pilih Tentukan pengaturan untuk menentukan pengaturan untuk kelas penyimpanan, tag objekACLs, metadata, enkripsi sisi server, dan checksum tambahan.

  9. Pilih Simpan perubahan.

catatan

Tindakan ini menerapkan enkripsi untuk semua objek yang ditentukan. Saat mengenkripsi folder, tunggu hingga operasi penyimpanannya selesai sebelum menambahkan objek baru ke folder tersebut.

Pada saat pembuatan objek — yaitu, saat Anda mengunggah objek baru atau membuat salinan objek yang ada — Anda dapat menentukan apakah Anda ingin Amazon S3 mengenkripsi data Anda dengan kunci terkelola Amazon S3 (-S3) dengan menambahkan header ke permintaan. SSE x-amz-server-side-encryption Mengatur nilai header ke algoritma enkripsi AES256, yang didukung Amazon S3. Amazon S3 mengonfirmasi bahwa objek Anda disimpan dengan SSE -S3 dengan mengembalikan header respons. x-amz-server-side-encryption

APIOperasi REST upload berikut menerima header x-amz-server-side-encryption permintaan.

Saat mengunggah objek besar menggunakan API operasi unggahan multibagian, Anda dapat menentukan enkripsi sisi server dengan menambahkan x-amz-server-side-encryption header ke permintaan Inisiate Multipart Upload. Saat Anda menyalin objek yang ada, terlepas dari apakah objek sumbernya dienkripsi atau tidak, objek tujuan tidak dienkripsi kecuali jika Anda secara eksplisit meminta enkripsi di sisi server.

Header respons dari REST API operasi berikut mengembalikan x-amz-server-side-encryption header saat objek disimpan menggunakan SSE -S3.

catatan

Jangan mengirim header permintaan enkripsi untuk GET permintaan dan HEAD permintaan jika objek Anda menggunakan SSE -S3, atau Anda akan mendapatkan kesalahan kode HTTP status 400 (Permintaan Buruk).

Saat menggunakan AWS SDKs, Anda dapat meminta Amazon S3 untuk menggunakan enkripsi sisi server dengan kunci enkripsi terkelola Amazon S3 (-S3). SSE Bagian ini memberikan contoh penggunaan AWS SDKs dalam berbagai bahasa. Untuk informasi tentang lainnyaSDKs, buka Kode Sampel dan Perpustakaan.

Java

Ketika Anda menggunakan AWS SDK for Java untuk meng-upload objek, Anda dapat menggunakan SSE -S3 untuk mengenkripsi itu. Untuk meminta enkripsi di sisi server, gunakan properti ObjectMetadata dari PutObjectRequest untuk menetapkan header permintaan x-amz-server-side-encryption. Saat Anda memanggil putObject() metode dari AmazonS3Client, Amazon S3 mengenkripsi dan menyimpan data.

Anda juga dapat meminta enkripsi SSE -S3 saat mengunggah objek dengan operasi unggahan multibagian: API

  • Saat menggunakan API operasi unggahan multibagian tingkat tinggi, Anda menggunakan TransferManager metode untuk menerapkan enkripsi sisi server ke objek saat Anda mengunggahnya. Anda dapat menggunakan metode pengunggahan apa saja yang menggunakan ObjectMetadata sebagai parameter. Untuk informasi selengkapnya, lihat Pengunggahan objek menggunakan unggahan multibagian.

  • Saat menggunakan API operasi unggahan multibagian tingkat rendah, Anda menentukan enkripsi sisi server saat memulai unggahan multibagian. Anda menambahkan properti ObjectMetadata dengan memanggil metode InitiateMultipartUploadRequest.setObjectMetadata(). Untuk informasi selengkapnya, lihat Menggunakan AWS SDKs (tingkat rendahAPI).

Anda tidak dapat langsung mengubah status enkripsi suatu objek (mengenkripsi objek yang tidak dienkripsi atau mendekripsi objek yang dienkripsi). Untuk mengubah status enkripsi objek, Anda membuat salinan objek, dengan menentukan status enkripsi yang diinginkan untuk salinan, lalu hapus objek asli. Amazon S3 mengenkripsi objek yang disalin hanya jika Anda secara eksplisit meminta enkripsi di sisi server. Untuk meminta enkripsi objek yang disalin melalui JavaAPI, gunakan ObjectMetadata properti untuk menentukan enkripsi sisi server di file. CopyObjectRequest

contoh Contoh

Contoh berikut menunjukkan cara menetapkan enkripsi di sisi server menggunakan AWS SDK for Java. Itu menunjukkan cara melakukan tugas berikut:

  • Unggah objek baru dengan menggunakan SSE -S3.

  • Ubah status enkripsi objek (dalam contoh ini, mengenkripsi objek yang tidak dienkripsi sebelumnya) dengan membuat salinan objek.

  • Periksa status enkripsi objek.

Untuk informasi lebih lanjut tentang enkripsi di sisi server, lihat Menggunakan REST API. Untuk petunjuk cara membuat dan menguji sampel yang berfungsi, lihat Memulai di Panduan AWS SDK for Java Pengembang.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.internal.SSEResultBase; import com.amazonaws.services.s3.model.*; import java.io.ByteArrayInputStream; public class SpecifyServerSideEncryption { public static void main(String[] args) { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String keyNameToEncrypt = "*** Key name for an object to upload and encrypt ***"; String keyNameToCopyAndEncrypt = "*** Key name for an unencrypted object to be encrypted by copying ***"; String copiedObjectKeyName = "*** Key name for the encrypted copy of the unencrypted object ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(clientRegion) .withCredentials(new ProfileCredentialsProvider()) .build(); // Upload an object and encrypt it with SSE. uploadObjectWithSSEEncryption(s3Client, bucketName, keyNameToEncrypt); // Upload a new unencrypted object, then change its encryption state // to encrypted by making a copy. changeSSEEncryptionStatusByCopying(s3Client, bucketName, keyNameToCopyAndEncrypt, copiedObjectKeyName); } 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(); } } private static void uploadObjectWithSSEEncryption(AmazonS3 s3Client, String bucketName, String keyName) { String objectContent = "Test object encrypted with SSE"; byte[] objectBytes = objectContent.getBytes(); // Specify server-side encryption. ObjectMetadata objectMetadata = new ObjectMetadata(); objectMetadata.setContentLength(objectBytes.length); objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION); PutObjectRequest putRequest = new PutObjectRequest(bucketName, keyName, new ByteArrayInputStream(objectBytes), objectMetadata); // Upload the object and check its encryption status. PutObjectResult putResult = s3Client.putObject(putRequest); System.out.println("Object \"" + keyName + "\" uploaded with SSE."); printEncryptionStatus(putResult); } private static void changeSSEEncryptionStatusByCopying(AmazonS3 s3Client, String bucketName, String sourceKey, String destKey) { // Upload a new, unencrypted object. PutObjectResult putResult = s3Client.putObject(bucketName, sourceKey, "Object example to encrypt by copying"); System.out.println("Unencrypted object \"" + sourceKey + "\" uploaded."); printEncryptionStatus(putResult); // Make a copy of the object and use server-side encryption when storing the // copy. CopyObjectRequest request = new CopyObjectRequest(bucketName, sourceKey, bucketName, destKey); ObjectMetadata objectMetadata = new ObjectMetadata(); objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION); request.setNewObjectMetadata(objectMetadata); // Perform the copy operation and display the copy's encryption status. CopyObjectResult response = s3Client.copyObject(request); System.out.println("Object \"" + destKey + "\" uploaded with SSE."); printEncryptionStatus(response); // Delete the original, unencrypted object, leaving only the encrypted copy in // Amazon S3. s3Client.deleteObject(bucketName, sourceKey); System.out.println("Unencrypted object \"" + sourceKey + "\" deleted."); } private static void printEncryptionStatus(SSEResultBase response) { String encryptionStatus = response.getSSEAlgorithm(); if (encryptionStatus == null) { encryptionStatus = "Not encrypted with SSE"; } System.out.println("Object encryption status is: " + encryptionStatus); } }
.NET

Saat mengunggah sebuah objek, Anda dapat mengarahkan Amazon S3 untuk mengenkripsinya. Untuk mengubah status enkripsi objek yang sudah ada, Anda membuat salinan objek dan menghapus objek sumber. Secara default, operasi penyalinan mengenkripsi target hanya jika Anda secara eksplisit meminta enkripsi di sisi server objek target. Untuk menentukan SSE -S3 diCopyObjectRequest, tambahkan yang berikut ini:

ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256

Untuk sampel kerja tentang cara menyalin objek, lihat Menggunakan AWS SDKs.

Contoh berikut mengunggah objek. Dalam permintaan, contoh tersebut mengarahkan Amazon S3 untuk mengenkripsi objek. Contoh tersebut kemudian mengambil metadata objek dan memverifikasi metode enkripsi yang digunakan. Untuk informasi tentang menyiapkan dan menjalankan contoh kode, lihat Memulai dengan AWS SDK for. NETdi AWS SDKuntuk. NETPanduan Pengembang.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class SpecifyServerSideEncryptionTest { private const string bucketName = "*** bucket name ***"; private const string keyName = "*** key name for object created ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); WritingAnObjectAsync().Wait(); } static async Task WritingAnObjectAsync() { try { var putRequest = new PutObjectRequest { BucketName = bucketName, Key = keyName, ContentBody = "sample text", ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256 }; var putResponse = await client.PutObjectAsync(putRequest); // Determine the encryption state of an object. GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest { BucketName = bucketName, Key = keyName }; GetObjectMetadataResponse response = await client.GetObjectMetadataAsync(metadataRequest); ServerSideEncryptionMethod objectEncryption = response.ServerSideEncryptionMethod; Console.WriteLine("Encryption method used: {0}", objectEncryption.ToString()); } 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); } } } }
PHP

Topik ini menunjukkan cara menggunakan kelas dari versi 3 AWS SDK for PHP untuk menambahkan SSE -S3 ke objek yang Anda unggah ke Amazon S3. Untuk informasi lebih lanjut tentang AWS SDK untuk RubyAPI, buka AWS SDKuntuk Ruby - Versi 2.

Untuk mengunggah objek ke Amazon S3, gunakan metode Aws\ S3\ S3Client:: (). putObject Untuk menambahkan x-amz-server-side-encryption header permintaan ke permintaan pengunggahan, tentukan parameter ServerSideEncryption dengan nilai AES256, seperti yang ditunjukkan dalam contoh kode berikut. Untuk informasi lebih lanjut tentang permintaan enkripsi di sisi server, lihat Menggunakan REST API.

require 'vendor/autoload.php'; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; // $filepath should be an absolute path to a file on disk. $filepath = '*** Your File Path ***'; $s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-east-1' ]); // Upload a file with server-side encryption. $result = $s3->putObject([ 'Bucket' => $bucket, 'Key' => $keyname, 'SourceFile' => $filepath, 'ServerSideEncryption' => 'AES256', ]);

Sebagai respons, Amazon S3 mengembalikan header x-amz-server-side-encryption dengan nilai algoritma enkripsi yang digunakan untuk mengenkripsi data objek Anda.

Saat Anda mengunggah objek besar dengan menggunakan API operasi unggahan multipart, Anda dapat menentukan SSE -S3 untuk objek yang Anda unggah, sebagai berikut:

  • Saat Anda menggunakan API operasi unggahan multibagian tingkat rendah, tentukan enkripsi sisi server saat Anda memanggil metode Aws\ S3\ S3Client:: (). createMultipartUpload Untuk menambahkan header permintaan x-amz-server-side-encryption untuk permintaan Anda, tentukan parameter array kunci ServerSideEncryption dengan nilai AES256. Untuk informasi selengkapnya tentang API operasi pengunggahan multibagian tingkat rendah, lihat. Menggunakan AWS SDKs (tingkat rendahAPI)

  • Saat Anda menggunakan API operasi unggahan multibagian tingkat tinggi, tentukan enkripsi sisi server dengan menggunakan parameter operasi. ServerSideEncryption CreateMultipartUploadAPI Untuk contoh penggunaan setOption() metode dengan API operasi unggahan multibagian tingkat tinggi, lihat. Pengunggahan objek menggunakan unggahan multibagian

Untuk menentukan status enkripsi objek yang ada, ambil metadata objek dengan memanggil metode Aws\ S3\ S3Client:: headObject () seperti yang ditunjukkan pada contoh kode berikut. PHP

require 'vendor/autoload.php'; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; $s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-east-1' ]); // Check which server-side encryption algorithm is used. $result = $s3->headObject([ 'Bucket' => $bucket, 'Key' => $keyname, ]); echo $result['ServerSideEncryption'];

Untuk mengubah status enkripsi objek yang ada, buat salinan objek dengan menggunakan metode Aws\ S3\ S3Client:: copyObject () dan hapus objek sumber. Secara default, copyObject() tidak mengenkripsi target kecuali jika Anda secara eksplisit meminta enkripsi di sisi server objek tujuan menggunakan parameter ServerSideEncryption dengan nilai AES256. Contoh PHP kode berikut membuat salinan objek dan menambahkan enkripsi sisi server ke objek yang disalin.

require 'vendor/autoload.php'; use Aws\S3\S3Client; $sourceBucket = '*** Your Source Bucket Name ***'; $sourceKeyname = '*** Your Source Object Key ***'; $targetBucket = '*** Your Target Bucket Name ***'; $targetKeyname = '*** Your Target Object Key ***'; $s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-east-1' ]); // Copy an object and add server-side encryption. $s3->copyObject([ 'Bucket' => $targetBucket, 'Key' => $targetKeyname, 'CopySource' => "$sourceBucket/$sourceKeyname", 'ServerSideEncryption' => 'AES256', ]);

Untuk informasi selengkapnya, lihat topik berikut.

Ruby

Saat menggunakan AWS SDK for Ruby untuk mengunggah objek, Anda dapat menentukan bahwa objek disimpan terenkripsi saat istirahat dengan SSE -S3. Saat Anda membaca kembali, objek tersebut akan didekripsi secara otomatis.

Contoh AWS SDK for Ruby Versi 3 berikut menunjukkan cara menentukan bahwa file yang diunggah ke Amazon S3 dienkripsi saat istirahat.

require 'aws-sdk-s3' # Wraps Amazon S3 object actions. class ObjectPutSseWrapper attr_reader :object # @param object [Aws::S3::Object] An existing Amazon S3 object. def initialize(object) @object = object end def put_object_encrypted(object_content, encryption) @object.put(body: object_content, server_side_encryption: encryption) true rescue Aws::Errors::ServiceError => e puts "Couldn't put your content to #{object.key}. Here's why: #{e.message}" false end end # Example usage: def run_demo bucket_name = "amzn-s3-demo-bucket" object_key = "my-encrypted-content" object_content = "This is my super-secret content." encryption = "AES256" wrapper = ObjectPutSseWrapper.new(Aws::S3::Object.new(bucket_name, object_content)) return unless wrapper.put_object_encrypted(object_content, encryption) puts "Put your content into #{bucket_name}:#{object_key} and encrypted it with #{encryption}." end run_demo if $PROGRAM_NAME == __FILE__

Contoh kode berikut menunjukkan cara menentukan status enkripsi objek yang ada.

require 'aws-sdk-s3' # Wraps Amazon S3 object actions. class ObjectGetEncryptionWrapper attr_reader :object # @param object [Aws::S3::Object] An existing Amazon S3 object. def initialize(object) @object = object end # Gets the object into memory. # # @return [Aws::S3::Types::GetObjectOutput, nil] The retrieved object data if successful; otherwise nil. def object @object.get rescue Aws::Errors::ServiceError => e puts "Couldn't get object #{@object.key}. Here's why: #{e.message}" end end # Example usage: def run_demo bucket_name = "amzn-s3-demo-bucket" object_key = "my-object.txt" wrapper = ObjectGetEncryptionWrapper.new(Aws::S3::Object.new(bucket_name, object_key)) obj_data = wrapper.get_object return unless obj_data encryption = obj_data.server_side_encryption.nil? ? 'no' : obj_data.server_side_encryption puts "Object #{object_key} uses #{encryption} encryption." end run_demo if $PROGRAM_NAME == __FILE__

Jika enkripsi di sisi server tidak digunakan untuk objek yang disimpan di Amazon S3, metode tersebut akan menghasilkan null.

Untuk mengubah status enkripsi objek yang ada, buat salinan objek tersebut dan hapus objek sumber. Secara default, metode penyalinan tidak mengenkripsi target kecuali Anda secara eksplisit meminta enkripsi di sisi server. Anda dapat meminta enkripsi objek target dengan menentukan nilai server_side_encryption dalam argumen hash opsi, seperti yang ditunjukkan dalam contoh kode Ruby berikut. Contoh kode menunjukkan cara menyalin objek dan mengenkripsi salinan dengan SSE -S3.

require 'aws-sdk-s3' # Wraps Amazon S3 object actions. class ObjectCopyEncryptWrapper attr_reader :source_object # @param source_object [Aws::S3::Object] An existing Amazon S3 object. This is used as the source object for # copy actions. def initialize(source_object) @source_object = source_object end # Copy the source object to the specified target bucket, rename it with the target key, and encrypt it. # # @param target_bucket [Aws::S3::Bucket] An existing Amazon S3 bucket where the object is copied. # @param target_object_key [String] The key to give the copy of the object. # @return [Aws::S3::Object, nil] The copied object when successful; otherwise, nil. def copy_object(target_bucket, target_object_key, encryption) @source_object.copy_to(bucket: target_bucket.name, key: target_object_key, server_side_encryption: encryption) target_bucket.object(target_object_key) rescue Aws::Errors::ServiceError => e puts "Couldn't copy #{@source_object.key} to #{target_object_key}. Here's why: #{e.message}" end end # Example usage: def run_demo source_bucket_name = "amzn-s3-demo-bucket1" source_key = "my-source-file.txt" target_bucket_name = "amzn-s3-demo-bucket2" target_key = "my-target-file.txt" target_encryption = "AES256" source_bucket = Aws::S3::Bucket.new(source_bucket_name) wrapper = ObjectCopyEncryptWrapper.new(source_bucket.object(source_key)) target_bucket = Aws::S3::Bucket.new(target_bucket_name) target_object = wrapper.copy_object(target_bucket, target_key, target_encryption) return unless target_object puts "Copied #{source_key} from #{source_bucket_name} to #{target_object.bucket_name}:#{target_object.key} and "\ "encrypted the target with #{target_object.server_side_encryption} encryption." end run_demo if $PROGRAM_NAME == __FILE__

Untuk menentukan SSE -S3 saat Anda mengunggah objek dengan menggunakan AWS CLI, gunakan contoh berikut.

aws s3api put-object --bucket amzn-s3-demo-bucket1 --key object-key-name --server-side-encryption AES256 --body file path

Untuk informasi selengkapnya, lihat put-object dalam Referensi AWS CLI . Untuk menentukan SSE -S3 saat Anda menyalin objek dengan menggunakan AWS CLI, lihat copy-object.

Untuk contoh pengaturan enkripsi menggunakan AWS CloudFormation, lihat Membuat bucket dengan enkripsi default dan contoh Membuat bucket dengan menggunakan enkripsi AWS KMS sisi server dengan S3 Bucket Key dalam AWS::S3::Bucket ServerSideEncryptionRule topik di Panduan Pengguna.AWS CloudFormation