View a markdown version of this page

Peran runtime untuk langkah-langkah Amazon EMR - Amazon EMR

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

Peran runtime untuk langkah-langkah Amazon EMR

Peran runtime adalah peran AWS Identity and Access Management (IAM) yang dapat Anda tentukan saat mengirimkan pekerjaan atau kueri ke cluster Amazon EMR. Pekerjaan atau kueri yang Anda kirimkan ke cluster Amazon EMR menggunakan peran runtime untuk mengakses AWS sumber daya, seperti objek di Amazon S3. Anda dapat menentukan peran runtime dengan Amazon EMR untuk pekerjaan Spark dan Hive.

Anda juga dapat menentukan peran runtime saat menyambung ke cluster Amazon EMR di Amazon SageMaker AI dan saat Anda melampirkan Amazon EMR Studio Workspace ke cluster EMR. Untuk informasi selengkapnya, lihat Menghubungkan ke cluster Amazon EMR dari SageMaker AI Studio danJalankan EMR Studio Workspace dengan peran runtime.

Sebelumnya, cluster Amazon EMR menjalankan tugas atau kueri Amazon EMR dengan izin berdasarkan kebijakan IAM yang dilampirkan pada profil instans yang Anda gunakan untuk meluncurkan cluster. Ini berarti bahwa kebijakan harus berisi penyatuan semua izin untuk semua pekerjaan dan kueri yang berjalan di cluster Amazon EMR. Dengan peran runtime, Anda sekarang dapat mengelola kontrol akses untuk setiap pekerjaan atau kueri secara individual, alih-alih berbagi profil instans Amazon EMR cluster.

Di cluster Amazon EMR dengan peran runtime, Anda juga dapat menerapkan kontrol akses AWS Lake Formation berbasis ke pekerjaan dan kueri Spark, Hive, dan Presto terhadap data lake Anda. Untuk mempelajari lebih lanjut tentang cara berintegrasi dengan AWS Lake Formation, lihatIntegrasikan Amazon EMR dengan AWS Lake Formation.

catatan

Saat Anda menentukan peran runtime untuk langkah Amazon EMR, pekerjaan atau kueri yang Anda kirimkan hanya dapat mengakses AWS sumber daya yang diizinkan oleh kebijakan yang dilampirkan pada peran runtime. Pekerjaan dan kueri ini tidak dapat mengakses Layanan Metadata Instans pada instans EC2 cluster atau menggunakan profil instans EC2 cluster untuk mengakses sumber daya apa pun AWS .

Prasyarat untuk meluncurkan cluster Amazon EMR dengan peran runtime

Langkah 1: Siapkan konfigurasi keamanan di Amazon EMR

Gunakan struktur JSON berikut untuk membuat konfigurasi keamanan pada AWS Command Line Interface (AWS CLI), dan setel EnableApplicationScopedIAMRole ketrue. Untuk informasi selengkapnya tentang konfigurasi keamanan, lihat Gunakan konfigurasi keamanan untuk mengatur keamanan cluster Amazon EMR.

{ "AuthorizationConfiguration":{ "IAMConfiguration":{ "EnableApplicationScopedIAMRole":true } } }

Kami menyarankan Anda selalu mengaktifkan opsi enkripsi dalam transit dalam konfigurasi keamanan, sehingga data yang ditransfer melalui internet dienkripsi, bukan dalam teks biasa. Anda dapat melewati opsi ini jika Anda tidak ingin terhubung ke cluster Amazon EMR dengan peran SageMaker runtime dari Runtime Studio atau EMR Studio. Untuk mengonfigurasi enkripsi data, lihat Meng onfigurasi enkripsi data.

Atau, Anda dapat membuat konfigurasi keamanan dengan pengaturan khusus dengan Konsol Manajemen AWS.

Langkah 2: Siapkan profil instans EC2 untuk cluster Amazon EMR

Cluster Amazon EMR menggunakan peran profil instans Amazon EC2 untuk mengambil peran runtime. Untuk menggunakan peran runtime dengan langkah-langkah Amazon EMR, tambahkan kebijakan berikut ke peran IAM yang Anda rencanakan untuk digunakan sebagai peran profil instans. Untuk menambahkan kebijakan ke peran IAM atau mengedit kebijakan sebaris atau terkelola yang ada, lihat Men ambahkan dan menghapus izin identitas IAM.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowRuntimeRoleUsage", "Effect": "Allow", "Action": [ "sts:AssumeRole", "sts:TagSession" ], "Resource": [ "arn:aws:iam::123456789012:role/EMRRuntimeRole" ] } ] }

