

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

# Membuat dan mengelola klaster Amazon EKS dengan Step Functions
<a name="connect-eks"></a>

Pelajari cara mengintegrasikan Step Functions dengan Amazon EKS untuk mengelola klaster Kubernetes. Step Functions menyediakan dua jenis integrasi layanan APIs untuk diintegrasikan dengan Amazon Elastic Kubernetes Service. Satu memungkinkan Anda menggunakan Amazon EKS APIs untuk membuat dan mengelola cluster Amazon EKS. Yang lain memungkinkan Anda berinteraksi dengan klaster Anda menggunakan API Kubernetes dan menjalankan tugas sebagai bagian dari alur kerja aplikasi Anda.

 Anda dapat menggunakan integrasi API Kubernetes dengan klaster Amazon EKS yang dibuat menggunakan Step Functions, dengan klaster Amazon EKS yang dibuat oleh alat **eksctl** atau [konsol Amazon EKS](https://console.aws.amazon.com/eks/home), atau metode serupa. Untuk informasi selengkapnya, lihat [Membuat klaster Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) di Panduan Pengguna Amazon EKS.

Untuk mempelajari tentang mengintegrasikan dengan AWS layanan di Step Functions, lihat [Integrasi layanan ](integrate-services.md) dan[Meneruskan parameter ke API layanan di Step Functions](connect-parameters.md).

**Fitur utama integrasi Amazon EKS yang Dioptimalkan**  
Pola [Jalankan Tugas (.sync)](connect-to-resource.md#connect-sync) integrasi didukung.
Tidak ada pengoptimalan khusus untuk pola [Minta Tanggapan](connect-to-resource.md#connect-default) integrasi.
Pola [Tunggu Callback dengan Task Token](connect-to-resource.md#connect-wait-token) integrasi tidak didukung.

**catatan**  
Integrasi Step Functions EKS hanya mendukung Kubernetes APIs dengan akses endpoint publik. Secara default, titik akhir server API kluster EKS memiliki akses publik. Untuk informasi selengkapnya, lihat [kontrol akses titik akhir klaster Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) di **Panduan Pengguna Amazon EKS**.

Step Functions tidak mengakhiri klaster Amazon EKS secara otomatis jika eksekusi dihentikan. Jika mesin status Anda berhenti sebelum klaster Amazon EKS Anda telah dihentikan, klaster Anda dapat terus berjalan tanpa batas, dan dapat menarik biaya tambahan. Untuk menghindari hal ini, pastikan bahwa setiap klaster Amazon EKS yang Anda buat diakhiri dengan benar. Untuk informasi selengkapnya, lihat:
+ [Menghapus klaster](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) dalam Panduan Pengguna Amazon EKS.
+ [Jalankan Tugas (.sync)](connect-to-resource.md#connect-sync) dalam Pola Integrasi Layanan.

**Kuota untuk input atau data hasil**  
Saat mengirim atau menerima data antar layanan, input atau hasil maksimum untuk suatu tugas adalah 256 KiB data sebagai string yang dikodekan UTF-8. Lihat [Kuota yang berkaitan dengan eksekusi mesin status](service-quotas.md#service-limits-state-machine-executions).

## Integrasi API Kubernetes
<a name="connect-eks-kubernetes-apis"></a>

Step Functions mendukung APIs Kubernetes berikut:

### RunJob
<a name="connect-eks-kubernetes-apis-runjob"></a>

Integrasi layanan `eks:runJob` mengizinkan Anda untuk menjalankan tugas di klaster Amazon EKS Anda. Varian `eks:runJob.sync` mengizinkan Anda menunggu tugas selesai, dan, opsional mengambil log.

Server API Kubernetes Anda harus memberikan izin ke IAM role yang digunakan oleh mesin status Anda. Untuk informasi selengkapnya, lihat [Izin](#connect-eks-permissions).

Untuk pola **Jalankan Tugas** (`.sync`), status tugas ditentukan melalui polling. Step Functions awalnya menjajak pendapat dengan angka sekitar 1 jajak pendapat per menit. Angka ini akhirnya melambat menjadi sekitar 1 jajak pendapat setiap 5 menit. Jika Anda memerlukan polling yang lebih sering, atau memerlukan lebih banyak kontrol atas strategi polling, Anda dapat menggunakan integrasi `eks:call` untuk mengueri status tugas.

Integrasi `eks:runJob` khusus untuk Tugas Kubernetes `batch/v1`. Untuk informasi selengkapnya, lihat [Tugas](https://kubernetes.io/docs/concepts/workloads/controllers/job/) dalam dokumentasi Kubernetes. Jika Anda ingin mengelola sumber daya Kubernetes lainnya, termasuk sumber daya kustom, gunakan integrasi layanan `eks:call`. Anda dapat menggunakan Step Functions untuk membangun loop polling, seperti yang ditunjukkan dalam proyek sampel [Polling untuk status pekerjaan dengan Lambda dan AWS Batch](sample-project-job-poller.md). 

Parameter yang didukung meliputi:
+ `ClusterName`: Nama klaster Amazon EKS yang ingin Anda panggil.
  + `Type`: `String`
  + Diperlukan: ya
+ `CertificateAuthority`: Data sertifikat yang dikodekan Base64 yang diperlukan untuk berkomunikasi dengan klaster Anda. Anda dapat memperoleh nilai ini dari [konsol Amazon EKS](https://console.aws.amazon.com/eks/home) atau dengan menggunakan Amazon EKS [DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)API.
  + `Type`: `String`
  + Diperlukan: ya
+ `Endpoint`: URL titik akhir untuk server API Kubernetes Anda. Anda dapat memperoleh nilai ini dari [konsol Amazon EKS](https://console.aws.amazon.com/eks/home) atau dengan menggunakan Amazon EKS [DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)API.
  + `Type`: `String`
  + Diperlukan: ya
+ `Namespace`: Namespace tempat menjalankan tugas. Jika tidak tersedia, namespace `default` digunakan.
  + `Type`: `String`
  + Diperlukan: tidak
+ `Job`: Ketentuan Tugas Kubernetes. Lihat [Tugas](https://kubernetes.io/docs/concepts/workloads/controllers/job/) dalam dokumentasi Kubernetes. 
  + `Type`: `JSON` atau `String`
  + Diperlukan: ya
+ `LogOptions`: Satu set pilihan untuk mengontrol pengambilan opsional log. Hanya berlaku jika pola integrasi layanan Jalankan Tugas (.sync) digunakan untuk menunggu penyelesaian tugas.
  + `Type`: `JSON`
  + Diperlukan: tidak
  + Log termasuk dalam respons dalam kunci `logs`. Mungkin ada beberapa pod dalam tugas, masing-masing dengan beberapa kontainer.

    ```
    { 
      ...
      "logs": { 
        "pods": { 
          "pod1": { 
            "containers": { 
              "container1": { 
                "log": {{<log> }}
              },
              ...
            }
          },
          ...
        }
      }
    ```
  + Pengambilan log dilakukan dengan dasar upaya-terbaik. Jika ada kesalahan mengambil log, menggantikan bidang `log` akan ada bidang `error` dan `cause`.
+ `LogOptions.RetrieveLogs`: Aktifkan pengambilan log setelah tugas selesai. Secara default, log tidak diambil.
  + `Type`: `Boolean`
  + Diperlukan: tidak
+ `LogOptions.RawLogs`: Jika `RawLogs` diatur ke BETUL, log akan dikembalikan sebagai string mentah tanpa mencoba untuk mengurainya ke JSON. Secara default, log dideserialisasikan ke JSON jika memungkinkan. Dalam beberapa kasus penguraian tersebut dapat memperkenalkan perubahan yang tidak diinginkan, seperti membatasi ketepatan angka yang mengandung banyak digit.
  + `Type`: `Boolean`
  + Diperlukan: tidak
+ `LogOptions.LogParameters`: API Log Baca API Kubernetes API mendukung parameter kueri untuk mengontrol pengambilan log. Misalnya, Anda dapat menggunakan `tailLines` atau `limitBytes` untuk membatasi ukuran log yang diambil dan tetap berada dalam kuota ukuran data Step Functions. Untuk informasi selengkapnya, lihat bagian [Log baca](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#read-log-pod-v1-core) dari Referensi API Kubernetes.
  + `Type: `Peta `String` ke `List of Strings`
  + Diperlukan: tidak
  + Contoh:

    ```
    "LogParameters": {
      "tailLines": [ "6" ]
    }
    ```

Contoh berikut mencakup status `Task` yang menjalankan tugas, menunggunya selesai, kemudian mengambil log tugas:

```
{
  "StartAt": "Run a job on EKS",
  "States": {
    "Run a job on EKS": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:runJob.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "CertificateAuthority": "ANPAJ2UCCR6DPCEXAMPLE",
        "Endpoint": "https://AKIAIOSFODNN7EXAMPLE.yl4.us-east-1.eks.amazonaws.com",
        "LogOptions": {
          "RetrieveLogs": true
        },
        "Job": {
          "apiVersion": "batch/v1",
          "kind": "Job",
          "metadata": {
            "name": "example-job"
          },
          "spec": {
            "backoffLimit": 0,
            "template": {
              "metadata": {
                "name": "example-job"
              },
              "spec": {
                "containers": [
                  {
                    "name": "pi-2000",
                    "image": "perl",
                    "command": [ "perl" ],
                    "args": [
                      "-Mbignum=bpi",
                      "-wle",
                      "print bpi(2000)"
                    ]
                  }
                ],
                "restartPolicy": "Never"
              }
            }
          }
        }
      },
      "End": true
    }
  }
}
```

### `Call`
<a name="connect-eks-kubernetes-apis-call"></a>

Integrasi layanan `eks:call` mengizinkan Anda untuk menggunakan API Kubernetes untuk membaca dan menulis objek sumber daya Kubernetes melalui titik akhir API Kubernetes. 

Server API Kubernetes Anda harus memberikan izin ke IAM role yang digunakan oleh mesin status Anda. Untuk informasi selengkapnya, lihat [Izin](#connect-eks-permissions).

Untuk informasi selengkapnya tentang operasi yang tersedia, lihat [Referensi API Kubernetes](https://kubernetes.io/docs/reference/kubernetes-api/).

Parameter yang didukung untuk `Call` termasuk:
+ `ClusterName`: Nama klaster Amazon EKS yang ingin Anda panggil.
  + `Type`: String
  + Wajib: Ya
+ `CertificateAuthority`: Data sertifikat yang dikodekan Base64 yang diperlukan untuk berkomunikasi dengan klaster Anda. Anda dapat memperoleh nilai ini dari [konsol Amazon EKS](https://console.aws.amazon.com/eks/home) atau dengan menggunakan Amazon EKS [DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)API.
  + `Type`: `String`
  + Wajib: Ya
+ `Endpoint`: URL titik akhir untuk server API Kubernetes Anda. Anda dapat menemukan nilai ini di [konsol Amazon EKS](https://console.aws.amazon.com/eks/home) atau dengan menggunakan DescribeCluster API Amazon EKS.
  + `Type`: `String`
  + Wajib: Ya
+ `Method`: Metode HTTP permintaan Anda. Salah satu: `GET`, `POST`, `PUT`, `DELETE`, `HEAD`, atau `PATCH`.
  + `Type`: `String`
  + Wajib: Ya
+ `Path`: Jalur HTTP dari operasi API REST Kubernetes.
  + `Type`: `String`
  + Wajib: Ya
+ `QueryParameters`: Parameter kueri HTTP dari operasi API REST Kubernetes.
  + `Type: ` Peta `String` ke `List of Strings`
  + Wajib: Tidak
  + Contoh:

    ```
    "QueryParameters": {
      "labelSelector": [ "job-name=example-job" ]
    }
    ```
+ `RequestBody`: Isi pesan HTTP operasi API REST Kubernetes.
  + `Type`: `JSON` atau `String`
  + Wajib: Tidak

Berikut ini mencakup status `Task` yang menggunakan `eks:call` untuk mencantumkan pod milik tugas `example-job`.

```
{
  "StartAt": "Call EKS",
  "States": {
    "Call EKS": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:call",
      "Arguments": {
        "ClusterName": "MyCluster",
        "CertificateAuthority": "ANPAJ2UCCR6DPCEXAMPLE",
        "Endpoint": "https://444455556666.yl4.us-east-1.eks.amazonaws.com",
        "Method": "GET",
        "Path": "/api/v1/namespaces/default/pods",
        "QueryParameters": {
          "labelSelector": [
            "job-name=example-job"
          ]
        }
      },
      "End": true
    }
  }
}
```

Berikut ini mencakup status `Task` yang menggunakan `eks:call` untuk menghapus tugas `example-job`, dan menetapkan `propagationPolicy` untuk memastikan pod tugas juga dihapus.

```
{
  "StartAt": "Call EKS",
  "States": {
    "Call EKS": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:call",
      "Arguments": {
        "ClusterName": "MyCluster",
        "CertificateAuthority": "ANPAJ2UCCR6DPCEXAMPLE",
        "Endpoint": "https://444455556666.yl4.us-east-1.eks.amazonaws.com",
        "Method": "DELETE",
        "Path": "/apis/batch/v1/namespaces/default/jobs/example-job",
        "QueryParameters": {
          "propagationPolicy": [
            "Foreground"
          ]
        }
      },
      "End": true
    }
  }
}
```

## Amazon EKS yang dioptimalkan APIs
<a name="connect-eks-apis"></a>

Amazon EKS APIs dan sintaks yang didukung meliputi:
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html)
  +  [Permintaan sintaks](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html#API_CreateCluster_RequestSyntax) 
  +  [Sintaks respons](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html#API_CreateCluster_ResponseSyntax) 

    Ketika klaster Amazon EKS dibuat menggunakan integrasi layanan `eks:createCluster`, IAM role ditambahkan ke tabel otorisasi RBAC Kubernetes sebagai administrator (dengan izin system:masters) Awalnya, hanya entitas IAM yang dapat melakukan panggilan ke server API Kubernetes. Untuk informasi selengkapnya, lihat:
    + [Mengelola pengguna atau IAM role untuk klaster Anda](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) di *Panduan Pengguna Amazon EKS* 
    + Bagian [Izin](#connect-eks-permissions) 

    Amazon EKS menggunakan peran tertaut layanan yang berisi izin yang diperlukan Amazon EKS untuk memanggil layanan lain atas nama Anda. Jika peran tertaut layanan ini belum ada di akun Anda, Anda harus menambahkan izin `iam:CreateServiceLinkedRole` untuk IAM role yang digunakan oleh Step Functions. Untuk informasi lebih lanjut, lihat [Menggunakan Peran Terkait Layanan](https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles.html) dalam *Panduan Pengguna Amazon EKS*.

    IAM role yang digunakan oleh Step Functions harus memiliki izin `iam:PassRole` untuk meneruskan IAM peran klaster ke Amazon EKS. Untuk informasi selengkapnya, lihat [IAM role klaster Amazon EKS ](https://docs.aws.amazon.com/eks/latest/userguide/service_IAM_role.html) di *Panduan Pengguna Amazon EKS*. 
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html)
  +  [Permintaan sintaks](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html#API_DeleteCluster_RequestSyntax) 
  +  [Sintaks respons](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html#API_DeleteCluster_ResponseSyntax) 

    Anda harus menghapus profil Fargate atau grup simpul sebelum menghapus klaster.
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html)
  +  [Permintaan sintaks](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html#API_CreateFargateProfile_RequestSyntax) 
  +  [Sintaks respons](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html#API_CreateFargateProfile_ResponseSyntax) 

    Amazon EKS menggunakan peran tertaut layanan yang berisi izin yang diperlukan Amazon EKS untuk memanggil layanan lain atas nama Anda. Jika peran tertaut layanan ini belum ada di akun Anda, Anda harus menambahkan izin `iam:CreateServiceLinkedRole` untuk IAM role yang digunakan oleh Step Functions. Untuk informasi lebih lanjut, lihat [Menggunakan Peran Tertaut Layanan](https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles.html) dalam *Panduan Pengguna Amazon EKS*.

    Amazon EKS di Fargate mungkin tidak tersedia di semua wilayah. Untuk informasi tentang ketersediaan wilayah, lihat bagian di [Fargate](https://docs.aws.amazon.com/eks/latest/userguide/fargate.html) di *Panduan Pengguna Amazon EKS*.

    IAM role yang digunakan oleh Step Functions harus memiliki izin `iam:PassRole` untuk meneruskan IAM role eksekusi pod ke Amazon EKS. Untuk informasi selengkapnya, lihat [Peran eksekusi pod](https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) di *Panduan Pengguna Amazon EKS*. 
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html)
  +  [Permintaan sintaks](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html#API_DeleteFargateProfile_RequestSyntax) 
  +  [Sintaks respons](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html#API_DeleteFargateProfile_ResponseSyntax) 
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html)
  +  [Permintaan sintaks](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html#API_CreateNodegroup_RequestSyntax) 
  +  [Sintaks respons](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html#API_CreateNodegroup_ResponseSyntax) 

    Amazon EKS menggunakan peran tertaut layanan yang berisi izin yang diperlukan Amazon EKS untuk memanggil layanan lain atas nama Anda. Jika peran tertaut layanan ini belum ada di akun Anda, Anda harus menambahkan izin `iam:CreateServiceLinkedRole` untuk IAM role yang digunakan oleh Step Functions. Untuk informasi lebih lanjut, lihat [Menggunakan Peran Tertaut Layanan](https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles.html) dalam *Panduan Pengguna Amazon EKS*. 

    IAM role yang digunakan oleh Step Functions harus memiliki izin `iam:PassRole` untuk meneruskan IAM role simpul ke Amazon EKS. Untuk informasi lebih lanjut, lihat [Menggunakan Peran Tertaut Layanan](https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html) dalam *Panduan Pengguna Amazon EKS*.
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html)
  +  [Permintaan sintaks](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html#API_DeleteNodegroup_RequestSyntax) 
  +  [Sintaks respons](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html#API_DeleteNodegroup_ResponseSyntax) 

Berikut ini mencakup `Task` yang membuat klaster Amazon EKS.

```
{
  "StartAt": "CreateCluster.sync",
  "States": {
    "CreateCluster.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:createCluster.sync",
      "Arguments": {
        "Name": "MyCluster",
        "ResourcesVpcConfig": {
          "SubnetIds": [
            "subnet-053e7c47012341234",
            "subnet-027cfea4b12341234"
          ]
        },
        "RoleArn": "arn:aws:iam::{{account-id}}:role/MyEKSClusterRole"
      },
      "End": true
    }
  }
}
```

Berikut ini mencakup status `Task` yang menghapus klaster Amazon EKS.

```
{
  "StartAt": "DeleteCluster.sync",
  "States": {
    "DeleteCluster.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:deleteCluster.sync",
      "Arguments": {
        "Name": "MyCluster"
      },
      "End": true
    }
  }
}
```

Berikut ini mencakup status `Task` yang membuat profil Fargate.

```
{
  "StartAt": "CreateFargateProfile.sync",
  "States": {
    "CreateFargateProfile.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:createFargateProfile.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "FargateProfileName": "MyFargateProfile",
        "PodExecutionRoleArn": "arn:aws:iam::{{account-id}}:role/MyFargatePodExecutionRole",
        "Selectors": [{
            "Namespace": "my-namespace",
            "Labels": { "my-label": "my-value" }
          }]
      },
      "End": true
    }
  }
}
```

Berikut ini mencakup status `Task` yang menghapus profil Fargate.

```
{
  "StartAt": "DeleteFargateProfile.sync",
  "States": {
    "DeleteFargateProfile.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:deleteFargateProfile.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "FargateProfileName": "MyFargateProfile"
      },
      "End": true
    }
  }
}
```

Berikut ini mencakup status `Task` yang membuat grup simpul.

```
{
  "StartAt": "CreateNodegroup.sync",
  "States": {
    "CreateNodegroup.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:createNodegroup.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "NodegroupName": "MyNodegroup",
        "NodeRole": "arn:aws:iam::{{account-id}}:role/MyNodeInstanceRole",
        "Subnets": ["subnet-09fb51df01234", "subnet-027cfea4b1234"] 
      },
      "End": true
    }
  }
}
```

Berikut ini mencakup status `Task` yang menghapus grup simpul.

```
{
  "StartAt": "DeleteNodegroup.sync",
  "States": {
    "DeleteNodegroup.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:deleteNodegroup.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "NodegroupName": "MyNodegroup"
      },
      "End": true
    }
  }
}
```

## Izin
<a name="connect-eks-permissions"></a>

Ketika klaster Amazon EKS dibuat menggunakan integrasi layanan `eks:createCluster`, IAM role ditambahkan ke tabel otorisasi RBAC Kubernetes sebagai administrator, dengan izin `system:masters`. Awalnya, hanya entitas IAM yang dapat melakukan panggilan ke server API Kubernetes. Misalnya, Anda tidak akan dapat menggunakan **kubectl** untuk berinteraksi dengan server API Kubernetes Anda, kecuali jika Anda menggunakan peran yang sama dengan mesin status Step Functions Anda, atau jika Anda mengonfigurasi Kubernetes untuk memberikan izin ke entitas IAM tambahan. Untuk informasi selengkapnya, lihat [Mengelola pengguna atau IAM role untuk klaster Anda](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) di *Panduan Pengguna Amazon EKS*. 

Anda dapat menambahkan izin untuk entitas IAM tambahan, seperti pengguna atau peran, dengan menambahkannya ke `aws-auth` `ConfigMap` dalam namespace kube-sistem. Jika Anda membuat klaster Anda dari Step Functions, gunakan integrasi layanan `eks:call`. 

Berikut ini mencakup `Task` status yang membuat `aws-auth` `ConfigMap` dan memberikan `system:masters` izin kepada pengguna `arn:aws:iam::{{account-id}}:user/my-user` dan peran IAM. `arn:aws:iam::{{account-id}}:role/my-role`

```
{
  "StartAt": "Add authorized user",
  "States": {
    "Add authorized user": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:call",
      "Arguments": {
        "ClusterName": "MyCluster",
        "CertificateAuthority": "LS0tLS1CRUd...UtLS0tLQo=",
        "Endpoint": "https://444455556666.yl4.{{region}}.eks.amazonaws.com",
        "Method": "POST",
        "Path": "/api/v1/namespaces/kube-system/configmaps",
        "RequestBody": {
           "apiVersion": "v1",
           "kind": "ConfigMap",
           "metadata": {
              "name": "aws-auth",
              "namespace": "kube-system"
           },
           "data": {
             "mapUsers": "[{ \"userarn\": \"arn:aws:iam::{{account-id}}:user/my-user\", \"username\": \"my-user\", \"groups\": [ \"system:masters\" ] } ]",
             "mapRoles": "[{ \"rolearn\": \"arn:aws:iam::{{account-id}}:role/my-role\", \"username\": \"my-role\", \"groups\": [ \"system:masters\" ] } ]"
           }
        }
      },
      "End": true
    }
  }
```

**catatan**  
Anda mungkin melihat ARN untuk IAM role yang ditampilkan dalam format yang mencakup jalur **/layanan-peran/**, seperti `arn:aws:iam::{{account-id}}:role/{{service-role}}/my-role`. Token jalur **peran layanan**ini tidak boleh disertakan ketika mencantumkan peran dalam `aws-auth`.

Ketika klaster Anda pertama kali dibuat `aws-auth` `ConfigMap` tidak akan ada, tetapi akan ditambahkan secara otomatis jika Anda membuat profil Fargate. Anda dapat mengambil nilai `aws-auth` saat ini, tambahkan izin tambahan, dan versi `PUT` baru. Biasanya lebih mudah membuat `aws-auth` sebelum profil Fargate.

Jika klaster Anda dibuat di luar Step Functions, Anda dapat mengonfigurasi **kubectl** untuk berkomunikasi dengan server API Kubernetes Anda. Kemudian, buat `aws-auth` `ConfigMap` baru menggunakan `kubectl apply -f aws-auth.yaml` atau edit salah satu yang sudah ada menggunakan `kubectl edit -n kube-system configmap/aws-auth`. Untuk informasi selengkapnya, lihat:
+  [Buat kubeconfig untuk Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html) di *Panduan Pengguna Amazon EKS*. 
+  [Mengelola pengguna atau IAM role untuk klaster Anda](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) di *Panduan Pengguna Amazon EKS*. 

Jika IAM role Anda tidak memiliki izin yang memadai di Kubernetes, `eks:call` atau integrasi layanan `eks:runJob` akan gagal dengan kesalahan berikut:

```
Error:
EKS.401

Cause:
{
  "ResponseBody": {
    "kind": "Status",
    "apiVersion": "v1",
    "metadata": {},
    "status": "Failure",
    "message": "Unauthorized",
    "reason": "Unauthorized",
    "code": 401
  },
  "StatusCode": 401,
  "StatusText": "Unauthorized"
}
```

## Kebijakan IAM untuk memanggil Amazon EKS
<a name="eks-iam"></a>

Contoh templat berikut menunjukkan cara AWS Step Functions menghasilkan kebijakan IAM berdasarkan sumber daya dalam definisi mesin status Anda. Untuk informasi selengkapnya, lihat [Bagaimana Step Functions menghasilkan kebijakan IAM untuk layanan terintegrasi](service-integration-iam-templates.md) dan [Temukan pola integrasi layanan di Step Functions](connect-to-resource.md).

### `CreateCluster`
<a name="eks-iam-createcluster"></a>

*Sumber Daya*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:CreateCluster"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "eks:DescribeCluster",
                "eks:DeleteCluster"
            ],
            "Resource": "arn:aws:eks:us-east-1:444455556666:cluster/*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::444455556666:role/StepFunctionsSample-EKSClusterManag-EKSServiceRole-ANPAJ2UCCR6DPCEXAMPLE"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "eks.amazonaws.com"
                }
            }
        }
    ]
}
```

```


```

### `CreateNodeGroup`
<a name="eks-iam-createnodegroup"></a>

*Sumber Daya*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeSubnets",
                "eks:CreateNodegroup"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "eks:DescribeNodegroup",
                "eks:DeleteNodegroup"
            ],
            "Resource": "arn:aws:eks:us-east-1:444455556666:nodegroup/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:GetRole",
                "iam:ListAttachedRolePolicies"
            ],
            "Resource": "arn:aws:iam::444455556666:role/*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::444455556666:role/StepFunctionsSample-EKSClusterMan-NodeInstanceRole-ANPAJ2UCCR6DPCEXAMPLE"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "eks.amazonaws.com"
                }
            }
        }
    ]
}
```

### `DeleteCluster`
<a name="eks-iam-deletecluster"></a>

*Sumber Daya*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:DeleteCluster",
                "eks:DescribeCluster"
            ],
            "Resource": [
                "arn:aws:eks:us-east-1:444455556666:cluster/ExampleCluster"
            ]
        }
    ]
}
```

### `DeleteNodegroup`
<a name="eks-iam-deletenodegroup"></a>

*Sumber Daya*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:DeleteNodegroup",
                "eks:DescribeNodegroup"
            ],
            "Resource": [
                "arn:aws:eks:us-east-1:444455556666:nodegroup/ExampleCluster/ExampleNodegroup/*"
            ]
        }
    ]
}
```

Untuk informasi selengkapnya tentang menggunakan Amazon EKS dengan Step Functions, lihat [Membuat dan mengelola klaster Amazon EKS dengan Step Functions](#connect-eks).