

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

# Menjalankan pekerjaan Spark dengan `StartJobRun`
<a name="job-runs"></a>

Bagian ini mencakup langkah-langkah penyiapan terperinci untuk menyiapkan lingkungan Anda untuk menjalankan pekerjaan Spark dan kemudian memberikan step-by-step instruksi untuk mengirimkan pekerjaan yang dijalankan dengan parameter tertentu.

**Topics**
+ [Menyiapkan Amazon EMR di EKS](setting-up.md)
+ [Kirim pekerjaan yang dijalankan dengan `StartJobRun`](emr-eks-jobs-submit.md)
+ [Menggunakan klasifikasi pengirim pekerjaan](emr-eks-job-submitter.md)
+ [Menggunakan klasifikasi default penampung EMR Amazon](emr-eks-job-submitter-container-defaults.md)

# Menyiapkan Amazon EMR di EKS
<a name="setting-up"></a>

Selesaikan tugas-tugas berikut untuk menyiapkan Amazon EMR di EKS. Jika Anda telah mendaftar untuk Amazon Web Services (AWS) dan telah menggunakan Amazon EKS, Anda hampir siap untuk menggunakan Amazon EMR di EKS. Lewati salah satu tugas yang telah Anda selesaikan.

**catatan**  
Anda juga dapat mengikuti [Amazon EMR di EKS Workshop](https://emr-on-eks.workshop.aws/amazon-emr-eks-workshop.html) untuk menyiapkan semua sumber daya yang diperlukan untuk menjalankan pekerjaan Spark di Amazon EMR di EKS. Lokakarya ini juga menyediakan otomatisasi dengan menggunakan CloudFormation templat untuk membuat sumber daya yang diperlukan bagi Anda untuk memulai. Untuk templat dan praktik terbaik lainnya, lihat [Panduan Praktik Terbaik Kontainer EMR](https://aws.github.io/aws-emr-containers-best-practices/) kami di. GitHub

1. [Instal atau perbarui ke versi terbaru AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)

1. [Siapkan kubectl dan eksctl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)

1. [Memulai dengan Amazon EKS — eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html)

1. [Aktifkan akses cluster untuk Amazon EMR di EKS](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/setting-up-cluster-access.html)

1. [Aktifkan Peran IAM untuk kluster EKS](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/setting-up-enable-IAM-roles.html)

1. [Memberikan pengguna akses ke Amazon EMR di EKS](setting-up-iam.md)

1. [Daftarkan klaster Amazon EKS dengan Amazon EMR](setting-up-registration.md)

# Aktifkan akses klaster untuk Amazon EMR di EKS
<a name="setting-up-cluster-access"></a>

Bagian berikut menunjukkan beberapa cara untuk mengaktifkan akses cluster. Yang pertama adalah dengan menggunakan Amazon EKS cluster access management (CAM) dan yang terakhir menunjukkan cara mengambil langkah-langkah manual untuk mengaktifkan akses cluster.

## Aktifkan akses cluster menggunakan EKS Access Entry (disarankan)
<a name="setting-up-cluster-access-cam-integration"></a>

**catatan**  
`aws-auth` ConfigMap Itu sudah usang. [Metode yang disarankan untuk mengelola akses ke Kubernetes APIs adalah Access Entries.](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html)

Amazon EMR terintegrasi dengan [Amazon EKS cluster access management (CAM)](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html), sehingga Anda dapat mengotomatiskan konfigurasi kebijakan AuthN dan AuthZ yang diperlukan untuk menjalankan pekerjaan Amazon EMR Spark di ruang nama cluster Amazon EKS. Saat Anda membuat klaster virtual dari namespace klaster Amazon EKS, Amazon EMR secara otomatis mengonfigurasi semua izin yang diperlukan, sehingga Anda tidak perlu menambahkan langkah tambahan apa pun ke alur kerja Anda saat ini.

**catatan**  
Integrasi Amazon EMR dengan Amazon EKS CAM hanya didukung untuk EMR Amazon baru di kluster virtual EKS. Anda tidak dapat memigrasi klaster virtual yang ada untuk menggunakan integrasi ini.

### Prasyarat
<a name="setting-up-cluster-access-cam-integration-prereqs"></a>
+ Pastikan Anda menjalankan versi 2.15.3 atau lebih tinggi AWS CLI
+ Cluster Amazon EKS Anda harus menggunakan versi 1.23 atau lebih tinggi.

### Pengaturan
<a name="setting-up-cluster-access-cam-integration-setup"></a>

Untuk mengatur integrasi antara Amazon EMR dan operasi AccessEntry API dari Amazon EKS, pastikan Anda telah menyelesaikan item berikut:
+ Pastikan `authenticationMode` klaster Amazon EKS Anda disetel ke`API_AND_CONFIG_MAP`.

  ```
  aws eks describe-cluster --name <eks-cluster-name>
  ```

  Jika belum, atur `authenticationMode` ke`API_AND_CONFIG_MAP`.

  ```
  aws eks update-cluster-config 
      --name <eks-cluster-name> 
      --access-config authenticationMode=API_AND_CONFIG_MAP
  ```

  Untuk informasi selengkapnya tentang mode autentikasi, lihat Mode [otentikasi klaster](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html#authentication-modes).
+ Pastikan bahwa [peran IAM](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/setting-up-iam.html) yang Anda gunakan untuk menjalankan operasi `CreateVirtualCluster` dan `DeleteVirtualCluster` API juga memiliki izin berikut:

  ```
  {
    "Effect": "Allow",
    "Action": [
      "eks:CreateAccessEntry"
    ],
    "Resource": "arn:<AWS_PARTITION>:eks:<AWS_REGION>:<AWS_ACCOUNT_ID>:cluster/<EKS_CLUSTER_NAME>"
  }, 
  {
    "Effect": "Allow",
    "Action": [
      "eks:DescribeAccessEntry",
      "eks:DeleteAccessEntry",
      "eks:ListAssociatedAccessPolicies",
      "eks:AssociateAccessPolicy",
      "eks:DisassociateAccessPolicy"
    ],
    "Resource": "arn:<AWS_PARTITION>:eks:<AWS_REGION>:<AWS_ACCOUNT_ID>:access-entry/<EKS_CLUSTER_NAME>/role/<AWS_ACCOUNT_ID>/AWSServiceRoleForAmazonEMRContainers/*"
  }
  ```

### Konsep dan terminologi
<a name="setting-up-cluster-access-cam-integration-concepts"></a>

Berikut ini adalah daftar terminologi dan konsep yang terkait dengan Amazon EKS CAM.
+ Virtual cluster (VC) — representasi logis dari namespace yang dibuat di Amazon EKS. Ini adalah tautan 1:1 ke namespace cluster Amazon EKS. Anda dapat menggunakannya untuk menjalankan beban kerja Amazon EMR di klaster Amazon EKS dalam namespace yang ditentukan.
+ Namespace — mekanisme untuk mengisolasi kelompok sumber daya dalam satu kluster EKS.
+ Kebijakan akses — izin yang memberikan akses dan tindakan ke peran IAM dalam klaster EKS.
+ Akses entri — entri yang dibuat dengan peran arn. Anda dapat menautkan entri akses ke kebijakan akses untuk menetapkan izin tertentu di klaster Amazon EKS.
+ Kluster virtual terintegrasi entri akses EKS — cluster virtual yang dibuat menggunakan [operasi API entri akses](https://docs.aws.amazon.com/eks/latest/APIReference/API_Operations_Amazon_Elastic_Kubernetes_Service.html) dari Amazon EKS.

## Aktifkan akses cluster menggunakan `aws-auth`
<a name="setting-up-cluster-access-aws-auth"></a>

Anda harus mengizinkan akses Amazon EMR di EKS ke namespace tertentu di klaster Anda dengan mengambil tindakan berikut: membuat peran Kubernetes, mengikat peran ke pengguna Kubernetes, dan memetakan pengguna Kubernetes dengan peran terkait layanan [https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/using-service-linked-roles.html](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/using-service-linked-roles.html). Tindakan ini diotomatiskan di `eksctl` ketika perintah pemetaan identitas IAM digunakan dengan `emr-containers` sebagai nama layanan. Anda dapat melakukan operasi ini dengan mudah menggunakan perintah berikut.

```
eksctl create iamidentitymapping \
    --cluster my_eks_cluster \
    --namespace kubernetes_namespace \
    --service-name "emr-containers"
```

Ganti *my\$1eks\$1cluster* dengan nama cluster Amazon EKS Anda dan ganti *kubernetes\$1namespace* dengan namespace Kubernetes yang dibuat untuk menjalankan beban kerja Amazon EMR. 

**penting**  
Anda harus mengunduh eksctl terbaru menggunakan langkah sebelumnya [Mengatur kubectl dan eksctl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) untuk menggunakan fungsi ini. 

### Langkah manual untuk mengaktifkan akses klaster untuk Amazon EMR di EKS
<a name="setting-up-cluster-access-manual"></a>

Anda juga dapat menggunakan langkah manual berikut untuk mengaktifkan akses klaster untuk Amazon EMR di EKS.

1. **Buat peran Kubernetes di namespace tertentu**

------
#### [ Amazon EKS 1.22 - 1.29 ]

   Dengan Amazon EKS 1.22 - 1.29, jalankan perintah berikut untuk membuat peran Kubernetes dalam namespace tertentu. Peran ini memberikan izin RBAC yang diperlukan untuk Amazon EMR di EKS.

   ```
   namespace=my-namespace
   cat - >>EOF | kubectl apply -f - >>namespace "${namespace}"
   apiVersion: rbac.authorization.k8s.io/v1
   kind: Role
   metadata:
     name: emr-containers
     namespace: ${namespace}
   rules:
     - apiGroups: [""]
       resources: ["namespaces"]
       verbs: ["get"]
     - apiGroups: [""]
       resources: ["serviceaccounts", "services", "configmaps", "events", "pods", "pods/log"]
       verbs: ["get", "list", "watch", "describe", "create", "edit", "delete", "deletecollection", "annotate", "patch", "label"]
     - apiGroups: [""]
       resources: ["secrets"]
       verbs: ["create", "patch", "delete", "watch"]
     - apiGroups: ["apps"]
       resources: ["statefulsets", "deployments"]
       verbs: ["get", "list", "watch", "describe", "create", "edit", "delete", "annotate", "patch", "label"]
     - apiGroups: ["batch"]
       resources: ["jobs"]
       verbs: ["get", "list", "watch", "describe", "create", "edit", "delete", "annotate", "patch", "label"]
     - apiGroups: ["extensions", "networking.k8s.io"]
       resources: ["ingresses"]
       verbs: ["get", "list", "watch", "describe", "create", "edit", "delete", "annotate", "patch", "label"]
     - apiGroups: ["rbac.authorization.k8s.io"]
       resources: ["roles", "rolebindings"]
       verbs: ["get", "list", "watch", "describe", "create", "edit", "delete", "deletecollection", "annotate", "patch", "label"]
     - apiGroups: [""]
       resources: ["persistentvolumeclaims"]
       verbs: ["get", "list", "watch", "describe", "create", "edit", "delete",  "deletecollection", "annotate", "patch", "label"]
   EOF
   ```

------
#### [ Amazon EKS 1.21 and below ]

   Dengan Amazon EKS 1.21 dan di bawahnya, jalankan perintah berikut untuk membuat peran Kubernetes di namespace tertentu. Peran ini memberikan izin RBAC yang diperlukan untuk Amazon EMR di EKS.

   ```
   namespace=my-namespace
   cat - >>EOF | kubectl apply -f - >>namespace "${namespace}"
   apiVersion: rbac.authorization.k8s.io/v1
   kind: Role
   metadata:
     name: emr-containers
     namespace: ${namespace}
   rules:
     - apiGroups: [""]
       resources: ["namespaces"]
       verbs: ["get"]
     - apiGroups: [""]
       resources: ["serviceaccounts", "services", "configmaps", "events", "pods", "pods/log"]
       verbs: ["get", "list", "watch", "describe", "create", "edit", "delete", "deletecollection", "annotate", "patch", "label"]
     - apiGroups: [""]
       resources: ["secrets"]
       verbs: ["create", "patch", "delete", "watch"]
     - apiGroups: ["apps"]
       resources: ["statefulsets", "deployments"]
       verbs: ["get", "list", "watch", "describe", "create", "edit", "delete", "annotate", "patch", "label"]
     - apiGroups: ["batch"]
       resources: ["jobs"]
       verbs: ["get", "list", "watch", "describe", "create", "edit", "delete", "annotate", "patch", "label"]
     - apiGroups: ["extensions"]
       resources: ["ingresses"]
       verbs: ["get", "list", "watch", "describe", "create", "edit", "delete", "annotate", "patch", "label"]
     - apiGroups: ["rbac.authorization.k8s.io"]
       resources: ["roles", "rolebindings"]
       verbs: ["get", "list", "watch", "describe", "create", "edit", "delete", "deletecollection", "annotate", "patch", "label"]
     - apiGroups: [""]
       resources: ["persistentvolumeclaims"]
       verbs: ["get", "list", "watch", "describe", "create", "edit", "delete", "deletecollection", "annotate", "patch", "label"]
   EOF
   ```

------

1. **Buat ikatan peran Kubernetes yang dicakup ke namespace**

   Jalankan perintah berikut untuk membuat peran mengikat Kubernetes mengikat di namespace yang diberikan. Pengikatan peran ini memberikan izin yang ditetapkan dalam peran yang dibuat di langkah sebelumnya ke pengguna bernama `emr-containers`. Pengguna ini mengidentifikasi [peran terkait layanan untuk Amazon EMR di EKS](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/using-service-linked-roles.html) dan dengan demikian memungkinkan Amazon EMR di EKS untuk melakukan tindakan seperti yang didefinisikan oleh peran yang Anda buat.

   ```
   namespace=my-namespace
   
   cat - <<EOF | kubectl apply -f - --namespace "${namespace}"
   apiVersion: rbac.authorization.k8s.io/v1
   kind: RoleBinding
   metadata:
     name: emr-containers
     namespace: ${namespace}
   subjects:
   - kind: User
     name: emr-containers
     apiGroup: rbac.authorization.k8s.io
   roleRef:
     kind: Role
     name: emr-containers
     apiGroup: rbac.authorization.k8s.io
   EOF
   ```

1. **Perbarui peta konfigurasi Kubernetes `aws-auth`**

   Anda dapat menggunakan salah satu opsi berikut untuk memetakan Amazon EMR di EKS peran terkait layanan dengan pengguna `emr-containers` yang terikat dengan peran Kubernetes pada langkah sebelumnya.

   **Opsi 1: Menggunakan `eksctl`**

   Jalankan perintah `eksctl` berikut untuk memetakan peran terkait layanan EMR Amazon di EKS dengan pengguna `emr-containers`.

   ```
   eksctl create iamidentitymapping \
       --cluster my-cluster-name \
       --arn "arn:aws:iam::my-account-id:role/AWSServiceRoleForAmazonEMRContainers" \
       --username emr-containers
   ```

   **Opsi 2: Tanpa menggunakan eksctl**

   1. Jalankan perintah berikut untuk membuka peta konfigurasi `aws-auth` dalam editor teks. 

      ```
      kubectl edit -n kube-system configmap/aws-auth
      ```
**catatan**  
Jika Anda menerima kesalahan yang menyatakan`Error from server (NotFound): configmaps "aws-auth" not found`, lihat langkah-langkah dalam [Menambahkan peran pengguna](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) di Panduan Pengguna Amazon EKS untuk menerapkan stok ConfigMap. 

   1. Tambahkan detail peran terkait Amazon EMR di EKS ke bagian `mapRoles` dari `ConfigMap`, di bawah `data`. Tambahkan bagian ini jika belum ada dalam file. Bagian `mapRoles` yang diperbarui di bawah data terlihat seperti contoh berikut.

      ```
      apiVersion: v1
      data:
        mapRoles: |
          - rolearn: arn:aws:iam::<your-account-id>:role/AWSServiceRoleForAmazonEMRContainers
            username: emr-containers
          - ... <other previously existing role entries, if there's any>.
      ```

   1. Simpan file , dan tutup editor teks Anda.

# Aktifkan Peran IAM untuk kluster EKS
<a name="setting-up-enable-IAM-roles"></a>

Topik berikut merinci opsi untuk mengaktifkan peran IAM.

**Topics**
+ [Opsi 1: Aktifkan Identitas Pod EKS pada Kluster EKS](setting-up-enable-IAM.md)
+ [Opsi 2: Aktifkan Peran IAM untuk Akun Layanan (IRSA) di kluster EKS](setting-up-enable-IAM-service-accounts.md)

# Opsi 1: Aktifkan Identitas Pod EKS pada Kluster EKS
<a name="setting-up-enable-IAM"></a>

Pengaitan Identitas Pod Amazon EKS menyediakan kemampuan untuk mengelola kredensial untuk aplikasi Anda, mirip dengan cara profil instans Amazon EC2 memberikan kredensial ke instans Amazon EC2. Amazon EKS Pod Identity memberikan kredensi ke beban kerja Anda dengan API Auth EKS tambahan dan pod agen yang berjalan di setiap node.

Amazon EMR di EKS mulai mendukung identitas pod EKS sejak rilis emr-7.3.0 untuk model pengiriman. StartJobRun 

Untuk informasi lebih lanjut tentang identitas pod EKS, lihat [Memahami cara kerja EKS Pod Identity](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-how-it-works.html).

## Mengapa Identitas EKS Pod?
<a name="setting-up-enable-IAM-pod-identity-why"></a>

Sebagai bagian dari pengaturan EMR, Job Execution Role perlu menetapkan batas kepercayaan antara peran IAM dan akun layanan di namespace tertentu (dari cluster virtual EMR). Dengan IRSA, ini dicapai dengan memperbarui kebijakan kepercayaan Peran Pelaksanaan Job EMR. Namun, karena batas keras 4096 karakter pada panjang kebijakan kepercayaan IAM, ada kendala untuk berbagi Peran IAM Eksekusi Job tunggal di maksimum dua belas (12) kluster EKS.

Dengan dukungan EMR untuk Pod Identities, batas kepercayaan antara peran IAM dan akun layanan sekarang dikelola oleh tim EKS melalui asosiasi identitas pod EKS. APIs

**catatan**  
Batas keamanan untuk identitas pod EKS masih pada level akun layanan, bukan pada level pod.

## Pertimbangan Identitas Pod
<a name="setting-up-enable-IAM-pod-identity-consider"></a>

Untuk informasi tentang Batasan Identitas Pod, lihat [pertimbangan Identitas Pod EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html#pod-id-considerations).

## Siapkan Identitas Pod EKS di EKS Cluster
<a name="setting-up-enable-IAM-pod-eks-cluster"></a>

### Periksa apakah izin yang diperlukan ada di NodeInstanceRole
<a name="setting-up-enable-IAM-pod-eks-cluster-permission"></a>

Peran node `NodeInstanceRole` memerlukan izin bagi agen untuk melakukan `AssumeRoleForPodIdentity` tindakan di EKS Auth API. Anda dapat menambahkan yang berikut ini ke [Amazon EKSWorker NodePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/security-iam-awsmanpol.html#security-iam-awsmanpol-amazoneksworkernodepolicy), yang ditentukan dalam Panduan Pengguna Amazon EKS, atau menggunakan kebijakan khusus.

Jika kluster EKS Anda dibuat dengan versi eksctl lebih tinggi dari **0.181.0**, EKSWorker NodePolicy Amazon, termasuk izin yang `AssumeRoleForPodIdentity` diperlukan, akan dilampirkan ke peran node secara otomatis. Jika izin tidak ada, tambahkan izin berikut secara manual ke Amazon EKSWorker NodePolicy yang memungkinkan asumsi peran untuk identitas pod. Izin ini diperlukan oleh agen identitas pod EKS untuk mengambil kredensil untuk pod.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "eks-auth:AssumeRoleForPodIdentity"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowEKSAUTHAssumeroleforpodidentity"
    }
  ]
}
```

------

### Buat add-on agen identitas pod EKS
<a name="setting-up-enable-IAM-pod-eks-cluster-agent"></a>

Gunakan perintah berikut untuk membuat add-on EKS Pod Identity Agent dengan versi terbaru:

```
aws eks create-addon --cluster-name cluster-name --addon-name eks-pod-identity-agent

kubectl get pods -n kube-system | grep 'eks-pod-identity-agent'
```

Gunakan langkah-langkah berikut untuk membuat add-on EKS Pod Identity Agent dari konsol Amazon EKS:

1. Buka konsol Amazon EKS: konsol [Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Di panel navigasi sebelah kiri, pilih **Clusters**, lalu pilih nama cluster yang ingin Anda konfigurasikan untuk add-on EKS Pod Identity Agent.

1. Pilih tab **Add-ons**.

1. Pilih **Get more add-ons**

1. Pilih kotak di kanan atas kotak add-on untuk EKS Pod Identity Agent dan kemudian pilih **Berikutnya**.

1. Pada halaman **Konfigurasi pengaturan add-on yang dipilih**, pilih versi apa pun di daftar drop-down **Versi**.

1. (Opsional) Perluas **pengaturan konfigurasi opsional** untuk memasukkan konfigurasi tambahan. Misalnya, Anda dapat memberikan lokasi gambar kontainer alternatif dan`ImagePullSecrets`. Skema JSON dengan kunci yang diterima ditampilkan dalam skema konfigurasi **Add-on**.

   Masukkan tombol konfigurasi dan nilai dalam **nilai Konfigurasi**.

1. Pilih **Berikutnya**.

1. Konfirmasikan bahwa pod agen berjalan di klaster Anda melalui CLI.

   `kubectl get pods -n kube-system | grep 'eks-pod-identity-agent'`

Contoh output adalah sebagai berikut:

```
NAME                              READY   STATUS    RESTARTS      AGE
eks-pod-identity-agent-gmqp7      1/1     Running   1 (24h ago)   24h
eks-pod-identity-agent-prnsh      1/1     Running   1 (24h ago)   24h
```

Ini mengatur yang baru DaemonSet di `kube-system` namespace. Amazon EKS Pod Identity Agent, yang berjalan di setiap node EKS, menggunakan [AssumeRoleForPodIdentity](https://docs.aws.amazon.com/eks/latest/APIReference/API_auth_AssumeRoleForPodIdentity.html)action tersebut untuk mengambil kredensi sementara dari EKS Auth API. Kredensi ini kemudian tersedia untuk AWS SDKs yang Anda jalankan di dalam wadah Anda.

Untuk informasi selengkapnya, periksa prasyarat di dokumen publik: [Siapkan Agen Identitas Pod Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-agent-setup.html).

## Membuat Peran Eksekusi Job
<a name="setting-up-enable-IAM-pod-create-job-role"></a>

### Membuat atau memperbarui peran eksekusi pekerjaan yang memungkinkan EKS Pod Identity
<a name="setting-up-enable-IAM-pod-create-job-role-update"></a>

Untuk menjalankan beban kerja dengan Amazon EMR di EKS, Anda perlu membuat peran IAM. Kami menyebut peran ini sebagai peran eksekusi tugas dalam dokumentasi ini. Untuk informasi selengkapnya tentang cara membuat peran IAM, lihat [Membuat peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html) di Panduan pengguna.

Selain itu, Anda harus membuat kebijakan IAM yang menentukan izin yang diperlukan untuk peran eksekusi pekerjaan dan kemudian melampirkan kebijakan ini ke peran untuk mengaktifkan EKS Pod Identity.

Misalnya, Anda memiliki peran eksekusi pekerjaan berikut. Untuk informasi selengkapnya, lihat [Membuat peran eksekusi pekerjaan](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/creating-job-execution-role.html).

```
arn:aws:iam::111122223333:role/PodIdentityJobExecutionRole
```

**penting**  
Amazon EMR di EKS secara otomatis membuat Akun Layanan Kubernetes, berdasarkan nama peran eksekusi pekerjaan Anda. Pastikan nama peran tidak terlalu panjang, karena pekerjaan Anda mungkin gagal jika kombinasi`cluster_name`,`pod_name`, dan `service_account_name` melebihi batas panjang.

**Job Execution Role Configuration** - Pastikan peran eksekusi pekerjaan dibuat dengan izin kepercayaan di bawah ini untuk EKS Pod Identity. Untuk memperbarui peran eksekusi pekerjaan yang ada, konfigurasikan untuk mempercayai prinsip layanan EKS berikut sebagai izin tambahan dalam kebijakan kepercayaan. Izin kepercayaan ini dapat hidup berdampingan dengan kebijakan kepercayaan IRSA yang ada.

```
cat >trust-relationship.json <<EOF
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
            "Effect": "Allow",
            "Principal": {
                "Service": "pods.eks.amazonaws.com"
            },
            "Action": [
                "sts:AssumeRole",
                "sts:TagSession"
            ]
        }
    ]
}
EOF
```

**Izin** Pengguna: Pengguna memerlukan `iam:PassRole` izin untuk menjalankan panggilan `StartJobRun` API atau mengirimkan pekerjaan. Izin ini memungkinkan pengguna untuk meneruskan peran eksekusi pekerjaan ke EMR di EKS. Administrator Job harus memiliki izin secara default.

Di bawah ini adalah izin yang diperlukan untuk pengguna:

```
{
    "Effect": "Allow",
    "Action": "iam:PassRole",
    "Resource": "arn:aws:iam::111122223333:role/PodIdentityJobExecutionRole",
    "Condition": {
        "StringEquals": {
            "iam:PassedToService": "pods.eks.amazonaws.com"
        }
    }
}
```

Untuk lebih membatasi akses pengguna ke kluster EKS tertentu, tambahkan filter AssociatedResourceArn atribut ke kebijakan IAM. Ini membatasi asumsi peran untuk klaster EKS resmi, memperkuat kontrol keamanan tingkat sumber daya Anda.

```
"Condition": {
        "ArnLike": {
            "iam:AssociatedResourceARN": [
                "arn:aws:eks:us-west-2:111122223333:cluster/*"
            ]
        }
```

## Siapkan asosiasi identitas pod EKS
<a name="setting-up-enable-IAM-pod-identity-asociations"></a>

### Prasyarat
<a name="setting-up-enable-IAM-pod-identity-asociations-prereq"></a>

Pastikan IAM Identity yang membuat asosiasi identitas pod, seperti pengguna admin EKS, memiliki izin `eks:CreatePodIdentityAssociation` dan`iam:PassRole`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "eks:CreatePodIdentityAssociation"
      ],
      "Resource": [
        "arn:aws:eks:*:*:cluster/*"
      ],
      "Sid": "AllowEKSCreatepodidentityassociation"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::*:role/*"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "pods.eks.amazonaws.com"
        }
      },
      "Sid": "AllowIAMPassrole"
    }
  ]
}
```

------

### Buat Asosiasi untuk peran dan akun layanan EMR
<a name="setting-up-enable-IAM-pod-identity-asociations-emr-service"></a>

------
#### [ Create EMR role associations through the AWS CLI ]

Ketika Anda mengirimkan pekerjaan ke namespace Kubernetes, administrator harus membuat asosiasi antara peran eksekusi pekerjaan dan identitas akun layanan terkelola EMR. Perhatikan bahwa akun layanan terkelola EMR secara otomatis dibuat pada pengiriman tugas, dicakup ke namespace di mana tugas dikirimkan.

Dengan AWS CLI (versi di atas 2.24.0), jalankan perintah berikut untuk membuat asosiasi peran dengan identitas pod.

Jalankan perintah berikut untuk membuat asosiasi peran dengan identitas pod:

```
aws emr-containers create-role-associations \
        --cluster-name mycluster \
        --namespace mynamespace \
        --role-name JobExecutionRoleIRSAv2
```

Catatan:
+ Setiap cluster dapat memiliki batas 1.000 asosiasi. Setiap peran eksekusi pekerjaan - pemetaan namespace akan membutuhkan 3 asosiasi untuk pod pengirim pekerjaan, driver, dan pelaksana.
+ Anda hanya dapat mengaitkan peran yang berada di AWS akun yang sama dengan cluster. Anda dapat mendelegasikan akses dari akun lain ke peran di akun ini yang Anda konfigurasikan untuk Identitas Pod EKS untuk digunakan. Untuk tutorial tentang mendelegasikan akses dan`AssumeRole`, lihat [tutorial IAM: Mendelegasikan akses di seluruh AWS akun menggunakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) peran IAM.

------
#### [ Create EMR role associations through Amazon EKS ]

EMR membuat akun layanan dengan pola penamaan tertentu saat pekerjaan dikirimkan. Untuk membuat asosiasi manual atau mengintegrasikan alur kerja ini dengan AWS SDK, ikuti langkah-langkah berikut:

Buat Nama Akun Layanan:

```
emr-containers-sa-spark-%(SPARK_ROLE)s-%(AWS_ACCOUNT_ID)s-%(BASE36_ENCODED_ROLE_NAME)s
```

Contoh di bawah ini membuat asosiasi peran untuk contoh peran eksekusi Job JobExecutionRoleIRSAv2.

**Contoh Asosiasi Peran:**

```
RoleName: JobExecutionRoleIRSAv2
Base36EncodingOfRoleName: 2eum5fah1jc1kwyjc19ikdhdkdegh1n26vbe
```

**Contoh perintah CLI:**

```
# setup for the client service account (used by job runner pod)
# emr-containers-sa-spark-client-111122223333-2eum5fah1jc1kwyjc19ikdhdkdegh1n26vbe
aws eks create-pod-identity-association --cluster-name mycluster --role-arn arn:aws:iam::111122223333:role/JobExecutionRoleIRSAv2 --namespace mynamespace --service-account emr-containers-sa-spark-client-111122223333-2eum5fah1jc1kwyjc19ikdhdkdegh1n26vbe

# driver service account
# emr-containers-sa-spark-driver-111122223333-2eum5fah1jc1kwyjc19ikdhdkdegh1n26vbe        
aws eks create-pod-identity-association --cluster-name mycluster --role-arn arn:aws:iam::111122223333:role/JobExecutionRoleIRSAv2 --namespace mynamespace --service-account emr-containers-sa-spark-driver-111122223333-2eum5fah1jc1kwyjc19ikdhdkdegh1n26vbe

# executor service account
# emr-containers-sa-spark-executor-111122223333-2eum5fah1jc1kwyjc19ikdhdkdegh1n26vbe
aws eks create-pod-identity-association --cluster-name mycluster --role-arn arn:aws:iam::111122223333:role/JobExecutionRoleIRSAv2 --namespace mynamespace --service-account emr-containers-sa-spark-executor-111122223333-2eum5fah1jc1kwyjc19ikdhdkdegh1n26vbe
```

------

Setelah Anda menyelesaikan semua langkah yang diperlukan untuk identitas pod EKS, Anda dapat melewati langkah-langkah berikut untuk pengaturan IRSA:
+ [Aktifkan Peran IAM untuk Akun Layanan (IRSA) di kluster EKS](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/setting-up-enable-IAM.html)
+ [Buat peran eksekusi pekerjaan](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/creating-job-execution-role.html)
+ [Perbarui kebijakan kepercayaan dari peran pelaksanaan pekerjaan](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/setting-up-trust-policy.html)

Anda dapat langsung melewati langkah berikut: [Berikan pengguna akses ke Amazon EMR](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/setting-up-iam.html) di EKS

## Hapus Asosiasi Peran
<a name="setting-up-enable-IAM-pod-identity-asociations-delete-associations"></a>

Setiap kali Anda menghapus klaster virtual atau peran eksekusi pekerjaan dan Anda tidak lagi ingin memberikan akses ke EMR ke akun layanannya, Anda harus menghapus asosiasi untuk peran tersebut. Ini karena EKS memungkinkan asosiasi dengan sumber daya yang tidak ada (namespace dan akun layanan). Amazon EMR di EKS merekomendasikan untuk menghapus asosiasi jika namespace dihapus atau peran tidak lagi digunakan, untuk mengosongkan ruang bagi asosiasi lain.

**catatan**  
Asosiasi yang tersisa berpotensi memengaruhi kemampuan Anda untuk menskalakan jika Anda tidak menghapusnya, karena EKS memiliki batasan pada jumlah asosiasi yang dapat Anda buat (batas lunak: 1000 asosiasi per cluster). Anda dapat mencantumkan asosiasi identitas pod di namespace tertentu untuk memeriksa apakah Anda memiliki asosiasi yang masih ada yang perlu dibersihkan:

```
aws eks list-pod-identity-associations --cluster-name mycluster --namespace mynamespace
```

Dengan AWS CLI (versi 2.24.0 atau lebih tinggi), jalankan perintah emr-container berikut untuk menghapus asosiasi peran EMR:

```
aws emr-containers delete-role-associations \
        --cluster-name mycluster \
        --namespace mynamespace \
        --role-name JobExecutionRoleIRSAv2
```

## Secara Otomatis Migrasi IRSA yang Ada ke Identitas Pod
<a name="setting-up-enable-IAM-pod-identity-auto-migrate"></a>

Anda dapat menggunakan alat eksctl untuk memigrasikan Peran IAM yang ada untuk Akun Layanan (IRSA) ke asosiasi identitas pod:

```
eksctl utils migrate-to-pod-identity \
    --cluster mycluster \
    --remove-oidc-provider-trust-relationship \
    --approve
```

Menjalankan perintah tanpa `--approve` bendera hanya akan menampilkan rencana yang mencerminkan langkah migrasi, dan tidak ada migrasi aktual yang akan terjadi.

## Pemecahan masalah
<a name="setting-up-enable-IAM-pod-identity-troubleshooting"></a>

### Pekerjaan saya gagal dengan NoClassDefinitionFound atau ClassNotFound Pengecualian untuk Penyedia Kredensial, atau gagal mendapatkan penyedia kredensil.
<a name="setting-up-enable-IAM-pod-identity-troubleshooting-no-class"></a>

EKS Pod Identity menggunakan Container Credentials Provider untuk mengambil kredensi yang diperlukan. Jika Anda telah menentukan penyedia kredensi khusus, pastikan itu berfungsi dengan benar. Atau, pastikan Anda menggunakan versi AWS SDK yang benar yang mendukung EKS Pod Identity. Untuk informasi selengkapnya, lihat [Memulai Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html).

### Job gagal dengan kesalahan “Failed to Retrieve Credentials Due to [x] Size Limit” yang ditampilkan di log. eks-pod-identity-agent
<a name="setting-up-enable-IAM-pod-identity-troubleshooting-creds"></a>

EMR di EKS membuat Akun Layanan Kubernetes berdasarkan nama peran eksekusi pekerjaan. Jika nama peran terlalu panjang, EKS Auth akan gagal mengambil kredensil karena kombinasi`cluster_name`,`pod_name`, dan `service_account_name` melebihi batas panjang. Identifikasi komponen mana yang paling banyak mengambil ruang dan sesuaikan ukurannya.

### Job gagal dengan kesalahan “Failed to Retrieve Credentials xxx” yang ditampilkan di log. eks-pod-identity
<a name="setting-up-enable-IAM-pod-identity-troubleshooting-creds-error"></a>

Salah satu kemungkinan penyebab masalah ini adalah kluster EKS dikonfigurasi di bawah subnet pribadi tanpa mengonfigurasi PrivateLink cluster dengan benar. Periksa apakah cluster Anda berada di jaringan pribadi dan konfigurasikan AWS PrivateLink untuk mengatasi masalah tersebut. Untuk petunjuk terperinci, lihat [Memulai Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html)..

# Opsi 2: Aktifkan Peran IAM untuk Akun Layanan (IRSA) di kluster EKS
<a name="setting-up-enable-IAM-service-accounts"></a>

IAM role untuk fitur akun layanan tersedia di Amazon EKS versi 1.14 dan yang lebih baru dan untuk klaster EKS yang diperbarui ke versi 1.13 atau yang lebih baru pada atau setelah 3 September 2019. Untuk menggunakan fitur ini, Anda dapat memperbarui klaster EKS yang ada ke versi 1.14 atau yang lebih baru. Untuk informasi lebih lanjut, lihat [Memperbarui versi Kubernetes klaster Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/update-cluster.html).

Jika klaster Anda mendukung IAM role untuk akun layanan, klaster Anda memiliki URL penerbit [Connect OpenID](https://openid.net/connect/) yang terkait dengannya. Anda dapat melihat URL ini di konsol Amazon EKS, atau Anda dapat menggunakan AWS CLI perintah berikut untuk mengambilnya.

**penting**  
Anda harus menggunakan versi terbaru dari AWS CLI untuk menerima output yang tepat dari perintah ini.

```
aws eks describe-cluster --name cluster_name --query "cluster.identity.oidc.issuer" --output text
```

Output yang diharapkan adalah sebagai berikut.

```
https://oidc.eks.<region-code>.amazonaws.com/id/EXAMPLED539D4633E53DE1B716D3041E
```

Untuk menggunakan IAM role untuk akun layanan di klaster Anda, Anda harus membuat penyedia identitas OIDC menggunakan baik [eksctl](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html#create-oidc-eksctl) atau [Konsol Manajemen AWS](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html#create-oidc-console).

## Untuk membuat penyedia identitas IAM OIDC untuk klaster Anda dengan `eksctl`
<a name="setting-up-OIDC-eksctl"></a>

Periksa versi `eksctl` Anda dengan perintah berikut. Prosedur ini mengasumsikan bahwa Anda telah menginstal `eksctl` dan bahwa `eksctl` versi 0.32.0 atau yang lebih baru.

```
eksctl version
```

Untuk informasi selengkapnya tentang menginstal atau meningkatkan eksctl, lihat [Menginstal atau meningkatkan eksctl](https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html#installing-eksctl).

Buat penyedia identitas OIDC Anda untuk klaster Anda dengan perintah berikut. Ganti *cluster\$1name* dengan nilai milik Anda sendiri.

```
eksctl utils associate-iam-oidc-provider --cluster cluster_name --approve
```

## Untuk membuat penyedia identitas IAM OIDC untuk cluster Anda dengan Konsol Manajemen AWS
<a name="setting-up-OIDC-console"></a>

Ambil URL penerbit OIDC dari deskripsi konsol Amazon EKS klaster Anda, atau gunakan perintah berikut. AWS CLI 

Gunakan perintah berikut untuk mengambil URL penerbit OIDC dari AWS CLI.

```
aws eks describe-cluster --name <cluster_name> --query "cluster.identity.oidc.issuer" --output text
```

Gunakan langkah-langkah berikut untuk mengambil URL penerbit OIDC dari konsol Amazon EKS. 

1. Buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi, pilih **Penyedia Identitas**, lalu pilih **Buat Penyedia**.

   1. Untuk **Jenis Penyedia**, pilih **Pilih jenis penyedia**, lalu pilih **OpenID Connect**.

   1. Untuk **Penyedia URL**, tempelkan URL penerbit OIDC untuk klaster Anda.

   1. Untuk Audiens, ketik sts.amazonaws.com dan pilih **Langkah Selanjutnya**.

1. Verifikasi bahwa informasi penyedia sudah benar, kemudian pilih **Buat** untuk membuat penyedia identitas Anda.

# Untuk membuat peran eksekusi tugas
<a name="creating-job-execution-role"></a>

Untuk menjalankan beban kerja di Amazon EMR di EKS, Anda perlu membuat peran IAM. Kami menyebut peran ini sebagai *peran eksekusi tugas* dalam dokumentasi ini. Untuk informasi selengkapnya tentang cara membuat peran IAM, lihat [Membuat peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html) di Panduan pengguna IAM. 

Anda juga harus membuat kebijakan IAM yang menentukan izin untuk peran eksekusi pekerjaan dan kemudian melampirkan kebijakan IAM ke peran eksekusi pekerjaan. 

Kebijakan berikut untuk peran eksekusi pekerjaan memungkinkan akses ke target sumber daya, Amazon S3, dan. CloudWatch Izin ini diperlukan untuk memantau tugas dan log akses. Untuk mengikuti proses yang sama menggunakan AWS CLI: 

Buat Peran IAM untuk eksekusi pekerjaan: Mari kita buat peran yang akan digunakan EMR untuk eksekusi pekerjaan. Ini adalah peran, pekerjaan EMR akan diasumsikan ketika mereka berjalan di EKS.

```
cat <<EoF > ~/environment/emr-trust-policy.json
 {
   "Version": "2012-10-17",		 	 	 
   "Statement": [
     {
       "Effect": "Allow",
       "Principal": {
         "Service": "elasticmapreduce.amazonaws.com"
       },
       "Action": "sts:AssumeRole"
     }
   ]
 }
 EoF
  
 aws iam create-role --role-name EMRContainers-JobExecutionRole --assume-role-policy-document file://~/environment/emr-trust-policy.json
```

Selanjutnya, kita perlu melampirkan kebijakan IAM yang diperlukan ke peran sehingga dapat menulis log ke s3 dan cloudwatch.

```
cat <<EoF > ~/environment/EMRContainers-JobExecutionRole.json
 {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
         {
             "Effect": "Allow",
             "Action": [
                 "s3:PutObject",
                 "s3:GetObject",
                 "s3:ListBucket"
             ],
             "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
         },
         {
             "Effect": "Allow",
             "Action": [
                 "logs:PutLogEvents",
                 "logs:CreateLogStream",
               "logs:DescribeLogGroups",
                 "logs:DescribeLogStreams"
             ],
             "Resource": [
                 "arn:aws:logs:*:*:*"
             ]
         }
     ]
 } 
 EoF
 aws iam put-role-policy --role-name EMRContainers-JobExecutionRole --policy-name EMR-Containers-Job-Execution --policy-document file://~/environment/EMRContainers-JobExecutionRole.json
```

**catatan**  
Akses harus dicakup dengan tepat, tidak diberikan ke semua objek S3 dalam peran eksekusi pekerjaan.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket"
      ],
      "Sid": "AllowS3Putobject"
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:PutLogEvents",
        "logs:CreateLogStream",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams"
      ],
      "Resource": [
        "arn:aws:logs:*:*:*"
      ],
      "Sid": "AllowLOGSPutlogevents"
    }
  ]
}
```

------

Untuk informasi selengkapnya, lihat [Menggunakan peran eksekusi pekerjaan](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/iam-execution-role.html), [Mengonfigurasi proses pekerjaan untuk menggunakan log S3](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/emr-eks-jobs-CLI.html#emr-eks-jobs-s3), dan [Mengonfigurasi proses pekerjaan untuk menggunakan CloudWatch Log](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/emr-eks-jobs-CLI.html#emr-eks-jobs-cloudwatch).

# Perbarui kebijakan kepercayaan dari peran eksekusi tugas
<a name="setting-up-trust-policy"></a>

Ketika Anda menggunakan IAM Role untuk Akun Layanan (IRSA) untuk menjalankan tugas di namespace Kubernetes, administrator harus membuat hubungan kepercayaan antara peran eksekusi tugas dan identitas akun layanan terkelola EMR. Hubungan kepercayaan dapat dibuat dengan memperbarui kebijakan kepercayaan dari peran pelaksanaan tugas. Perhatikan bahwa akun layanan terkelola EMR secara otomatis dibuat pada pengiriman tugas, dicakup ke namespace di mana tugas dikirimkan.

Jalankan perintah berikut untuk memperbarui kebijakan kepercayaan.

```
 aws emr-containers update-role-trust-policy \
       --cluster-name cluster \
       --namespace namespace \
       --role-name iam_role_name_for_job_execution
