Peran runtime untuk langkah-langkah EMR Amazon - 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 EMR Amazon

Peran runtime adalah peran AWS Identity and Access Management (IAM) yang dapat Anda tentukan saat mengirimkan pekerjaan atau kueri ke klaster EMR Amazon. Pekerjaan atau kueri yang Anda kirimkan ke klaster EMR Amazon 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 tersambung ke kluster EMR Amazon Amazon SageMaker AI di dan saat Anda melampirkan Amazon EMR Studio Workspace ke kluster EMR. Untuk informasi selengkapnya, lihat Connect ke klaster EMR Amazon dari SageMaker AI Studio dan. Jalankan EMR Studio Workspace dengan peran runtime

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

Di klaster EMR Amazon 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 mengintegrasikan dengan AWS Lake Formation, lihatIntegrasikan Amazon EMR dengan AWS Lake Formation.

catatan

Bila Anda menentukan peran runtime untuk langkah EMR Amazon, lowongan atau kueri yang Anda kirimkan hanya dapat AWS mengakses sumber daya yang diizinkan oleh kebijakan yang dilampirkan pada peran runtime. Pekerjaan dan kueri ini tidak dapat mengakses Layanan Metadata Instance pada EC2 instance klaster atau menggunakan profil EC2 instance klaster untuk mengakses sumber daya apa pun. AWS

Prasyarat untuk meluncurkan cluster EMR Amazon 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 atur EnableApplicationScopedIAMRole ketrue. Untuk informasi selengkapnya tentang konfigurasi keamanan, lihat Gunakan konfigurasi keamanan untuk mengatur keamanan klaster Amazon EMR.

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

Kami menyarankan agar 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 kluster EMR Amazon dengan peran runtime dari SageMaker Runtime Studio atau EMR Studio. Untuk mengonfigurasi enkripsi data, lihat Mengkonfigurasi enkripsi data.

Atau, Anda dapat membuat konfigurasi keamanan dengan pengaturan khusus dengan AWS Management Console.

Langkah 2: Siapkan profil EC2 instans untuk klaster EMR Amazon

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

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowRuntimeRoleUsage", "Effect":"Allow", "Action":[ "sts:AssumeRole", "sts:TagSession" ], "Resource":[ <runtime-role-ARN> ] } ] }

Langkah 3: Siapkan 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 peran IAM, lihat Memodifikasi kebijakan kepercayaan peran.

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

Luncurkan kluster EMR Amazon dengan kontrol akses berbasis peran

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

Kirim pekerjaan Spark menggunakan langkah-langkah Amazon EMR

Berikut ini adalah contoh bagaimana menjalankan HdfsTest contoh yang disertakan dengan Apache Spark. 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","HadoopJarStep": { "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 kluster EMR Amazon dan hanya mengizinkan API AddJobFlowSteps EMR Amazon untuk mengakses ke cluster.

Kirim pekerjaan Hive menggunakan langkah-langkah EMR Amazon

Contoh berikut menggunakan Apache Hive dengan langkah-langkah Amazon EMR untuk mengirimkan pekerjaan untuk menjalankan file. QUERY_FILE.hql 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","HadoopJarStep": { "Jar": "command-runner.jar","Args" :["hive - f","s3://DOC_EXAMPLE_BUCKET/QUERY_FILE.hql"] } }]' \ --execution-role-arn $RUNTIME_ROLE_ARN \ --region $REGION

Connect ke klaster EMR Amazon dengan peran runtime dari notebook AI Studio SageMaker

Anda dapat menerapkan peran runtime Amazon EMR ke kueri yang dijalankan di klaster EMR Amazon dari AI Studio. SageMaker Untuk melakukannya, lanjutkan langkah-langkah berikut.

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

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

  3. Pilih klaster EMR Amazon di SageMaker AI Studio, lalu pilih Connect.

  4. Pilih peran runtime, lalu pilih Connect.

Ini akan membuat sel notebook SageMaker AI dengan perintah ajaib untuk terhubung ke cluster EMR Amazon 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 lebih detail, lihat Menerapkan kontrol akses data berbutir halus dengan dan AWS Lake Formation Amazon EMR dari Amazon AI Studio. SageMaker

Kontrol akses ke peran runtime Amazon EMR

Anda dapat mengontrol akses ke peran runtime dengan tombol elasticmapreduce:ExecutionRoleArn kondisi. Kebijakan berikut memungkinkan prinsipal IAM untuk 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 AddJobFlowSteps atau GetClusterSessionCredentials APIs, 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 klaster EMR Amazon

Amazon EMR menghasilkan pengenal 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 rangkaian 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 Memantau dan mengontrol tindakan yang diambil dengan peran yang diasumsikan.

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

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

Saat disetel PropagateSourceIdentity ketrue, Amazon EMR menerapkan identitas sumber dari kredensyal panggilan ke sesi pekerjaan atau kueri yang Anda buat dengan peran runtime. Jika tidak ada identitas sumber yang ada dalam kredensyal 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 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 kluster EMR Amazon dari AI Studio. SageMaker Untuk mengatasi masalah ini, Anda dapat menginstal tambalan dengan tindakan bootstrap saat meluncurkan cluster. Untuk detail tambalan, lihat Amazon EMR rilis 6.9.0 masalah yang diketahui.

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

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

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

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

  • Kernel notebook berikut dalam 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 (UIs), seperti berikut ini: Spark Live UI, Spark History Server, YARN, dan YARN. NodeManager ResourceManager Saat Anda menavigasi ke ini UIs, ada prompt nama pengguna dan kata sandi. Nama pengguna dan kata sandi dapat dihasilkan melalui penggunaan GetClusterSessionCredentials EMR API. Untuk informasi selengkapnya mengenai detail penggunaan untuk API, lihat GetClusterSessionCredentials.

    Contoh cara menggunakan EMR GetClusterSessionCredentials API 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 melarikan diri dari argumen perintah Bash Anda saat menjalankan perintah dengan runner skrip. Berikut ini adalah contoh yang menunjukkan pengaturan properti Spark, dengan karakter escape yang disertakan:

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