Langkah 3: Menyiapkan kebijakan kepercayaan

Untuk setiap peran IAM yang Anda rencanakan untuk digunakan sebagai peran runtime, tetapkan kebijakan kepercayaan berikut, ganti EMR_EC2_DefaultRole dengan peran profil instans Anda. Untuk mengubah kebijakan kepercayaan dari peran IAM, lihat Memo difikasi kebijakan kepercayaan peran.

{ "Sid":"AllowAssumeRole", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::<AWS_ACCOUNT_ID>:role/EMR_EC2_DefaultRole" }, "Action":[ "sts:AssumeRole", "sts:TagSession" ] }

Luncurkan cluster Amazon EMR dengan kontrol akses berbasis peran

Setelah menyiapkan konfigurasi, Anda dapat meluncurkan cluster Amazon EMR dengan konfigurasi keamanan dariLangkah 1: Siapkan konfigurasi keamanan di Amazon EMR. Untuk menggunakan peran runtime dengan langkah-langkah Amazon EMR, gunakan label rilis emr-6.7.0 atau yang lebih baru, dan pilih Hive, Spark, atau keduanya sebagai aplikasi cluster Anda. CloudWatchAgent didukung pada Runtime Role Cluster untuk EMR 7.6 dan di atasnya. Untuk terhubung dari SageMaker AI Studio, gunakan release emr-6.9.0 atau yang lebih baru, dan pilih Livy, Spark, Hive, atau Presto sebagai aplikasi cluster Anda. Untuk petunjuk tentang cara meluncurkan cluster Anda, lihatMenentukan konfigurasi keamanan untuk cluster Amazon EMR.

Kirim pekerjaan Spark menggunakan langkah-langkah Amazon EMR

Berikut ini adalah contoh bagaimana menjalankan contoh yang disertakan dengan Apache Spark. HdfsTest Panggilan API ini hanya berhasil jika peran runtime Amazon EMR yang disediakan dapat mengakses. S3_LOCATION

RUNTIME_ROLE_ARN=<runtime-role-arn> S3_LOCATION=<s3-path> REGION=<aws-region> CLUSTER_ID=<cluster-id> aws emr add-steps --cluster-id $CLUSTER_ID \ --steps '[{ "Name": "Spark Example", "ActionOnFailure": "CONTINUE", "Jar":"command-runner.jar","Args" : ["spark-example","HdfsTest", "$S3_LOCATION"] }]' \ --execution-role-arn $RUNTIME_ROLE_ARN \ --region $REGION
catatan

Kami menyarankan Anda mematikan akses SSH ke cluster Amazon EMR dan hanya mengizinkan Amazon EMR AddJobFlowSteps API untuk mengakses cluster.

Kirim pekerjaan Hive menggunakan langkah-langkah Amazon EMR

Contoh berikut menggunakan Apache Hive dengan langkah-langkah Amazon EMR untuk mengirimkan pekerjaan untuk menjalankan QUERY_FILE.hql file. Kueri ini hanya berhasil jika peran runtime yang disediakan dapat mengakses jalur Amazon S3 dari file kueri.

RUNTIME_ROLE_ARN=<runtime-role-arn> REGION=<aws-region> CLUSTER_ID=<cluster-id> aws emr add-steps --cluster-id $CLUSTER_ID \ --steps '[{ "Name": "Run hive query using command-runner.jar - simple select","ActionOnFailure":"CONTINUE", "Jar": "command-runner.jar","Args" :["hive - f","s3://DOC_EXAMPLE_BUCKET/QUERY_FILE.hql"] }]' \ --execution-role-arn $RUNTIME_ROLE_ARN \ --region $REGION

Sambungkan ke cluster Amazon EMR dengan peran runtime dari notebook SageMaker AI Studio

Anda dapat menerapkan peran runtime Amazon EMR ke kueri yang Anda jalankan di cluster Amazon EMR dari SageMaker AI Studio. Untuk melakukannya, ikuti langkah-langkah berikut.

  1. Ikuti petunjuk di Luncurkan Amazon SageMaker AI Studio untuk membuat SageMaker AI Studio.

  2. Di UI SageMaker AI Studio, mulai notebook dengan kernel yang didukung. Misalnya, mulai SparkMagic gambar dengan PySpark kernel.

  3. Pilih cluster Amazon EMR di SageMaker AI Studio, lalu pilih Hubun gkan.

  4. Pilih peran runtime, lalu pilih Connect.

Ini akan membuat sel notebook SageMaker AI dengan perintah ajaib untuk terhubung ke cluster Amazon EMR Anda dengan peran runtime Amazon EMR yang dipilih. Di sel notebook, Anda dapat memasukkan dan menjalankan kueri dengan peran runtime dan kontrol akses berbasis Lake Formation. Untuk contoh yang lebih rinci, lihat Mener apkan kontrol akses data berbutir halus dengan AWS Lake Formation dan Amazon EMR dari Amazon SageMaker AI Studio.

Kontrol akses ke peran runtime Amazon EMR

Anda dapat mengontrol akses ke peran runtime dengan kunci kondisielasticmapreduce:ExecutionRoleArn. Kebijakan berikut memungkinkan prinsipal IAM menggunakan peran IAM bernamaCaller, atau peran IAM apa pun yang dimulai dengan stringCallerTeamRole, sebagai peran runtime.

penting

Anda harus membuat kondisi berdasarkan kunci elasticmapreduce:ExecutionRoleArn konteks saat Anda memberikan akses pemanggil untuk memanggil GetClusterSessionCredentials API AddJobFlowSteps or, seperti yang ditunjukkan contoh berikut.

{ "Sid":"AddStepsWithSpecificExecRoleArn", "Effect":"Allow", "Action":[ "elasticmapreduce:AddJobFlowSteps" ], "Resource":"*", "Condition":{ "StringEquals":{ "elasticmapreduce:ExecutionRoleArn":[ "arn:aws:iam::<AWS_ACCOUNT_ID>:role/Caller" ] }, "StringLike":{ "elasticmapreduce:ExecutionRoleArn":[ "arn:aws:iam::<AWS_ACCOUNT_ID>:role/CallerTeamRole*" ] } } }

Membangun kepercayaan antara peran runtime dan cluster Amazon EMR

Amazon EMR menghasilkan pengidentifikasi unik ExternalId untuk setiap konfigurasi keamanan dengan otorisasi peran runtime yang diaktifkan. Otorisasi ini memungkinkan setiap pengguna untuk memiliki satu set peran runtime untuk digunakan pada cluster milik mereka. Misalnya, di perusahaan, setiap departemen dapat menggunakan ID eksternal mereka untuk memperbarui kebijakan kepercayaan pada kumpulan peran runtime mereka sendiri.

Anda dapat menemukan ID eksternal dengan Amazon EMR DescribeSecurityConfiguration API, seperti yang ditunjukkan pada contoh berikut.

aws emr describe-security-configuration --name 'iamconfig-with-lf'{"Name": "iamconfig-with-lf", "SecurityConfiguration": "{\"AuthorizationConfiguration\":{\"IAMConfiguration\":{\"EnableApplicationScopedIAMRole\ ":true,\"ApplicationScopedIAMRoleConfiguration\":{\"PropagateSourceIdentity\":true,\"Exter nalId\":\"FXH5TSACFDWUCDSR3YQE2O7ETPUSM4OBCGLYWODSCUZDNZ4Y\"}},\"Lake FormationConfiguration\":{\"AuthorizedSessionTagValue\":\"Amazon EMR\"}}}", "CreationDateTime": "2022-06-03T12:52:35.308000-07:00" }

Untuk informasi tentang cara menggunakan ID eksternal, lihat Cara menggunakan ID eksternal saat memberikan akses ke AWS sumber daya Anda kepada pihak ketiga.

Audit

Untuk memantau dan mengontrol tindakan yang dilakukan pengguna akhir dengan peran IAM, Anda dapat mengaktifkan fitur identitas sumber. Untuk mempelajari lebih lanjut tentang identitas sumber, lihat Meman tau dan mengontrol tindakan yang dilakukan dengan peran yang diasumsikan.

Untuk melacak identitas sumber, set ApplicationScopedIAMRoleConfiguration/PropagateSourceIdentity el ke true dalam konfigurasi keamanan Anda, sebagai berikut.

{ "AuthorizationConfiguration":{ "IAMConfiguration":{ "EnableApplicationScopedIAMRole":true, "ApplicationScopedIAMRoleConfiguration":{ "PropagateSourceIdentity":true } } } }

Saat Anda meny PropagateSourceIdentity et true el ke, Amazon EMR menerapkan identitas sumber dari kredentif panggilan ke sesi pekerjaan atau kueri yang Anda buat dengan peran runtime. Jika tidak ada identitas sumber dalam kredensional panggilan, Amazon EMR tidak menyetel identitas sumber.

Untuk menggunakan properti ini, berikan sts:SetSourceIdentity izin ke profil instans Anda, sebagai berikut.

{ // PropagateSourceIdentity statement "Sid":"PropagateSourceIdentity", "Effect":"Allow", "Action":"sts:SetSourceIdentity", "Resource":[ <runtime-role-ARN> ], "Condition":{ "StringEquals":{ "sts:SourceIdentity":<source-identity> } } }

Anda juga harus menambahkan AllowSetSourceIdentity pernyataan ke kebijakan kepercayaan dari peran runtime Anda.

{ // AllowSetSourceIdentity statement "Sid":"AllowSetSourceIdentity", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::<AWS_ACCOUNT_ID>:role/EMR_EC2_DefaultRole" }, "Action":[ "sts:SetSourceIdentity", "sts:AssumeRole" ], "Condition":{ "StringEquals":{ "sts:SourceIdentity":<source-identity> } } }

Pertimbangan tambahan

catatan

Dengan rilis Amazon EMRemr-6.9.0, Anda mungkin mengalami kegagalan intermiten saat terhubung ke cluster Amazon EMR dari SageMaker AI Studio. Untuk mengatasi masalah ini, Anda dapat menginstal patch dengan tindakan bootstrap saat Anda meluncurkan cluster. Untuk detail patch, lihat masalah yang diketahui rilis Amazon EMR 6.9.0.

Selain itu, pertimbangkan hal berikut saat Anda mengonfigurasi peran runtime untuk Amazon EMR.

  • Amazon EMR mendukung peran runtime di semua komersial Wilayah AWS.

  • Langkah Amazon EMR mendukung pekerjaan Apache Spark dan Apache Hive dengan peran runtime saat Anda menggunakan rilis emr-6.7.0 atau yang lebih baru.

  • SageMaker AI Studio mendukung kueri Spark, Hive, dan Presto dengan peran runtime saat Anda menggunakan rilis emr-6.9.0 atau yang lebih baru.

  • Kernel notebook berikut di SageMaker AI mendukung peran runtime:

    • DataScience — Kernel Python 3

    • DataScience 2.0 - Kernel Python 3

    • DataScience 3.0 - Kernel Python 3

    • SparkAnalytics 1.0 — SparkMagic dan PySpark kernel

    • SparkAnalytics 2.0 — SparkMagic dan PySpark kernel

    • SparkMagic — PySpark kernel

  • Amazon EMR mendukung langkah-langkah yang RunJobFlow hanya digunakan pada saat pembuatan cluster. API ini tidak mendukung peran runtime.

  • Amazon EMR tidak mendukung peran runtime pada cluster yang Anda konfigurasikan agar sangat tersedia.

  • Dimulai dengan Amazon EMR rilis 7.5.0 dan yang lebih tinggi, peran runtime mendukung tampilan Spark dan YARN User Interfaces (UI), seperti berikut ini: Spark Live UI, Spark History Server, YARN NodeManager, dan YARN. ResourceManager Saat Anda menavigasi ke UI ini, ada prompt nama pengguna dan kata sandi. Nama pengguna dan kata sandi dapat dihasilkan melalui penggunaan API EMR GetClusterSessionCredentials . Untuk informasi selengkapnya mengenai detail penggunaan untuk API, lihat GetClusterSessionCredentials.

    Contoh cara menggunakan GetClusterSessionCredentials API EMR adalah sebagai berikut:

    aws emr get-cluster-session-credentials --cluster-id <cluster_ID> --execution-role-arn <IAM_role_arn>
  • Anda harus melarikan diri dari argumen perintah Bash Anda saat menjalankan perintah dengan file command-runner.jar JAR:

    aws emr add-steps --cluster-id <cluster-id> --steps '[{"Name":"sample-step","ActionOnFailure":"CONTINUE","Jar":"command-runner.jar","Properties":"","Args":["bash","-c","\"aws s3 ls\""],"Type":"CUSTOM_JAR"}]' --execution-role-arn <IAM_ROLE_ARN>

    Selain itu, Anda harus menghindari argumen perintah Bash Anda saat menjalankan perintah dengan script runner. Berikut ini adalah contoh yang menunjukkan pengaturan properti Spark, dengan karakter escape yang disertakan:

    "\"--conf spark.sql.autoBroadcastJoinThreshold=-1\""
  • Peran runtime tidak menyediakan dukungan untuk mengontrol akses ke sumber daya on-cluster, seperti HDFS dan HMS.

  • Peran runtime tidak memberikan dukungan untuk docker/containers.