

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

# Memulai dengan AWS Batch di Amazon EKS Private Clusters
<a name="getting-started-eks-privateclusters"></a>

AWS Batch adalah layanan terkelola yang mengatur beban kerja batch di kluster Amazon Elastic Kubernetes Service (Amazon EKS) Anda. Ini termasuk antrian, pelacakan ketergantungan, percobaan ulang dan prioritas pekerjaan terkelola, manajemen pod, dan penskalaan node. Fitur ini menghubungkan kluster Amazon EKS pribadi Anda yang ada AWS Batch untuk menjalankan pekerjaan Anda dalam skala besar. Anda dapat menggunakan [https://eksctl.io/usage/eks-private-cluster/](https://eksctl.io/usage/eks-private-cluster/)(antarmuka baris perintah untuk Amazon EKS), AWS konsol, atau [AWS Command Line Interface](https://aws.amazon.com/cli/)untuk membuat cluster Amazon EKS pribadi dengan semua sumber daya lain yang diperlukan. 

[Amazon EKS private only cluster](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html#private-access) secara default tidak memiliki akses inbound/outbound internet, dan Anda hanya dapat mengakses server API dari dalam VPC atau jaringan yang terhubung. Titik akhir Amazon VPC digunakan untuk mengaktifkan akses pribadi ke layanan lain. AWS `eksctl`mendukung pembuatan cluster yang sepenuhnya pribadi menggunakan VPC dan subnet Amazon yang sudah ada sebelumnya. `eksctl`juga membuat titik akhir VPC Amazon di VPC Amazon yang disediakan dan memodifikasi tabel rute untuk subnet yang disediakan.

Setiap subnet harus memiliki tabel rute eksplisit yang terkait dengannya karena `eksctl` tidak mengubah tabel rute utama. [Cluster](#getting-started-eks-privateclusters) Anda harus menarik gambar dari registri kontainer yang ada di VPC Amazon Anda. Selain itu, Anda dapat membuat Amazon Elastic Container Registry di Amazon VPC Anda dan menyalin gambar kontainer ke sana untuk diambil node Anda. Untuk informasi selengkapnya, lihat [Menyalin gambar kontainer dari satu repositori ke repositori lain](https://docs.aws.amazon.com/eks/latest/userguide/copy-image-to-repository.html). Untuk memulai repositori pribadi Amazon ECR, lihat repositori pribadi [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Repositories.html).

Anda dapat secara opsional membuat [aturan cache tarik melalui](https://docs.aws.amazon.com/AmazonECR/latest/userguide/pull-through-cache.html) dengan Amazon ECR. Setelah aturan pull through cache dibuat untuk registri publik eksternal, Anda dapat menarik gambar dari registri publik eksternal tersebut menggunakan Amazon ECR private registry uniform resource identifier (URI). Kemudian Amazon ECR membuat repositori dan menyimpan gambar. Ketika gambar yang di-cache ditarik menggunakan URI registri pribadi Amazon ECR, Amazon ECR memeriksa registri jarak jauh untuk melihat apakah ada versi baru gambar dan memperbarui registri pribadi Anda hingga sekali setiap 24 jam.

**Contents**
+ [Ikhtisar](#getting-started-eks-context)
+ [Prasyarat](#getting-started-eks-privateclusters-prerequisites)
+ [Langkah 1: Buat cluster EKS Anda untuk AWS Batch](#getting-started-eks-privateclusters-step-0)
+ [Langkah 2: Siapkan cluster EKS Anda AWS Batch](#getting-started-eks-privateclusters-step-1)
+ [Langkah 3: Buat lingkungan komputasi Amazon EKS](#getting-started-eks-privateclusters-2)
+ [Langkah 4: Buat antrian pekerjaan dan lampirkan lingkungan komputasi](#getting-started-eks-privateclusters-step-3)
+ [Langkah 5: Buat Amazon ECR dengan pull through cache](#getting-started-eks-privateclusters-step-ecr)
+ [Langkah 6: Daftarkan definisi pekerjaan](#getting-started-eks-privateclusters-step-4)
+ [Langkah 7: Kirim pekerjaan untuk dijalankan](#getting-started-eks-privateclusters-step-5)
+ [Langkah 8: Lihat output Job](#getting-started-eks-privateclusters-step-7)
+ [Langkah 9: (Opsional) Kirim pekerjaan dengan penggantian](#getting-started-eks-privateclusters-step-6)
+ [Langkah 10: Bersihkan sumber daya tutorial Anda](#getting-started-eks-privateclusters-step-8)
+ [Sumber daya tambahan](#getting-started-eks-additional-resources)
+ [Pemecahan masalah](#getting-started-eks-privateclusters-troubleshooting)

## Ikhtisar
<a name="getting-started-eks-context"></a>

Tutorial ini menunjukkan cara mengatur AWS Batch dengan Amazon EKS pribadi menggunakan AWS CloudShell, `kubectl` dan`eksctl`. 

**Audiens yang Dituju**  
Tutorial ini dirancang untuk administrator sistem dan pengembang yang bertanggung jawab untuk menyiapkan, menguji, dan menyebarkan AWS Batch.

**Fitur yang Digunakan**  
Tutorial ini menunjukkan cara menggunakan AWS CLI, untuk:  
+ Gunakan Amazon Elastic Container Registry (Amazon ECR) untuk menyimpan gambar kontainer 
+ Membuat dan mengonfigurasi lingkungan komputasi Amazon EKS
+ Buat antrian pekerjaan.
+ Buat definisi pekerjaan
+ Buat dan kirimkan pekerjaan untuk dijalankan
+ Kirim pekerjaan dengan penggantian

**Waktu yang dibutuhkan**  
Diperlukan waktu sekitar 40-50 menit untuk menyelesaikan tutorial ini.

**Pembatasan Regional**  
Tidak ada batasan negara atau regional yang terkait dengan penggunaan solusi ini.

**Biaya Penggunaan Sumber Daya**  
Tidak ada biaya untuk membuat AWS akun. Namun, dengan menerapkan solusi ini, Anda mungkin dikenakan sebagian atau semua biaya yang tercantum dalam tabel berikut.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/batch/latest/userguide/getting-started-eks-privateclusters.html)

## Prasyarat
<a name="getting-started-eks-privateclusters-prerequisites"></a>

Tutorial ini menggunakan AWS CloudShell shell berbasis browser dan pra-otentikasi yang Anda luncurkan langsung dari file. Konsol Manajemen AWS Ini memungkinkan akses ke cluster setelah tidak lagi memiliki akses internet publik. Itu AWS CLI,`kubectl`, dan `eksctl` mungkin sudah diinstal sebagai bagian dari AWS CloudShell. Untuk informasi selengkapnya AWS CloudShell, lihat [https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html). Alternatifnya AWS CloudShell adalah terhubung ke VPC cluster Anda atau [jaringan yang terhubung](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/introduction.html).

Untuk menjalankan perintah kubectl, Anda memerlukan akses pribadi ke klaster Amazon EKS Anda. Ini berarti semua lalu lintas ke server API cluster Anda harus berasal dari dalam VPC klaster Anda atau jaringan yang terhubung.
+ **AWS CLI**— Alat baris perintah untuk bekerja dengan AWS layanan, termasuk Amazon EKS. Panduan ini mengharuskan Anda menggunakan versi 2.8.6 atau yang lebih baru atau 1.26.0 atau yang lebih baru. Untuk informasi selengkapnya, lihat [Menginstal, memperbarui, dan mencopot instalasi AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) di *Panduan Pengguna AWS Command Line Interface *. Setelah menginstal AWS CLI, kami sarankan Anda juga mengkonfigurasinya. Untuk informasi selengkapnya, lihat [Konfigurasi cepat dengan `aws configure`](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) di *Panduan AWS Command Line Interface Pengguna*.
+ **`kubectl`**— Alat baris perintah untuk bekerja dengan Kubernetes cluster. Panduan ini mengharuskan Anda menggunakan versi `1.23` atau yang lebih baru. Untuk informasi selengkapnya, silakan lihat [Menginstal atau memperbarui `kubectl`](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) di *Panduan Pengguna Amazon EKS*.
+ **`eksctl`**— Alat baris perintah untuk bekerja dengan kluster Amazon EKS yang mengotomatiskan banyak tugas individu. Panduan ini mengharuskan Anda menggunakan versi `0.115.0` atau yang lebih baru. Untuk informasi selengkapnya, silakan lihat [Menginstal atau memperbarui `eksctl`](https://eksctl.io/installation/) di **Panduan Pengguna Amazon EKS**.
+ **Izin** — Pengguna yang memanggil operasi [CreateComputeEnvironment](https://docs.aws.amazon.com/batch/latest/APIReference/API_CreateComputeEnvironment.html)API untuk membuat lingkungan komputasi yang menggunakan sumber daya Amazon EKS memerlukan izin untuk operasi `eks:DescribeCluster` dan `eks:ListClusters` API. Anda dapat melampirkan kebijakan [AWSBatchFullAccess](batch_managed_policies.md)terkelola ke akun pengguna dengan mengikuti petunjuk [Menambahkan dan menghapus izin identitas IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) di Panduan Pengguna *IAM*. 
+ **InstanceRole**— Anda perlu membuat `InstanceRole` untuk node Amazon EKS Anda yang memiliki `AmazonEKSWorkerNodePolicy` dan `AmazonEC2ContainerRegistryPullOnly` kebijakan. Untuk petunjuk tentang cara membuat, `InstanceRole` lihat [Membuat peran IAM node Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html#create-worker-node-role). Anda akan membutuhkan ARN dari. `InstanceRole`
+ **Akun AWS ID** - Anda harus tahu Akun AWS ID Anda. Ikuti petunjuk di [Melihat Akun AWS ID Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/console-account-id.html).
+ **(Opsional) CloudWatch** — Untuk memeriksa rincian [(Opsional) Kirim pekerjaan dengan penggantian](getting-started-eks.md#getting-started-eks-step-6), logging harus dikonfigurasi. Untuk informasi selengkapnya, lihat [Gunakan CloudWatch Log untuk memantau pekerjaan AWS Batch Amazon EKS](batch-eks-cloudwatch-logs.md).

## Langkah 1: Buat cluster EKS Anda untuk AWS Batch
<a name="getting-started-eks-privateclusters-step-0"></a>

**penting**  
Untuk memulai sesederhana dan secepat mungkin, tutorial ini mencakup langkah-langkah dengan pengaturan default. Sebelum membuat untuk penggunaan produksi, kami sarankan Anda membiasakan diri dengan semua pengaturan dan menerapkan dengan pengaturan yang memenuhi persyaratan Anda.

Kami menyarankan Anda menggunakan `eksctl` dan file konfigurasi berikut untuk membuat cluster Anda. Untuk mengatur kluster Anda secara manual, ikuti petunjuk di [Menyebarkan kluster pribadi dengan akses internet terbatas](https://docs.aws.amazon.com/eks/latest/userguide/private-clusters.html) di *Panduan Pengguna Amazon EKS*.

1. Buka [AWS CloudShell konsol](https://console.aws.amazon.com/cloudshell/home) dan atur wilayah ke`us-east-1`. Untuk sisa tutorial pastikan Anda menggunakan`us-east-1`.

1. Buat kluster EKS pribadi di `us-east-1` wilayah tersebut menggunakan file `eksctl` konfigurasi sampel. Simpan file yaml ke AWS CloudShell lingkungan Anda dan beri nama. `clusterConfig.yaml` Anda dapat mengubah *my-test-cluster* dengan nama yang ingin Anda gunakan untuk cluster Anda. 

   ```
   kind: ClusterConfig 
   apiVersion: eksctl.io/v1alpha5
   metadata:
       name: my-test-cluster 
       region: us-east-1
   availabilityZones: 
       - us-east-1a 
       - us-east-1b 
       - us-east-1c
   managedNodeGroups:
       - name: ng-1
         privateNetworking: true 
   privateCluster: 
       enabled: true 
       skipEndpointCreation: false
   ```

1. Buat sumber daya Anda menggunakan perintah:`eksctl create cluster -f clusterConfig.yaml`. Pembuatan cluster dapat memakan waktu antara 10-15 menit.

1. Setelah cluster selesai dibuat, Anda harus menambahkan alamat AWS CloudShell IP Anda ke daftar izinkan. Untuk menemukan alamat AWS CloudShell IP Anda, jalankan perintah berikut:

   ```
   curl http://checkip.amazonaws.com
   ```

   Setelah Anda memiliki alamat IP publik, Anda harus membuat aturan daftar izinkan:

   ```
   aws eks update-cluster-config \
     --name my-test-cluster \
     --region us-east-1 \
     --resources-vpc-config endpointPublicAccess=true,endpointPrivateAccess=true,publicAccessCidrs=["<Public IP>/32"]
   ```

   Kemudian terapkan pembaruan ke file konfigurasi kubectl:

   ```
   aws eks update-kubeconfig --name my-test-cluster --region us-east-1
   ```

1. Untuk menguji apakah Anda memiliki akses ke node, jalankan perintah berikut:

   ```
   kubectl get nodes
   ```

   Output dari perintah adalah:

   ```
   NAME                              STATUS   ROLES    AGE     VERSION
   ip-192-168-107-235.ec2.internal   Ready    none     1h   v1.32.3-eks-473151a
   ip-192-168-165-40.ec2.internal    Ready    none     1h   v1.32.3-eks-473151a
   ip-192-168-98-54.ec2.internal     Ready    none     1h   v1.32.1-eks-5d632ec
   ```

## Langkah 2: Siapkan cluster EKS Anda AWS Batch
<a name="getting-started-eks-privateclusters-step-1"></a>

Semua langkah diperlukan dan harus dilakukan di AWS CloudShell.

1. 

**Buat namespace khusus untuk pekerjaan AWS Batch**

   Gunakan `kubectl` untuk membuat namespace baru.

   ```
   $ namespace=my-aws-batch-namespace
   ```

   ```
   $ cat - <<EOF | kubectl create -f -
   {
     "apiVersion": "v1",
     "kind": "Namespace",
     "metadata": {
       "name": "${namespace}",
       "labels": {
         "name": "${namespace}"
       }
     }
   }
   EOF
   ```

   Output:

   ```
   namespace/my-aws-batch-namespace created
   ```

1. 

**Aktifkan akses melalui kontrol akses berbasis peran (RBAC)**

   Gunakan `kubectl` untuk membuat Kubernetes peran bagi klaster agar memungkinkan AWS Batch untuk menonton node dan pod, dan untuk mengikat peran. Anda harus melakukan ini sekali untuk setiap cluster Amazon EKS.

   ```
   $ cat - <<EOF | kubectl apply -f -
   apiVersion: rbac.authorization.k8s.io/v1
   kind: ClusterRole
   metadata:
     name: aws-batch-cluster-role
   rules:
     - apiGroups: [""]
       resources: ["namespaces"]
       verbs: ["get"]
     - apiGroups: [""]
       resources: ["nodes"]
       verbs: ["get", "list", "watch"]
     - apiGroups: [""]
       resources: ["pods"]
       verbs: ["get", "list", "watch"]
     - apiGroups: [""]
       resources: ["events"]
       verbs: ["list"]
     - apiGroups: [""]
       resources: ["configmaps"]
       verbs: ["get", "list", "watch"]
     - apiGroups: ["apps"]
       resources: ["daemonsets", "deployments", "statefulsets", "replicasets"]
       verbs: ["get", "list", "watch"]
     - apiGroups: ["rbac.authorization.k8s.io"]
       resources: ["clusterroles", "clusterrolebindings"]
       verbs: ["get", "list"]
   ---
   apiVersion: rbac.authorization.k8s.io/v1
   kind: ClusterRoleBinding
   metadata:
     name: aws-batch-cluster-role-binding
   subjects:
   - kind: User
     name: aws-batch
     apiGroup: rbac.authorization.k8s.io
   roleRef:
     kind: ClusterRole
     name: aws-batch-cluster-role
     apiGroup: rbac.authorization.k8s.io
   EOF
   ```

   Output:

   ```
   clusterrole.rbac.authorization.k8s.io/aws-batch-cluster-role created
   clusterrolebinding.rbac.authorization.k8s.io/aws-batch-cluster-role-binding created
   ```

   Buat Kubernetes peran cakupan namespace untuk mengelola dan mendaur hidup pod AWS Batch dan mengikatnya. Anda harus melakukan ini sekali untuk setiap namespace unik.

   ```
   $ namespace=my-aws-batch-namespace
   ```

   ```
   $ cat - <<EOF | kubectl apply -f - --namespace "${namespace}"
   apiVersion: rbac.authorization.k8s.io/v1
   kind: Role
   metadata:
     name: aws-batch-compute-environment-role
     namespace: ${namespace}
   rules:
     - apiGroups: [""]
       resources: ["pods"]
       verbs: ["create", "get", "list", "watch", "delete", "patch"]
     - apiGroups: [""]
       resources: ["serviceaccounts"]
       verbs: ["get", "list"]
     - apiGroups: ["rbac.authorization.k8s.io"]
       resources: ["roles", "rolebindings"]
       verbs: ["get", "list"]
   ---
   apiVersion: rbac.authorization.k8s.io/v1
   kind: RoleBinding
   metadata:
     name: aws-batch-compute-environment-role-binding
     namespace: ${namespace}
   subjects:
   - kind: User
     name: aws-batch
     apiGroup: rbac.authorization.k8s.io
   roleRef:
     kind: Role
     name: aws-batch-compute-environment-role
     apiGroup: rbac.authorization.k8s.io
   EOF
   ```

   Output:

   ```
   role.rbac.authorization.k8s.io/aws-batch-compute-environment-role created
   rolebinding.rbac.authorization.k8s.io/aws-batch-compute-environment-role-binding created
   ```

   Kubernetes`aws-auth`Perbarui peta konfigurasi untuk memetakan izin RBAC sebelumnya ke peran terkait layanan. AWS Batch 

   ```
   $ eksctl create iamidentitymapping \
       --cluster my-test-cluster \
       --arn "arn:aws:iam::<your-account-ID>:role/AWSServiceRoleForBatch" \
       --username aws-batch
   ```

   Output:

   ```
   2022-10-25 20:19:57 [ℹ]  adding identity "arn:aws:iam::<your-account-ID>:role/AWSServiceRoleForBatch" to auth ConfigMap
   ```
**catatan**  
Jalur `aws-service-role/batch.amazonaws.com/` telah dihapus dari ARN dari peran terkait layanan. Ini karena masalah dengan peta `aws-auth` konfigurasi. Untuk informasi selengkapnya, lihat [Peran dengan jalur tidak berfungsi saat jalur disertakan dalam ARN mereka di](https://github.com/kubernetes-sigs/aws-iam-authenticator/issues/268). aws-auth configmap

## Langkah 3: Buat lingkungan komputasi Amazon EKS
<a name="getting-started-eks-privateclusters-2"></a>

AWS Batch lingkungan komputasi menentukan parameter sumber daya komputasi untuk memenuhi kebutuhan beban kerja batch Anda. Di lingkungan komputasi terkelola, AWS Batch membantu Anda mengelola kapasitas dan jenis instans sumber daya komputasi (Kubernetesnode) dalam klaster Amazon EKS Anda. Ini didasarkan pada spesifikasi sumber daya komputasi yang Anda tentukan ketika membuat lingkungan komputasi. Anda dapat menggunakan Instans Sesuai Permintaan EC2 atau Instans Spot EC2.

Sekarang peran **AWSServiceRoleForBatch**terkait layanan memiliki akses ke kluster Amazon EKS Anda, Anda dapat membuat AWS Batch sumber daya. Pertama, buat lingkungan komputasi yang mengarah ke cluster Amazon EKS Anda.
+ Untuk `subnets` menjalankan `eksctl get cluster my-test-cluster` untuk mendapatkan subnet yang digunakan oleh cluster. 
+ Untuk `securityGroupIds` parameter, Anda dapat menggunakan grup keamanan yang sama dengan cluster Amazon EKS. Perintah ini mengambil ID grup keamanan untuk cluster.

  ```
  $ aws eks describe-cluster \
      --name my-test-cluster \
      --query cluster.resourcesVpcConfig.clusterSecurityGroupId
  ```
+ Gunakan ARN yang `instanceRole` Anda buat di Prasyarat.

```
$ cat <<EOF > ./batch-eks-compute-environment.json
{
  "computeEnvironmentName": "My-Eks-CE1",
  "type": "MANAGED",
  "state": "ENABLED",
  "eksConfiguration": {
    "eksClusterArn": "arn:aws:eks:us-east-1:<your-account-ID>:cluster/my-test-cluster",
    "kubernetesNamespace": "my-aws-batch-namespace"
  },
  "computeResources": {
    "type": "EC2",
    "allocationStrategy": "BEST_FIT_PROGRESSIVE",
    "minvCpus": 0,
    "maxvCpus": 128,
    "instanceTypes": [
        "m5"
    ],
    "subnets": [
        "<eks-cluster-subnets-with-access-to-the-image-for-image-pull>"
    ],
    "securityGroupIds": [
        "<eks-cluster-sg>"
    ],
    "instanceRole": "<eks-instance-profile>"
  }
}
EOF
```

```
$ aws batch create-compute-environment --cli-input-json file://./batch-eks-compute-environment.json
```

**Catatan**
+ Pemeliharaan lingkungan komputasi Amazon EKS adalah tanggung jawab bersama. Untuk informasi selengkapnya, lihat [Keamanan di Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/security.html).

## Langkah 4: Buat antrian pekerjaan dan lampirkan lingkungan komputasi
<a name="getting-started-eks-privateclusters-step-3"></a>

**penting**  
Penting untuk memastikan bahwa lingkungan komputasi sehat sebelum melanjutkan. Operasi [DescribeComputeEnvironments](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeComputeEnvironments.html)API dapat digunakan untuk melakukan ini.  

```
$ aws batch describe-compute-environments --compute-environments My-Eks-CE1
```
Konfirmasikan bahwa `status` parameternya tidak`INVALID`. Jika ya, lihat `statusReason` parameter penyebabnya. Untuk informasi selengkapnya, lihat [Pemecahan masalah AWS Batch](troubleshooting.md).

Pekerjaan yang dikirimkan ke antrean pekerjaan baru ini dijalankan sebagai pod pada node AWS Batch terkelola yang bergabung dengan klaster Amazon EKS yang terkait dengan lingkungan komputasi Anda.

```
$ cat <<EOF > ./batch-eks-job-queue.json
 {
    "jobQueueName": "My-Eks-JQ1",
    "priority": 10,
    "computeEnvironmentOrder": [
      {
        "order": 1,
        "computeEnvironment": "My-Eks-CE1"
      }
    ]
  }
EOF
```

```
$ aws batch create-job-queue --cli-input-json file://./batch-eks-job-queue.json
```

## Langkah 5: Buat Amazon ECR dengan pull through cache
<a name="getting-started-eks-privateclusters-step-ecr"></a>

Karena cluster tidak memiliki akses internet publik, Anda harus membuat ECR Amazon untuk gambar kontainer. Petunjuk berikut membuat ECR Amazon dengan aturan cache pull-through untuk menyimpan gambar.

1. Perintah berikut membuat aturan cache pull-through. Anda dapat mengganti *tutorial-prefix* dengan awalan yang berbeda.

   ```
   aws ecr create-pull-through-cache-rule \
       --ecr-repository-prefix "my-prefix" \
       --upstream-registry-url "public.ecr.aws" \
       --region us-east-1
   ```

1. Otentikasi dengan ECR publik.

   ```
   aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin <your-account-ID>.dkr.ecr.us-east-1.amazonaws.com
   ```

   Sekarang Anda dapat menarik gambar.

   ```
   docker pull <your-account-ID>.dkr.ecr.us-east-1.amazonaws.com/my-prefix/amazonlinux/amazonlinux:2
   ```

1. Anda dapat memverifikasi repositri dan gambar dengan menjalankan perintah berikut:

   ```
   aws ecr describe-repositories
   ```

   ```
   aws ecr describe-images --repository-name my-prefix/amazonlinux/amazonlinux
   ```

1. String gambar yang digunakan untuk menarik wadah dalam format berikut:

   ```
   <your-account-ID>.dkr.ecr.us-east-1.amazonaws.com/my-prefix/amazonlinux/amazonlinux:2
   ```

## Langkah 6: Daftarkan definisi pekerjaan
<a name="getting-started-eks-privateclusters-step-4"></a>

Definisi Job berikut menginstruksikan pod untuk tidur selama 60 detik.

Di bidang gambar definisi pekerjaan, alih-alih menyediakan tautan ke gambar di repositori ECR publik, berikan tautan ke gambar yang disimpan di repositori ECR pribadi kami. Lihat contoh definisi pekerjaan berikut:

```
$ cat <<EOF > ./batch-eks-job-definition.json
{
  "jobDefinitionName": "MyJobOnEks_Sleep",
  "type": "container",
  "eksProperties": {
    "podProperties": {
      "hostNetwork": true,
      "containers": [
        {
          "image": "<your-account-ID>.dkr.ecr.us-east-1.amazonaws.com/my-prefix/amazonlinux/amazonlinux:2",
          "command": [
            "sleep",
            "60"
          ],
          "resources": {
            "limits": {
              "cpu": "1",
              "memory": "1024Mi"
            }
          }
        }
      ],
      "metadata": {
        "labels": {
          "environment": "test"
        }
      }
    }
  }
}
EOF
```

```
$ aws batch register-job-definition --cli-input-json file://./batch-eks-job-definition.json
```



**Catatan**
+ Ada pertimbangan untuk `memory` parameter `cpu` dan. Untuk informasi selengkapnya, lihat [Pertimbangan memori dan vCPU untuk Amazon AWS Batch EKS](memory-cpu-batch-eks.md).

## Langkah 7: Kirim pekerjaan untuk dijalankan
<a name="getting-started-eks-privateclusters-step-5"></a>

Jalankan AWS CLI perintah berikut AWS CloudShell untuk mengirimkan Job baru dan mengembalikan JoBid unik.

```
$ aws batch submit-job --job-queue My-Eks-JQ1 \
    --job-definition MyJobOnEks_Sleep - -job-name My-Eks-Job1
```

**Catatan**
+ Untuk informasi selengkapnya tentang menjalankan pekerjaan di sumber daya Amazon EKS, lihat[Lowongan kerja Amazon EKS](eks-jobs.md).

## Langkah 8: Lihat output Job
<a name="getting-started-eks-privateclusters-step-7"></a>

Untuk memeriksa status Job:

```
$ aws batch describe-jobs --job <JobID-from-submit-response>
```

Itu `startedAt` dan `stoppedAt` harus terpisah satu menit. 

## Langkah 9: (Opsional) Kirim pekerjaan dengan penggantian
<a name="getting-started-eks-privateclusters-step-6"></a>

Pekerjaan ini mengesampingkan perintah yang diteruskan ke wadah.

```
$ cat <<EOF > ./submit-job-override.json
{
  "jobName": "EksWithOverrides",
  "jobQueue": "My-Eks-JQ1",
  "jobDefinition": "MyJobOnEks_Sleep",
  "eksPropertiesOverride": {
    "podProperties": {
      "containers": [
        {
          "command": [
            "/bin/sh"
          ],
          "args": [
            "-c",
            "echo hello world"
          ]
        }
      ]
    }
  }
}
EOF
```

```
$ aws batch submit-job - -cli-input-json file://./submit-job-override.json
```

**Catatan**
+ Untuk meningkatkan visibilitas ke detail operasi, aktifkan pencatatan pesawat kontrol Amazon EKS. Untuk informasi selengkapnya, lihat [pencatatan pesawat kontrol Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html) di **Panduan Pengguna Amazon EKS**.
+ Daemonsetsdan kubelets overhead mempengaruhi vCPU dan sumber daya memori yang tersedia, khususnya penskalaan dan penempatan kerja. Untuk informasi selengkapnya, lihat [Pertimbangan memori dan vCPU untuk Amazon AWS Batch EKS](memory-cpu-batch-eks.md).

## Langkah 10: Bersihkan sumber daya tutorial Anda
<a name="getting-started-eks-privateclusters-step-8"></a>

Anda dikenakan biaya untuk instans Amazon EC2 saat diaktifkan. Anda dapat menghapus instance untuk menghentikan biaya.

Untuk menghapus sumber daya yang Anda buat, lakukan hal berikut:

1. Buka AWS Batch konsol di [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/).

1. Di panel navigasi pilih **Job queue**. 

1. Dalam tabel **antrean Job pilih antrean** Job yang Anda buat untuk tutorial.

1. Dari **Tindakan** pilih **Nonaktifkan**. Setelah **Status** antrean Job Dinonaktifkan, Anda dapat memilih **Hapus**.

1. Setelah antrean Job dihapus, di panel navigasi pilih lingkungan **Compute**.

1. Pilih lingkungan komputasi yang Anda buat untuk tutorial ini dan kemudian pilih **Nonaktifkan** dari **Tindakan**. Mungkin diperlukan 1-2 menit agar lingkungan komputasi selesai dinonaktifkan.

1. Setelah **Status** lingkungan komputasi Dinonaktifkan, pilih **Hapus**. Mungkin diperlukan 1-2 menit agar lingkungan komputasi dihapus.

## Sumber daya tambahan
<a name="getting-started-eks-additional-resources"></a>

Setelah Anda menyelesaikan tutorial, Anda mungkin ingin menjelajahi topik-topik berikut:
+ Pelajari lebih lanjut tentang [Praktik Terbaik](best-practices.md).
+ Jelajahi komponen AWS Batch inti. Untuk informasi selengkapnya, lihat [Komponen AWS Batch](batch_components.md).
+ Pelajari lebih lanjut tentang berbagai [Lingkungan Komputasi yang](compute_environments.md) tersedia di AWS Batch.
+ Pelajari lebih lanjut tentang [antrian Job](job_queues.md) dan opsi penjadwalan yang berbeda.
+ Pelajari lebih lanjut tentang [definisi Job](job_definitions.md) dan opsi konfigurasi yang berbeda.
+ Pelajari lebih lanjut tentang berbagai jenis [Pekerjaan](jobs.md).

## Pemecahan masalah
<a name="getting-started-eks-privateclusters-troubleshooting"></a>

Jika node yang diluncurkan oleh AWS Batch tidak memiliki akses ke repositori Amazon ECR (atau repositori lain) yang menyimpan gambar Anda, maka pekerjaan Anda dapat tetap dalam status MULAI. Ini karena pod tidak akan dapat mengunduh gambar dan menjalankan AWS Batch pekerjaan Anda. Jika Anda mengklik nama pod yang diluncurkan oleh AWS Batch Anda akan dapat melihat pesan kesalahan dan mengonfirmasi masalah. Pesan kesalahan akan terlihat mirip dengan yang berikut ini:

```
Failed to pull image "public.ecr.aws/amazonlinux/amazonlinux:2": rpc error: code =
Unknown desc = failed to pull and unpack image
"public.ecr.aws/amazonlinux/amazonlinux:2": failed to resolve reference
"public.ecr.aws/amazonlinux/amazonlinux:2": failed to do request: Head
"https://public.ecr.aws/v2/amazonlinux/amazonlinux/manifests/2": dial tcp: i/o timeout
```

[Untuk skenario pemecahan masalah umum lainnya, lihat Pemecahan masalah. AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/batch-eks-troubleshooting.html) Untuk pemecahan masalah berdasarkan status pod, lihat [https://repost.aws/knowledge-center/eks-pod-status-troubleshooting](https://repost.aws/knowledge-center/eks-pod-status-troubleshooting)? .