

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
<a name="emr-steps-runtime-roles"></a>

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 ](https://docs.aws.amazon.com/sagemaker/latest/dg/connect-emr-clusters.html) dan[Jalankan EMR Studio Workspace dengan peran runtime](emr-studio-runtime.md).

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, lihat[Integrasikan Amazon EMR dengan AWS Lake Formation](emr-lake-formation.md).

**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
<a name="emr-steps-runtime-roles-configure"></a>

**Topics**
+ [Langkah 1: Siapkan konfigurasi keamanan di Amazon EMR](#configure-security)
+ [Langkah 2: Siapkan profil instans EC2 untuk cluster Amazon EMR](#configure-ec2-profile)
+ [Langkah 3: Menyiapkan kebijakan kepercayaan](#configure-trust-policy)

### Langkah 1: Siapkan konfigurasi keamanan di Amazon EMR
<a name="configure-security"></a>

Gunakan struktur JSON berikut untuk membuat konfigurasi keamanan pada AWS Command Line Interface (AWS CLI), dan setel `EnableApplicationScopedIAMRole` ke`true`. Untuk informasi selengkapnya tentang konfigurasi keamanan, lihat [Gunakan konfigurasi keamanan untuk mengatur keamanan cluster Amazon EMR](emr-security-configurations.md).

```
{
    "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](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-create-security-configuration.html#emr-security-configuration-encryption).

Atau, Anda dapat membuat konfigurasi keamanan dengan pengaturan khusus dengan [Konsol Manajemen AWS](https://console.aws.amazon.com/emr/home#/securityConfigs).

### Langkah 2: Siapkan profil instans EC2 untuk cluster Amazon EMR
<a name="configure-ec2-profile"></a>

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. ](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)

------
#### [ 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
<a name="configure-trust-policy"></a>

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 ](https://docs.aws.amazon.com//IAM/latest/UserGuide/roles-managingrole-editing-console.html) 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
<a name="emr-steps-runtime-roles-launch"></a>

Setelah menyiapkan konfigurasi, Anda dapat meluncurkan cluster Amazon EMR dengan konfigurasi keamanan dari[Langkah 1: Siapkan konfigurasi keamanan di Amazon EMR](#configure-security). 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, lihat[Menentukan konfigurasi keamanan untuk cluster Amazon EMR](emr-specify-security-configuration.md).

### Kirim pekerjaan Spark menggunakan langkah-langkah Amazon EMR
<a name="launch-spark"></a>

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
<a name="launch-hive"></a>

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
<a name="sagemaker"></a>

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.

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

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

1. 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. ](https://aws.amazon.com/blogs/machine-learning/apply-fine-grained-data-access-controls-with-aws-lake-formation-and-amazon-emr-from-amazon-sagemaker-studio)

### Kontrol akses ke peran runtime Amazon EMR
<a name="role-access"></a>

Anda dapat mengontrol akses ke peran runtime dengan kunci kondisi`elasticmapreduce:ExecutionRoleArn`. Kebijakan berikut memungkinkan prinsipal IAM menggunakan peran IAM bernama`Caller`, atau peran IAM apa pun yang dimulai dengan string`CallerTeamRole`, 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
<a name="external-id"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html). 

### Audit
<a name="audit-source-identity"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor).

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
<a name="emr-steps-runtime-roles-considerations"></a>

**catatan**  
Dengan rilis Amazon EMR`emr-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. ](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-690-release.html#emr-690-relnotes)

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](https://docs.aws.amazon.com/emr/latest/APIReference/API_GetClusterSessionCredentials.html).

  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.