Mengelola akses keAmazon S3Bucket Menggunakan Kebijakan ember - 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.

Mengelola akses keAmazon S3Bucket Menggunakan Kebijakan ember

Anda dapat mengatur, mendapatkan, atau menghapuskebijakan bucketuntuk mengelola akses keAmazon S3ember.

Mengatur Kebijakan ember

Anda dapat mengatur kebijakan bucket S3 tertentu dengan:

  • Memanggil klien AmazonS3setBucketPolicydan menyediakannya denganSetBucketPolicyRequest

  • Mengatur kebijakan secara langsung dengan menggunakansetBucketPolicykelebihan beban yang mengambil nama bucket dan teks kebijakan (dalam format JSON)

Impor

import com.amazonaws.AmazonServiceException; import com.amazonaws.auth.policy.Policy; import com.amazonaws.auth.policy.Principal;

Kode

s3.setBucketPolicy(bucket_name, policy_text); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Gunakan Kelas Kebijakan untuk Menghasilkan atau Memvalidasi Kebijakan

Saat memberikan kebijakan bucketsetBucketPolicy, Anda dapat melakukan hal berikut:

  • Tentukan kebijakan secara langsung sebagai string teks berformat JSON

  • Membangun kebijakan menggunakanKebijakankelas

Dengan menggunakanPolicykelas, Anda tidak perlu khawatir tentang benar memformat string teks Anda. Untuk mendapatkan teks kebijakan JSON dariPolicykelas, menggunakan nyatoJsonmetode.

Impor

import com.amazonaws.auth.policy.Resource; import com.amazonaws.auth.policy.Statement; import com.amazonaws.auth.policy.actions.S3Actions; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder;

Kode

new Statement(Statement.Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(S3Actions.GetObject) .withResources(new Resource( "{region-arn}s3:::" + bucket_name + "/*"))); return bucket_policy.toJson();

ParameterPolicykelas juga menyediakanfromJsonmetode yang dapat mencoba untuk membangun kebijakan menggunakan passed-in JSON string. Metode memvalidasi untuk memastikan bahwa teks dapat diubah menjadi struktur kebijakan yang valid, dan akan gagal denganIllegalArgumentExceptionjika teks kebijakan tidak valid.

Policy bucket_policy = null; try { bucket_policy = Policy.fromJson(file_text.toString()); } catch (IllegalArgumentException e) { System.out.format("Invalid policy text in file: \"%s\"", policy_file); System.out.println(e.getMessage()); }

Anda dapat menggunakan teknik ini untuk memvalidasi kebijakan yang Anda baca dari file atau cara lain.

LihatLengkapi Contohdi GitHub.

Dapatkan Kebijakan ember

Untuk mengambil kebijakan untukAmazon S3ember, hubungi klien AmazonS3getBucketPolicymetode, lewat itu nama ember untuk mendapatkan kebijakan dari.

Impor

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

Kode

try { BucketPolicy bucket_policy = s3.getBucketPolicy(bucket_name); policy_text = bucket_policy.getPolicyText(); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Jika bucket bernama tidak ada, jika Anda tidak memiliki akses ke sana, atau jika tidak memiliki kebijakan bucket, sebuahAmazonServiceExceptiondilemparkan.

LihatLengkapi Contohdi GitHub.

Menghapus Kebijakan ember

Untuk menghapus kebijakan bucket, hubungi klien AmazonS3deleteBucketPolicy, menyediakannya dengan nama bucket.

Impor

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

Kode

try { s3.deleteBucketPolicy(bucket_name); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Metode ini berhasil bahkan jika bucket belum memiliki kebijakan. Jika Anda menentukan nama bucket yang tidak ada atau jika Anda tidak memiliki akses ke bucket, sebuahAmazonServiceExceptiondilemparkan.

LihatLengkapi Contohdi GitHub.

Info Selengkapnya