```

Untuk informasi selengkapnya, lihat [Menggunakan peran eksekusi tugas dengan Amazon EMR di EKS](iam-execution-role.md).

**penting**  
Operator yang menjalankan perintah di atas harus memiliki izin berikut: `eks:DescribeCluster`, `iam:GetRole`, `iam:UpdateAssumeRolePolicy`.

# Memberikan pengguna akses ke Amazon EMR di EKS
<a name="setting-up-iam"></a>

Untuk setiap tindakan yang Anda lakukan di Amazon EMR di EKS, Anda memerlukan izin IAM yang sesuai untuk tindakan itu. Anda harus membuat kebijakan IAM yang memungkinkan Anda untuk melakukan tindakan Amazon EMR di EKS dan melampirkan kebijakan pada pengguna atau peran IAM yang Anda gunakan. 

Topik ini menyediakan langkah-langkah untuk membuat kebijakan baru dan melampirkannya ke pengguna. Hal ini juga mencakup izin dasar yang Anda butuhkan untuk mengatur lingkungan Amazon EMR di EKS Anda. Sebaiknya Anda menyempurnakan izin ke sumber daya tertentu bila memungkinkan berdasarkan kebutuhan bisnis Anda.

## Membuat kebijakan IAM baru dan melampirkannya ke pengguna di konsol IAM
<a name="setting-up-iam-console"></a>

**Buat kebijakan IAM baru**

1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi kiri konsol IAM, pilih **Kebijakan**.

1. Pada halaman **Kebijakan**, pilih **Buat Kebijakan**.

1. Di jendela **Buat Kebijakan**, navigasikan ke tab **Edit JSON**. Buat dokumen kebijakan dengan satu atau lebih pernyataan JSON seperti yang ditunjukkan dalam contoh prosedur berikut ini. Selanjutnya, pilih **Tinjau kebijakan**.

1. Pada layar **Tinjau Kebijakan**, masukkan **Nama kebijakan**Anda, misalnya `AmazonEMROnEKSPolicy`. Masukkan deskripsi opsional, lalu pilih **Buat kebijakan**. 

**Lampirkan kebijakan ke pengguna atau peran**

1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 

1. Di panel navigasi, pilih **Kebijakan**.

1. Dalam daftar kebijakan, pilih kotak centang di samping kebijakan yang dibuat dalam bagian sebelumnya. Anda bisa memakai menu **Filter** dan kotak pencarian untuk memfilter daftar kebijakan. 

1. Pilih **Tindakan kebijakan**, lalu pilih **Lampirkan**.

1. Pilih pengguna atau peran untuk melampirkan kebijakan. Anda bisa memakai menu **Filter** dan kotak pencarian untuk memfilter daftar entitas prinsipiel. Setelah memilih pengguna atau peran untuk melampirkan kebijakan, pilih **Lampirkan kebijakan**.

## Izin untuk mengelolaklaster virtual
<a name="permissions-virtual-cluster"></a>

Untuk mengelola klaster virtual di AWS akun Anda, buat kebijakan IAM dengan izin berikut. Izin ini memungkinkan Anda membuat, membuat daftar, mendeskripsikan, dan menghapus klaster virtual di akun Anda AWS .

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:CreateServiceLinkedRole"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringLike": {
          "iam:AWSServiceName": "emr-containers.amazonaws.com"
        }
      },
      "Sid": "AllowIAMCreateservicelinkedrole"
    },
    {
      "Effect": "Allow",
      "Action": [
        "emr-containers:CreateVirtualCluster",
        "emr-containers:ListVirtualClusters",
        "emr-containers:DescribeVirtualCluster",
        "emr-containers:DeleteVirtualCluster"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowEMRCONTAINERSCreatevirtualcluster"
    }
  ]
}
```

