

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

**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 Instans pada instans EC2 klaster atau menggunakan profil instans EC2 klaster untuk mengakses sumber daya apa pun. AWS 

## Prasyarat untuk meluncurkan cluster EMR Amazon 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 klaster EMR Amazon](#configure-ec2-profile)
+ [Langkah 3: Siapkan 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 atur `EnableApplicationScopedIAMRole` ke`true`. Untuk informasi selengkapnya tentang konfigurasi keamanan, lihat [Gunakan konfigurasi keamanan untuk mengatur keamanan klaster Amazon EMR](emr-security-configurations.md).

```
{
    "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](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 klaster EMR Amazon
<a name="configure-ec2-profile"></a>

Cluster EMR Amazon menggunakan peran profil instans Amazon EC2 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](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: Siapkan 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 peran IAM, lihat [Memodifikasi kebijakan kepercayaan peran](https://docs.aws.amazon.com//IAM/latest/UserGuide/roles-managingrole-editing-console.html).

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

## Luncurkan kluster EMR Amazon dengan kontrol akses berbasis peran
<a name="emr-steps-runtime-roles-launch"></a>

Setelah mengatur konfigurasi, Anda dapat meluncurkan klaster EMR Amazon dengan konfigurasi keamanan dari. [Langkah 1: Siapkan konfigurasi keamanan di Amazon EMR](#configure-security) Untuk menggunakan peran runtime dengan langkah-langkah EMR Amazon, gunakan `emr-6.7.0` label rilis atau yang 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, lihat[Menentukan konfigurasi keamanan untuk klaster EMR Amazon](emr-specify-security-configuration.md).

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

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

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

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.

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

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

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

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

Anda dapat mengontrol akses ke peran runtime dengan tombol `elasticmapreduce:ExecutionRoleArn` kondisi. Kebijakan berikut memungkinkan prinsipal IAM untuk 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 `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
<a name="external-id"></a>

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](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 [Memantau dan mengontrol tindakan yang diambil dengan peran yang diasumsikan](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_monitor).

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` ke`true`, 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
<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 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](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-690-release.html#emr-690-relnotes) 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](https://docs.aws.amazon.com/emr/latest/APIReference/API_GetClusterSessionCredentials.html).

  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\""
  ```
+ Peran runtime tidak menyediakan dukungan untuk mengontrol akses ke sumber daya on-cluster, seperti HDFS dan HMS.
+ Peran runtime tidak memberikan dukungan untuk docker/container.