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 EMR klaster Amazon. Pekerjaan atau kueri yang Anda kirimkan ke EMR klaster 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 EMR klaster Amazon Amazon SageMaker dan saat Anda melampirkan Amazon EMR Studio Workspace ke klaster. EMR Untuk informasi selengkapnya, lihat Connect ke EMR klaster Amazon dari Studio danJalankan EMR Studio Workspace dengan peran runtime.
Sebelumnya, EMR klaster Amazon menjalankan EMR pekerjaan atau kueri Amazon dengan izin berdasarkan IAM kebijakan yang dilampirkan pada profil instance yang Anda gunakan untuk meluncurkan klaster. Ini berarti bahwa kebijakan harus berisi gabungan semua izin untuk semua pekerjaan dan kueri yang berjalan di klaster AmazonEMR. Dengan peran runtime, Anda sekarang dapat mengelola kontrol akses untuk setiap pekerjaan atau kueri satu per satu, alih-alih membagikan profil EMR instans Amazon pada klaster.
Di EMR klaster 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 EMR langkah Amazon, lowongan atau kueri yang Anda kirimkan hanya dapat mengakses AWS sumber daya yang diizinkan oleh kebijakan yang dilampirkan ke 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 EMR cluster Amazon dengan peran runtime
Topik
Langkah 1: Siapkan konfigurasi keamanan di Amazon EMR
Gunakan JSON struktur berikut untuk membuat konfigurasi keamanan pada AWS Command Line Interface (AWS CLI), dan atur EnableApplicationScopedIAMRole
ketrue
. Untuk informasi selengkapnya tentang konfigurasi keamanan, lihat Menggunakan konfigurasi keamanan untuk mengatur keamanan EMR klaster Amazon.
{ "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 EMR klaster Amazon dengan peran runtime dari SageMaker Runtime Studio atau Studio. EMR 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 EMR klaster Amazon
EMRCluster Amazon menggunakan peran profil EC2 instans Amazon untuk mengambil peran runtime. Untuk menggunakan peran runtime dengan EMR langkah-langkah Amazon, tambahkan kebijakan berikut ke IAM peran yang Anda rencanakan untuk digunakan sebagai peran profil instance. Untuk menambahkan kebijakan ke IAM peran atau mengedit kebijakan sebaris atau terkelola yang ada, lihat Menambahkan dan menghapus izin IAM identitas.
{ "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 IAM peran 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 suatu IAM peran, 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 EMR klaster Amazon dengan kontrol akses berbasis peran
Setelah mengatur konfigurasi, Anda dapat meluncurkan EMR klaster Amazon dengan konfigurasi keamanan dariLangkah 1: Siapkan konfigurasi keamanan di Amazon EMR. Untuk menggunakan peran runtime dengan EMR langkah-langkah Amazon, gunakan label rilis emr-6.7.0
atau yang lebih baru, dan pilih Hive, Spark, atau keduanya sebagai aplikasi cluster Anda. Untuk terhubung dari SageMaker 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 cluster Anda, lihatMenentukan konfigurasi keamanan untuk EMR klaster Amazon.
Kirim pekerjaan Spark menggunakan langkah-langkah Amazon EMR
Berikut ini adalah contoh bagaimana menjalankan HdfsTest contoh yang disertakan dengan Apache Spark. APIPanggilan ini hanya berhasil jika peran EMR runtime Amazon 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 SSH akses ke EMR cluster Amazon dan hanya mengizinkan Amazon EMR AddJobFlowSteps
API untuk mengakses ke cluster.
Kirim pekerjaan Hive menggunakan langkah-langkah Amazon EMR
Contoh berikut menggunakan Apache Hive dengan EMR langkah-langkah Amazon 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 EMR klaster Amazon dengan peran runtime dari notebook Studio SageMaker
Anda dapat menerapkan peran EMR runtime Amazon ke kueri yang dijalankan di EMR klaster Amazon dari Studio. SageMaker Untuk melakukannya, lanjutkan langkah-langkah berikut.
-
Ikuti petunjuk di Luncurkan Amazon SageMaker Studio untuk membuat SageMaker Studio.
-
Di UI SageMaker Studio, mulai buku catatan dengan kernel yang didukung. Misalnya, mulai SparkMagic gambar dengan PySpark kernel.
-
Pilih EMR klaster Amazon di SageMaker Studio, lalu pilih Connect.
-
Pilih peran runtime, lalu pilih Connect.
Ini akan membuat sel SageMaker notebook dengan perintah ajaib untuk terhubung ke EMR cluster Amazon Anda dengan peran EMR runtime Amazon 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 dari EMR Amazon Studio
Kontrol akses ke peran EMR runtime Amazon
Anda dapat mengontrol akses ke peran runtime dengan tombol elasticmapreduce:ExecutionRoleArn
kondisi. Kebijakan berikut memungkinkan IAM prinsipal untuk menggunakan IAM peran bernamaCaller
, atau IAM peran 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 Amazon EMR
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 diambil pengguna akhir dengan IAM peran, 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 EMR rilis Amazonemr-6.9.0
, Anda mungkin mengalami kegagalan intermiten saat tersambung ke EMR kluster Amazon dari Studio. SageMaker Untuk mengatasi masalah ini, Anda dapat menginstal tambalan dengan tindakan bootstrap saat meluncurkan cluster. Untuk detail tambalan, lihat Amazon EMR merilis 6.9.0 masalah yang diketahui.
Selain itu, pertimbangkan hal berikut saat Anda mengonfigurasi peran runtime untuk AmazonEMR.
-
Amazon EMR mendukung peran runtime di semua iklan Wilayah AWS.
-
EMRLangkah-langkah Amazon mendukung pekerjaan Apache Spark dan Apache Hive dengan peran runtime saat Anda menggunakan rilis atau yang lebih baru.
emr-6.7.0
-
SageMaker 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 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. Ini API tidak mendukung peran runtime. -
Amazon EMR tidak mendukung peran runtime pada cluster yang Anda konfigurasikan agar sangat tersedia.
-
Anda harus melarikan diri dari argumen perintah Bash Anda saat menjalankan perintah dengan
command-runner.jar
JAR file: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>
-
Peran runtime tidak menyediakan dukungan untuk mengontrol akses ke sumber daya di cluster, seperti HDFS dan. HMS