------

Amazon EMR terintegrasi dengan Amazon EKS cluster access management (CAM), sehingga Anda dapat mengotomatiskan konfigurasi kebijakan AuthN dan AuthZ yang diperlukan untuk menjalankan pekerjaan Amazon EMR Spark di ruang nama cluster Amazon EKS. Untuk melakukannya, Anda harus memiliki izin berikut:

```
{
  "Effect": "Allow",
  "Action": [
    "eks:CreateAccessEntry"
  ],
  "Resource": "arn:<AWS_PARTITION>:eks:<AWS_REGION>:<AWS_ACCOUNT_ID>:cluster/<EKS_CLUSTER_NAME>"
}, 
{
  "Effect": "Allow",
  "Action": [
    "eks:DescribeAccessEntry",
    "eks:DeleteAccessEntry",
    "eks:ListAssociatedAccessPolicies",
    "eks:AssociateAccessPolicy",
    "eks:DisassociateAccessPolicy"
  ],
  "Resource": "arn:<AWS_PARTITION>:eks:<AWS_REGION>:<AWS_ACCOUNT_ID>:access-entry/<EKS_CLUSTER_NAME>/role/<AWS_ACCOUNT_ID>/AWSServiceRoleForAmazonEMRContainers/*"
}
```

Untuk informasi selengkapnya, lihat [Mengotomatiskan mengaktifkan akses klaster untuk Amazon EMR](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/setting-up-cluster-access.html#setting-up-cluster-access-cam-integration) di EKS.

Saat `CreateVirtualCluster` operasi dipanggil untuk pertama kalinya dari AWS akun, Anda juga memerlukan `CreateServiceLinkedRole` izin untuk membuat peran terkait layanan untuk Amazon EMR di EKS. Untuk informasi selengkapnya, lihat [Menggunakan peran terkait layanan untuk Amazon EMR di EKS](using-service-linked-roles.md). 

## Izin untuk mengirimkan tugas
<a name="permissions-submitting-jobs"></a>

Untuk mengirimkan pekerjaan di klaster virtual di AWS akun Anda, buat kebijakan IAM dengan izin berikut. Izin ini memungkinkan Anda untuk memulai, mendaftar, menjelaskan, dan membatalkan klaster virtual di akun Anda. Anda harus mempertimbangkan menambahkan izin untuk membuat daftar atau menjelaskan klaster virtual, yang memungkinkan Anda untuk memeriksa keadaan klaster virtual sebelum mengirimkan tugas.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "emr-containers:StartJobRun",
        "emr-containers:ListJobRuns",
        "emr-containers:DescribeJobRun",
        "emr-containers:CancelJobRun"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowEMRCONTAINERSStartjobrun"
    }
  ]
}
```

------

## Izin untuk melakukan debug dan pemantauan
<a name="permissions-debugging-monitoring"></a>

Untuk mendapatkan akses ke log yang didorong ke Amazon S3 dan CloudWatch, atau untuk melihat log peristiwa aplikasi di konsol EMR Amazon, buat kebijakan IAM dengan izin berikut. Sebaiknya Anda menyempurnakan izin ke sumber daya tertentu bila memungkinkan berdasarkan kebutuhan bisnis Anda.

**penting**  
Jika Anda belum membuat bucket Amazon S3, Anda perlu menambahkan izin `s3:CreateBucket` pada pernyataan kebijakan. Jika Anda belum membuat grup log, Anda perlu menambahkan `logs:CreateLogGroup` pada pernyataan kebijakan.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "emr-containers:DescribeJobRun",
        "elasticmapreduce:CreatePersistentAppUI",
        "elasticmapreduce:DescribePersistentAppUI",
        "elasticmapreduce:GetPersistentAppUIPresignedURL"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowEMRCONTAINERSDescribejobrun"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowS3Getobject"
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:Get*",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowLOGSGet"
    }
  ]
}
```

