Mengotorisasi akses ke data EMRFS di Amazon S3 - Amazon EMR

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

Mengotorisasi akses ke data EMRFS di Amazon S3

Secara default, peran EMR dalam EC2 menentukan izin untuk mengakses data EMRFS di Amazon S3. Kebijakan IAM yang dilampirkan ke peran ini berlaku terlepas dari pengguna atau grup yang membuat permintaan melalui EMRFS. Default adalah EMR_EC2_DefaultRole. Untuk informasi selengkapnya, lihat Peran layanan untuk instans EC2 klaster (profil instans EC2).

Mulai dari rilis Amazon EMR versi 5.10.0, Anda dapat menggunakan konfigurasi keamanan untuk menentukan IAM role untuk EMRFS. Ini memungkinkan Anda dalam menyesuaikan izin permintaan EMRFS ke Amazon S3 untuk klaster yang memiliki banyak pengguna. Anda dapat menentukan IAM role yang berbeda untuk pengguna dan grup yang berbeda, dan untuk lokasi bucket Amazon S3 yang berbeda berdasarkan prefiks di Amazon S3. Saat EMRFS membuat permintaan ke Amazon S3 yang cocok dengan pengguna, grup, atau lokasi yang Anda tentukan, klaster akan menggunakan peran terkait yang Anda tentukan, bukan peran EMR untuk EC2. Untuk informasi selengkapnya, lihat Mengkonfigurasi peran IAM untuk permintaan EMRFS ke Amazon S3.

Atau, jika solusi Amazon EMR Anda memiliki tuntutan di luar apa yang disediakan oleh IAM role untuk EMRFS, Anda dapat menentukan kelas penyedia kredensial khusus, yang memungkinkan Anda untuk menyesuaikan akses terhadap data EMRFS di Amazon S3.

Membuat penyedia kredensial khusus untuk data EMRFS di Amazon S3

Untuk membuat penyedia kredensi kustom, Anda menerapkan AWSCredentialsProviderdan kelas Hadoop Configurable.

Untuk penjelasan terperinci tentang pendekatan ini, lihat Menganalisis data dengan aman dari akun AWS lain menggunakan EMRFS di blog AWS Big Data. Postingan blog mencakup tutorial yang memandu Anda melalui prosesend-to-end, mulai dari membuat IAM role hingga meluncurkan klaster. Hal ini juga menyediakan contoh kode Java yang mengimplementasikan kelas penyedia kredensial khusus.

Langkah-langkah dasarnya adalah sebagai berikut:

Untuk menentukan penyedia kredensial khusus
  1. Buat kelas penyedia kredensial khusus yang dikompilasi sebagai file JAR.

  2. Jalankan skrip sebagai tindakan bootstrap untuk menyalin file JAR penyedia kredensial khusus ke lokasi /usr/share/aws/emr/emrfs/auxlib di simpul utama klaster. Untuk informasi selengkapnya tentang tindakan bootstrap, lihat (Opsional) Membuat tindakan bootstrap untuk menginstal perangkat lunak tambahan.

  3. Sesuaikan klasifikasi emrfs-site untuk menentukan kelas yang Anda terapkan dalam file JAR. Untuk informasi selengkapnya tentang menentukan objek konfigurasi untuk menyesuaikan aplikasi, lihat Mengkonfigurasi aplikasi di Panduan Rilis Amazon EMR.

    Contoh berikut menunjukkan perintah create-cluster yang meluncurkan klaster Hive menggunakan parameter konfigurasi umum, dan juga mencakup:

    • Tindakan bootstrap yang menjalankan skrip, copy_jar_file.sh, yang mana disimpan ke mybucket dalam Amazon S3.

    • Klasifikasi emrfs-site yang menentukan penyedia kredensial khusus yang ditentukan dalam file JAR sebagai MyCustomCredentialsProvider

    catatan

    Karakter lanjutan baris Linux (\) disertakan agar mudah dibaca. Karakter ini bisa dihapus atau digunakan dalam perintah Linux. Untuk Windows, hapus atau ganti dengan tanda pangkat (^).

    aws emr create-cluster --applications Name=Hive \ --bootstrap-actions '[{"Path":"s3://mybucket/copy_jar_file.sh","Name":"Custom action"}]' \ --ec2-attributes '{"KeyName":"MyKeyPair","InstanceProfile":"EMR_EC2_DefaultRole",\ "SubnetId":"subnet-xxxxxxxx","EmrManagedSlaveSecurityGroup":"sg-xxxxxxxx",\ "EmrManagedMasterSecurityGroup":"sg-xxxxxxxx"}' \ --service-role EMR_DefaultRole --enable-debugging --release-label emr-5.36.0 \ --log-uri 's3n://my-emr-log-bucket/' --name 'test-awscredentialsprovider-emrfs' \ --instance-type=m5.xlarge --instance-count 3 \ --configurations '[{"Classification":"emrfs-site",\ "Properties":{"fs.s3.customAWSCredentialsProvider":"MyAWSCredentialsProviderWithUri"},\ "Configurations":[]}]'