------

Untuk informasi selengkapnya tentang cara mengonfigurasi proses pekerjaan untuk mendorong log ke Amazon S3 dan CloudWatch, lihat [Mengonfigurasi proses pekerjaan untuk menggunakan log S3](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/emr-eks-jobs-CLI.html#emr-eks-jobs-s3) dan [Mengonfigurasi proses pekerjaan untuk menggunakan Log](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/emr-eks-jobs-CLI.html#emr-eks-jobs-cloudwatch). CloudWatch 

# Daftarkan klaster Amazon EKS dengan Amazon EMR
<a name="setting-up-registration"></a>

Mendaftarkan klaster Anda adalah langkah terakhir yang diperlukan untuk mengatur Amazon EMR di EKS untuk menjalankan beban kerja.

Gunakan perintah berikut untuk membuat klaster virtual dengan nama pilihan Anda untuk klaster Amazon EKS dan namespace yang Anda atur dalam langkah-langkah sebelumnya.

**catatan**  
Setiap cluster virtual harus memiliki nama unik di semua cluster EKS. Jika dua cluster virtual memiliki nama yang sama, proses penyebaran akan gagal bahkan jika dua cluster virtual milik cluster EKS yang berbeda. 

```
aws emr-containers create-virtual-cluster \
--name virtual_cluster_name \
--container-provider '{
    "id": "cluster_name",
    "type": "EKS",
    "info": {
        "eksInfo": {
            "namespace": "namespace_name"
        }
    }
}'
```

Atau, Anda dapat membuat file JSON yang mencakup parameter yang diperlukan untuk klaster virtual dan kemudian jalankan perintah `create-virtual-cluster` dengan jalur ke file JSON. Untuk informasi selengkapnya, lihat [Mengelola klaster virtual](virtual-cluster.md).

**catatan**  
Untuk memvalidasi keberhasilan pembuatan klaster virtual, lihat status klaster virtual menggunakan operasi `list-virtual-clusters` atau dengan masuk ke halaman **Klaster Virtual** di konsol Amazon EMR. 

# Kirim pekerjaan yang dijalankan dengan `StartJobRun`
<a name="emr-eks-jobs-submit"></a>

**Untuk mengirimkan pekerjaan yang dijalankan dengan file JSON dengan parameter tertentu**

1. Buat file `start-job-run-request.json` dan tentukan parameter yang diperlukan untuk menjalankan tugas Anda, seperti contoh yang ditunjukkan file JSON berikut. Untuk informasi tentang parameter, lihat [Pilihan untuk mengonfigurasi tugas berjalan](emr-eks-jobs-CLI.md#emr-eks-jobs-parameters).

   ```
   {
     "name": "myjob", 
     "virtualClusterId": "123456",  
     "executionRoleArn": "iam_role_name_for_job_execution", 
     "releaseLabel": "emr-6.2.0-latest", 
     "jobDriver": {
       "sparkSubmitJobDriver": {
         "entryPoint": "entryPoint_location",
         "entryPointArguments": ["argument1", "argument2", ...],  
          "sparkSubmitParameters": "--class <main_class> --conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1"
       }
     }, 
     "configurationOverrides": {
       "applicationConfiguration": [
         {
           "classification": "spark-defaults", 
           "properties": {
             "spark.driver.memory":"2G"
            }
         }
       ], 
       "monitoringConfiguration": {
         "persistentAppUI": "ENABLED", 
         "cloudWatchMonitoringConfiguration": {
           "logGroupName": "my_log_group", 
           "logStreamNamePrefix": "log_stream_prefix"
         }, 
         "s3MonitoringConfiguration": {
           "logUri": "s3://my_s3_log_location"
         }
       }
     }
   }
   ```

1. Gunakan `start-job-run` perintah dengan path ke `start-job-run-request.json` file yang disimpan secara lokal.

   ```
   aws emr-containers start-job-run \
   --cli-input-json file://./start-job-run-request.json
   ```

**Untuk memulai tugas berjalan menggunakan perintah `start-job-run`**

1. Pasokan semua parameter yang ditentukan dalam perintah `StartJobRun`, seperti yang ditunjukkan contoh berikut.

   ```
   aws emr-containers start-job-run \
   --virtual-cluster-id 123456 \
   --name myjob \
   --execution-role-arn execution-role-arn \
   --release-label emr-6.2.0-latest \
   --job-driver '{"sparkSubmitJobDriver": {"entryPoint": "entryPoint_location", "entryPointArguments": ["argument1", "argument2", ...], "sparkSubmitParameters": "--class <main_class> --conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1"}}' \
   --configuration-overrides '{"applicationConfiguration": [{"classification": "spark-defaults", "properties": {"spark.driver.memory": "2G"}}], "monitoringConfiguration": {"cloudWatchMonitoringConfiguration": {"logGroupName": "log_group_name", "logStreamNamePrefix": "log_stream_prefix"}, "persistentAppUI":"ENABLED",  "s3MonitoringConfiguration": {"logUri": "s3://my_s3_log_location" }}}'
   ```

1. Untuk Spark SQL, sediakan semua parameter yang ditentukan dalam `StartJobRun` perintah, seperti yang ditunjukkan contoh berikut.

   ```
   aws emr-containers start-job-run \
   --virtual-cluster-id 123456 \
   --name myjob \
   --execution-role-arn execution-role-arn \
   --release-label emr-6.7.0-latest \
   --job-driver '{"sparkSqlJobDriver": {"entryPoint": "entryPoint_location", "sparkSqlParameters": "--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1"}}' \
   --configuration-overrides '{"applicationConfiguration": [{"classification": "spark-defaults", "properties": {"spark.driver.memory": "2G"}}], "monitoringConfiguration": {"cloudWatchMonitoringConfiguration": {"logGroupName": "log_group_name", "logStreamNamePrefix": "log_stream_prefix"}, "persistentAppUI":"ENABLED",  "s3MonitoringConfiguration": {"logUri": "s3://my_s3_log_location" }}}'
   ```

# Menggunakan klasifikasi pengirim pekerjaan
<a name="emr-eks-job-submitter"></a>

## Ikhtisar
<a name="emr-eks-job-submitter-overview"></a>

EMR Amazon `StartJobRun` berdasarkan permintaan EKS membuat pod *pengirim pekerjaan* (juga dikenal sebagai pod *job-runner*) untuk menelurkan driver Spark. Anda dapat menggunakan `emr-job-submitter` klasifikasi untuk mengonfigurasi pemilih node, menambahkan toleransi, menyesuaikan logging, dan membuat modifikasi lain pada pod pengirim pekerjaan.

Pengaturan berikut tersedia di bawah `emr-job-submitter` klasifikasi:

** `jobsubmitter.node.selector.[selectorKey]` **  
Menambahkan ke pemilih node dari pod pengirim pekerjaan, dengan kunci *selectorKey* dan nilai sebagai nilai konfigurasi. Misalnya, Anda dapat mengatur ` jobsubmitter.node.selector.identifier` ke `myIdentifier` dan pod pengirim pekerjaan akan memiliki pemilih node dengan kunci `identifier` dan nilai. `myIdentifier` Ini dapat digunakan untuk menentukan node mana pod pengirim pekerjaan dapat ditempatkan. Untuk menambahkan beberapa kunci pemilih node, atur beberapa konfigurasi dengan awalan ini.

** `jobsubmitter.label.[labelKey]` **  
Menambahkan label pod pengirim pekerjaan, dengan kunci *labelKey* dan nilai sebagai nilai konfigurasi. Untuk menambahkan beberapa label, atur beberapa konfigurasi dengan awalan ini.

** `jobsubmitter.annotation.[annotationKey]` **  
Menambahkan anotasi pod pengirim pekerjaan, dengan kunci *annotationKey* dan nilai sebagai nilai konfigurasi. Untuk menambahkan beberapa anotasi, atur beberapa konfigurasi dengan awalan ini.

** `jobsubmitter.node.toleration.[tolerationKey]` **  
Menambahkan [toleransi ke pod pengirim](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) pekerjaan. Secara default tidak ada toleransi yang ditambahkan ke pod. Kunci toleransi akan menjadi *tolerationKey* dan nilai toleransi akan menjadi nilai konfigurasi. Jika nilai konfigurasi diatur ke string yang tidak kosong, operator akan menjadi`Equals`. Jika nilai konfigurasi diatur ke`""`, maka operator akan`Exists`.

** `jobsubmitter.node.toleration.[tolerationKey].[effect]` **  
Menambahkan efek toleransi ke awalan*tolerationKey*. Bidang ini diperlukan saat menambahkan toleransi. Nilai yang diizinkan untuk bidang efek adalah` NoExecute`,`NoSchedule`, dan`PreferNoSchedule`.

** `jobsubmitter.node.toleration.[tolerationKey].[tolerationSeconds]` **  
Menambahkan TolerationSeconds ke awalan. *tolerationKey* Bidang opsional. Hanya berlaku ketika efeknya`NoExecute`.

** `jobsubmitter.scheduler.name` **  
Menetapkan schedulerName kustom untuk pod pengirim pekerjaan.

** `jobsubmitter.logging` **  
Mengaktifkan atau menonaktifkan logging pada pod pengirim pekerjaan. Ketika ini disetel ke ` DISABLED` container logging akan dihapus dari pod pengirim pekerjaan, yang akan menonaktifkan setiap logging untuk pod ini yang ditentukan dalam`monitoringConfiguration`, seperti `s3MonitoringConfiguration` or. `cloudWatchMonitoringConfiguration` Ketika pengaturan ini tidak disetel atau disetel ke nilai lain, logging pada pod pengirim pekerjaan diaktifkan.

** `jobsubmitter.logging.image` **  
Menetapkan gambar kustom yang akan digunakan untuk penampung logging pada pod pengirim pekerjaan.

** `jobsubmitter.logging.request.cores` **  
Menetapkan nilai kustom untuk jumlah CPUs, dalam unit CPU, untuk penampung logging pada pod pengirim pekerjaan. Secara default, ini diatur ke **100m**.

** `jobsubmitter.logging.request.memory` **  
Menetapkan nilai kustom untuk jumlah memori, dalam byte, untuk penampung logging pada pod pengirim pekerjaan. Secara default, ini diatur ke **200Mi**. Mebibyte adalah satuan ukuran yang mirip dengan megabyte.

** `jobsubmitter.container.image` **  
Menetapkan image kustom untuk container pod job submitter. `job-runner`

** `jobsubmitter.container.image.pullPolicy` **  
Menetapkan [imagePullPolicy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy)container untuk job submitter pod.

Kami merekomendasikan untuk menempatkan pod pengirim pekerjaan pada Instans Sesuai Permintaan. Menempatkan pod pengirim pekerjaan pada instans Spot dapat mengakibatkan kegagalan pekerjaan jika instance tempat pod pengirim pekerjaan berjalan tunduk pada interupsi Instance Spot. Kamu juga bisa [menempatkan job submitter pod dalam Availability Zone tunggal atau menggunakan label Kubernetes yang diterapkan](#emr-eks-job-submitter-ex-ec2) pada node.

## Contoh klasifikasi pengirim pekerjaan
<a name="emr-eks-job-submitter-examples"></a>

**Topics**
+ [`StartJobRun`permintaan dengan penempatan node On-Demand untuk pod pengirim pekerjaan](#emr-eks-job-submitter-ex-od)
+ [`StartJobRun`request dengan penempatan node single-AZ dan penempatan tipe instans Amazon EC2 untuk pod pengirim pekerjaan](#emr-eks-job-submitter-ex-ec2)
+ [`StartJobRun`permintaan dengan label, anotasi, dan penjadwal khusus untuk pod pengirim pekerjaan](#emr-eks-job-submitter-label-annotation-scheduler)
+ [`StartJobRun`permintaan dengan toleransi yang diterapkan pada pod pengirim pekerjaan dengan kunci`dedicated`, nilai, efek `graviton_machines``NoExecute`, dan 60 detik `tolerationSeconds`](#emr-eks-job-submitter-tolerations)
+ [`StartJobRun`permintaan dengan logging dinonaktifkan untuk pod pengirim pekerjaan](#emr-eks-job-submitter-logging-disabled)
+ [`StartJobRun`permintaan dengan image container logging kustom, CPU, dan memori untuk pod pengirim pekerjaan](#emr-eks-job-submitter-custom)
+ [`StartJobRun`permintaan dengan gambar kontainer pengirim pekerjaan khusus dan kebijakan tarik](#emr-eks-job-submitter-custom-container)

### `StartJobRun`permintaan dengan penempatan node On-Demand untuk pod pengirim pekerjaan
<a name="emr-eks-job-submitter-ex-od"></a>

```
cat >spark-python-in-s3-nodeselector-job-submitter.json << EOF
{
  "name": "spark-python-in-s3-nodeselector", 
  "virtualClusterId": "virtual-cluster-id", 
  "executionRoleArn": "execution-role-arn", 
  "releaseLabel": "emr-6.11.0-latest", 
  "jobDriver": {
    "sparkSubmitJobDriver": {
      "entryPoint": "s3://S3-prefix/trip-count.py", 
      "sparkSubmitParameters": "--conf spark.driver.cores=5  --conf spark.executor.memory=20G --conf spark.driver.memory=15G --conf spark.executor.cores=6"
    }
  }, 
  "configurationOverrides": {
    "applicationConfiguration": [
      {
        "classification": "spark-defaults", 
        "properties": {
          "spark.dynamicAllocation.enabled":"false"
        }
      },
      {
        "classification": "emr-job-submitter",
        "properties": {
          "jobsubmitter.node.selector.eks.amazonaws.com/capacityType": "ON_DEMAND"
        }
      }
    ], 
    "monitoringConfiguration": {
      "cloudWatchMonitoringConfiguration": {
        "logGroupName": "/emr-containers/jobs", 
        "logStreamNamePrefix": "demo"
      }, 
      "s3MonitoringConfiguration": {
        "logUri": "s3://joblogs"
      }
    }
  }
}
EOF
aws emr-containers start-job-run --cli-input-json file:///spark-python-in-s3-nodeselector-job-submitter.json
```

### `StartJobRun`request dengan penempatan node single-AZ dan penempatan tipe instans Amazon EC2 untuk pod pengirim pekerjaan
<a name="emr-eks-job-submitter-ex-ec2"></a>

```
"configurationOverrides": {
  "applicationConfiguration": [
    {
      "classification": "emr-job-submitter",
      "properties": {
        "jobsubmitter.node.selector.topology.kubernetes.io/zone": "Availability Zone",
        "jobsubmitter.node.selector.node.kubernetes.io/instance-type":"m5.4xlarge"
      }
    }
  ]
}
```

### `StartJobRun`permintaan dengan label, anotasi, dan penjadwal khusus untuk pod pengirim pekerjaan
<a name="emr-eks-job-submitter-label-annotation-scheduler"></a>

```
"configurationOverrides": { 
  "applicationConfiguration": [ 
    {
      "classification": "emr-job-submitter", 
      "properties": {
        "jobsubmitter.label.label1": "value1",
        "jobsubmitter.label.label2": "value2",
        "jobsubmitter.annotation.ann1": "value1",
        "jobsubmitter.annotation.ann2": "value2",
        "jobsubmitter.scheduler.name": "custom-scheduler"
      }
    }
  ]
}
```

### `StartJobRun`permintaan dengan toleransi yang diterapkan pada pod pengirim pekerjaan dengan kunci`dedicated`, nilai, efek `graviton_machines``NoExecute`, dan 60 detik `tolerationSeconds`
<a name="emr-eks-job-submitter-tolerations"></a>

```
"configurationOverrides": {
  "applicationConfiguration": [
    {
      "classification": "emr-job-submitter",
      "properties": {
        "jobsubmitter.node.toleration.dedicated":"graviton_machines",
        "jobsubmitter.node.toleration.dedicated.effect":"NoExecute",
        "jobsubmitter.node.toleration.dedicated.tolerationSeconds":"60"
      }
    }
  ]
}
```

### `StartJobRun`permintaan dengan logging dinonaktifkan untuk pod pengirim pekerjaan
<a name="emr-eks-job-submitter-logging-disabled"></a>

```
"configurationOverrides": {
  "applicationConfiguration": [
    {
      "classification": "emr-job-submitter",
      "properties": {
        "jobsubmitter.logging": "DISABLED"
      }
    }
  ], 
  "monitoringConfiguration": {
    "cloudWatchMonitoringConfiguration": {
      "logGroupName": "/emr-containers/jobs", 
      "logStreamNamePrefix": "demo"
    }, 
    "s3MonitoringConfiguration": {
      "logUri": "s3://joblogs"
    }
  }
}
```

### `StartJobRun`permintaan dengan image container logging kustom, CPU, dan memori untuk pod pengirim pekerjaan
<a name="emr-eks-job-submitter-custom"></a>

```
"configurationOverrides": {
  "applicationConfiguration": [
    {
      "classification": "emr-job-submitter",
      "properties": {
        "jobsubmitter.logging.image": "YOUR_ECR_IMAGE_URL",
        "jobsubmitter.logging.request.memory": "200Mi",
        "jobsubmitter.logging.request.cores": "0.5"
      }
    }
  ], 
  "monitoringConfiguration": {
    "cloudWatchMonitoringConfiguration": {
      "logGroupName": "/emr-containers/jobs", 
      "logStreamNamePrefix": "demo"
    }, 
    "s3MonitoringConfiguration": {
      "logUri": "s3://joblogs"
    }
  }
}
```

### `StartJobRun`permintaan dengan gambar kontainer pengirim pekerjaan khusus dan kebijakan tarik
<a name="emr-eks-job-submitter-custom-container"></a>

```
"configurationOverrides": {
  "applicationConfiguration": [
    {
      "classification": "emr-job-submitter",
      "properties": {
        "jobsubmitter.container.image": "123456789012.dkr.ecr.us-west-2.amazonaws.com/emr6.11_custom_repo",
        "jobsubmitter.container.image.pullPolicy": "kubernetes pull policy"
      }
    }
  ]
}
```

# Menggunakan klasifikasi default penampung EMR Amazon
<a name="emr-eks-job-submitter-container-defaults"></a>

## Ikhtisar
<a name="emr-eks-job-submitter-container-defaults-overview"></a>

Pengaturan berikut tersedia di bawah `emr-containers-defaults` klasifikasi:

** `job-start-timeout` **  
Secara default, pekerjaan akan habis jika tidak dapat dimulai dan menunggu di ` SUBMITTED` negara bagian selama 15 menit. Konfigurasi ini mengubah jumlah detik untuk menunggu sebelum waktu kerja habis.

** `executor.logging` **  
Mengaktifkan atau menonaktifkan logging pada pod eksekutor. Ketika ini disetel ke ` DISABLED` container logging akan dihapus dari pod eksekutor, yang akan menonaktifkan setiap logging untuk pod ini yang ditentukan dalam`monitoringConfiguration`, seperti `s3MonitoringConfiguration` atau`cloudWatchMonitoringConfiguration`. Ketika pengaturan ini tidak disetel atau disetel ke nilai lain, logging pada pod pelaksana diaktifkan.

** `logging.image` **  
Menetapkan gambar kustom yang akan digunakan untuk penampung logging pada driver dan pod eksekutor.

** `logging.request.cores` **  
Menetapkan nilai kustom untuk jumlah CPUs, dalam unit CPU, untuk container logging pada driver dan executor pod. Secara default, ini tidak diatur.

** `logging.request.memory` **  
Menetapkan nilai kustom untuk jumlah memori, dalam byte, untuk container logging pada driver dan executor pod. Secara default, ini diatur ke **512Mi**. Mebibyte adalah satuan ukuran yang mirip dengan megabyte.

## Contoh klasifikasi pengirim pekerjaan
<a name="emr-eks-job-submitter-container-examples"></a>

**Topics**
+ [`StartJobRun`permintaan dengan batas waktu kerja khusus](#emr-eks-job-submitter-container-custom-timeout)
+ [`StartJobRun`permintaan dengan logging dinonaktifkan untuk pod pelaksana](#emr-eks-executor-logging-disabled)
+ [`StartJobRun`permintaan dengan image container logging kustom, CPU, dan memori untuk driver dan pod pelaksana](#emr-eks-job-submitter-container-custom-image-cpu)

### `StartJobRun`permintaan dengan batas waktu kerja khusus
<a name="emr-eks-job-submitter-container-custom-timeout"></a>

```
{
  "name": "spark-python", 
  "virtualClusterId": "virtual-cluster-id", 
  "executionRoleArn": "execution-role-arn", 
  "releaseLabel": "emr-6.11.0-latest", 
  "jobDriver": {
    "sparkSubmitJobDriver": {
      "entryPoint": "s3://S3-prefix/trip-count.py"
    }
  }, 
  "configurationOverrides": {
    "applicationConfiguration": [
      {
        "classification": "emr-containers-defaults", 
        "properties": {
          "job-start-timeout": "1800"
        }
      }
    ], 
    "monitoringConfiguration": {
      "cloudWatchMonitoringConfiguration": {
        "logGroupName": "/emr-containers/jobs", 
        "logStreamNamePrefix": "demo"
      }, 
      "s3MonitoringConfiguration": {
        "logUri": "s3://joblogs"
      }
    }
  }
}
```

### `StartJobRun`permintaan dengan logging dinonaktifkan untuk pod pelaksana
<a name="emr-eks-executor-logging-disabled"></a>

```
"configurationOverrides": {
  "applicationConfiguration": [
    {
      "classification": "emr-containers-defaults", 
      "properties": {
        "executor.logging": "DISABLED"
      }
    }
  ], 
  "monitoringConfiguration": {
    "cloudWatchMonitoringConfiguration": {
      "logGroupName": "/emr-containers/jobs", 
      "logStreamNamePrefix": "demo"
    }, 
    "s3MonitoringConfiguration": {
      "logUri": "s3://joblogs"
    }
  }
}
```

### `StartJobRun`permintaan dengan image container logging kustom, CPU, dan memori untuk driver dan pod pelaksana
<a name="emr-eks-job-submitter-container-custom-image-cpu"></a>

```
"configurationOverrides": {
  "applicationConfiguration": [
    {
      "classification": "emr-containers-defaults", 
      "properties": {
        "logging.image": "YOUR_ECR_IMAGE_URL",
        "logging.request.memory": "200Mi",
        "logging.request.cores": "0.5"
      }
    }
  ], 
  "monitoringConfiguration": {
    "cloudWatchMonitoringConfiguration": {
      "logGroupName": "/emr-containers/jobs", 
      "logStreamNamePrefix": "demo"
    }, 
    "s3MonitoringConfiguration": {
      "logUri": "s3://joblogs"
    }
  }
}
```