

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Amazon EKS 私有叢集 AWS Batch 上開始使用
<a name="getting-started-eks-privateclusters"></a>

AWS Batch 是一種受管服務，可協調 Amazon Elastic Kubernetes Service (Amazon EKS) 叢集中的批次工作負載。這包括佇列、相依性追蹤、受管任務重試和優先順序、Pod 管理和節點擴展。此功能會將現有的私有 Amazon EKS 叢集與 連線 AWS Batch ，以大規模執行任務。您可以使用 [https://eksctl.io/usage/eks-private-cluster/](https://eksctl.io/usage/eks-private-cluster/)(Amazon EKS 的命令列界面）、 AWS 主控台或 [AWS Command Line Interface](https://aws.amazon.com/cli/)來建立具有所有其他必要資源的私有 Amazon EKS 叢集。

根據預設，[Amazon EKS 僅限私有叢集](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html#private-access)沒有傳入/傳出網際網路存取權，而且您只能從 VPC 或連線網路中存取 API 伺服器。Amazon VPC 端點用於啟用對其他服務 AWS 的私有存取。 `eksctl`支援使用預先存在的 Amazon VPC 和子網路建立全私有叢集。 `eksctl`也會在提供的 Amazon VPC 中建立 Amazon VPC 端點，並修改所提供子網路的路由表。

每個子網路都應有一個與其相關聯的明確路由表，因為 `eksctl` 不會修改主路由表。您的[叢集](#getting-started-eks-privateclusters)必須從 Amazon VPC 中的容器登錄檔提取映像。您也可以在 Amazon VPC 中建立 Amazon Elastic Container Registry，並將容器映像複製到其中，以供節點提取。如需詳細資訊，請參閱[將容器映像從一個儲存庫複製到另一個儲存庫](https://docs.aws.amazon.com/eks/latest/userguide/copy-image-to-repository.html)。若要開始使用 Amazon ECR 私有儲存庫，請參閱 [Amazon ECR 私有儲存庫](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Repositories.html)。

您可以選擇性地使用 Amazon ECR 建立[提取快取規則](https://docs.aws.amazon.com/AmazonECR/latest/userguide/pull-through-cache.html)。為外部公有登錄檔建立提取快取規則後，您可以使用 Amazon ECR 私有登錄檔統一資源識別符 (URI) 從該外部公有登錄檔提取映像。然後，Amazon ECR 會建立儲存庫並快取映像。使用 Amazon ECR 私有登錄 URI 提取快取映像時，Amazon ECR 會檢查遠端登錄檔，以查看是否有映像的新版本，並最多每 24 小時更新您的私有登錄檔一次。

**Contents**
+ [概觀](#getting-started-eks-context)
+ [先決條件](#getting-started-eks-privateclusters-prerequisites)
+ [步驟 1：建立 的 EKS 叢集 AWS Batch](#getting-started-eks-privateclusters-step-0)
+ [步驟 2：為 準備 EKS 叢集 AWS Batch](#getting-started-eks-privateclusters-step-1)
+ [步驟 3：建立 Amazon EKS 運算環境](#getting-started-eks-privateclusters-2)
+ [步驟 4：建立任務佇列並連接運算環境](#getting-started-eks-privateclusters-step-3)
+ [步驟 5：使用提取快取建立 Amazon ECR](#getting-started-eks-privateclusters-step-ecr)
+ [步驟 6：註冊任務定義](#getting-started-eks-privateclusters-step-4)
+ [步驟 7：提交要執行的任務](#getting-started-eks-privateclusters-step-5)
+ [步驟 8：檢視任務的輸出](#getting-started-eks-privateclusters-step-7)
+ [步驟 9：（選用） 使用覆寫提交任務](#getting-started-eks-privateclusters-step-6)
+ [步驟 10：清除您的教學課程資源](#getting-started-eks-privateclusters-step-8)
+ [其他資源](#getting-started-eks-additional-resources)
+ [疑難排解](#getting-started-eks-privateclusters-troubleshooting)

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

本教學課程示範如何使用 AWS CloudShell、 `kubectl`和 AWS Batch 設定私有 Amazon EKS`eksctl`。

**目標對象**  
本教學課程專為負責設定、測試和部署的系統管理員和開發人員而設計 AWS Batch。

**使用的功能**  
本教學課程說明如何使用 AWS CLI來：  
+ 使用 Amazon Elastic Container Registry (Amazon ECR) 存放容器映像 
+ 建立和設定 Amazon EKS 運算環境
+ 建立任務佇列。
+ 建立任務定義
+ 建立並提交要執行的任務
+ 使用覆寫提交任務

**所需時間**  
完成本教學課程約需 40-50 分鐘。

**區域限制**  
使用此解決方案沒有相關聯的國家或地區限制。

**資源用量成本**  
建立 AWS 帳戶無需付費。不過，透過實作此解決方案，您可能會產生下表中所列的部分或全部費用。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/batch/latest/userguide/getting-started-eks-privateclusters.html)

## 先決條件
<a name="getting-started-eks-privateclusters-prerequisites"></a>

本教學使用 AWS CloudShell ，這是您直接從 啟動的瀏覽器型預先驗證 Shell AWS 管理主控台。這允許在叢集不再具有公有網際網路存取權時存取叢集。 AWS CLI、 `kubectl`和 可能`eksctl`已安裝為 的一部分 AWS CloudShell。如需 的詳細資訊 AWS CloudShell，請參閱 [AWS CloudShell*使用者指南*](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)。的替代方案 AWS CloudShell 是連線到叢集的 VPC 或[連線的網路](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/introduction.html)。

若要執行 kubectl 命令，您將需要 Amazon EKS 叢集的私有存取權。這表示通往叢集 API 伺服器的所有流量都必須來自叢集的 VPC 或連線的網路。
+ **AWS CLI** – 使用 AWS 服務的命令列工具，包括 Amazon EKS。本指南要求您使用 2.8.6 版或更新版本，或 1.26.0 版或更新版本。如需詳細資訊，請參閱*AWS Command Line Interface 《 使用者指南*》中的[安裝、更新和解除安裝 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) 。安裝 之後 AWS CLI，建議您也進行設定。如需詳細資訊，請參閱*AWS Command Line Interface 《 使用者指南*》中的使用 進行[快速組態`aws configure`](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config)。
+ **`kubectl`**：命令列工具，適用於使用 Kubernetes 叢集。本指南要求您使用版本 `1.23` 或更新版本。如需詳細資訊，請參閱 *Amazon EKS 使用者指南*中的[安裝或更新 `kubectl`](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)。
+ **`eksctl`** – 使用 Amazon EKS 叢集的命令列工具，可自動化許多個別任務。本指南要求您使用版本 `0.115.0` 或更新版本。如需詳細資訊，請參閱 **Amazon EKS 使用者指南**中的[安裝或更新 `eksctl`](https://eksctl.io/installation/)。
+ **許可** – 呼叫 [CreateComputeEnvironment](https://docs.aws.amazon.com/batch/latest/APIReference/API_CreateComputeEnvironment.html) API 操作以建立使用 Amazon EKS 資源的運算環境的使用者需要 `eks:DescribeCluster`和 `eks:ListClusters` API 操作的許可。您可以依照 [IAM 使用者指南中新增和移除 IAM 身分許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)的指示，將 [AWSBatchFullAccess](batch_managed_policies.md) 受管政策連接至您的使用者帳戶。 **
+ **InstanceRole** – 您需要`InstanceRole`為具有 `AmazonEKSWorkerNodePolicy`和 `AmazonEC2ContainerRegistryPullOnly`政策的 Amazon EKS 節點建立 。如需如何建立 的指示，`InstanceRole`請參閱[建立 Amazon EKS 節點 IAM 角色](https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html#create-worker-node-role)。您將需要 的 ARN`InstanceRole`。
+ **AWS 帳戶 ID** – 您需要知道您的 AWS 帳戶 ID。請遵循[檢視 AWS 帳戶 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/console-account-id.html) 中的指示。
+ **（選用） CloudWatch** – 若要檢查 [（選用） 提交具有覆寫的任務](getting-started-eks.md#getting-started-eks-step-6)，必須設定記錄。如需詳細資訊，請參閱[使用 CloudWatch Logs AWS Batch 監控 Amazon EKS 任務](batch-eks-cloudwatch-logs.md)。

## 步驟 1：建立 的 EKS 叢集 AWS Batch
<a name="getting-started-eks-privateclusters-step-0"></a>

**重要**  
為了盡可能簡單快速地開始使用，本教學課程包含具有預設設定的步驟。為生產用途建立 之前，建議您先熟悉所有設定，並使用符合您需求的設定進行部署。

我們建議您使用 `eksctl`和下列組態檔案來建立叢集。若要手動設定叢集，請遵循《*Amazon EKS 使用者指南*》中[以有限的網際網路存取部署私有叢集](https://docs.aws.amazon.com/eks/latest/userguide/private-clusters.html)中的指示。

1. 開啟 [AWS CloudShell 主控台](https://console.aws.amazon.com/cloudshell/home)，並將區域設定為 `us-east-1`。對於教學課程的其餘部分，請確定您使用 `us-east-1`。

1. `us-east-1` 使用範例組態檔案在 區域中建立私有 EKS `eksctl` 叢集。將 yaml 檔案儲存到您的 AWS CloudShell 環境並命名為 `clusterConfig.yaml` 。您可以使用您要用於叢集的名稱來變更 *my-test-cluster*。

   ```
   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. 使用 命令建立您的 資源：`eksctl create cluster -f clusterConfig.yaml`。叢集建立可能需要 10-15 分鐘。

1. 叢集建立完成後，您必須將 AWS CloudShell IP 地址新增至允許清單。若要尋找您的 AWS CloudShell IP 地址，請執行下列命令：

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

   擁有公有 IP 地址後，您必須建立允許清單規則：

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

   然後將更新套用至 kubectl 組態檔案：

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

1. 若要測試您是否可存取節點，請執行下列命令：

   ```
   kubectl get nodes
   ```

   命令的輸出為：

   ```
   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
   ```

## 步驟 2：為 準備 EKS 叢集 AWS Batch
<a name="getting-started-eks-privateclusters-step-1"></a>

所有步驟都是必要步驟，且必須在其中完成 AWS CloudShell。

1. 

**建立 AWS Batch 任務的專用命名空間**

   使用 `kubectl` 建立新的命名空間。

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

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

   輸出：

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

1. 

**透過角色型存取控制 (RBAC) 啟用存取**

   使用 為叢集`kubectl`建立Kubernetes角色，以允許 AWS Batch 監看節點和 Pod，以及繫結角色。您必須為每個 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
   ```

   輸出：

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

   為 建立命名空間範圍Kubernetes角色 AWS Batch ，以管理和生命週期 Pod 並將其繫結。您必須為每個唯一的命名空間執行此操作一次。

   ```
   $ 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
   ```

   輸出：

   ```
   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`組態映射，將先前的 RBAC 許可映射至 AWS Batch 服務連結角色。

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

   輸出：

   ```
   2022-10-25 20:19:57 [ℹ]  adding identity "arn:aws:iam::<your-account-ID>:role/AWSServiceRoleForBatch" to auth ConfigMap
   ```
**注意**  
路徑`aws-service-role/batch.amazonaws.com/`已從服務連結角色的 ARN 中移除。這是因為`aws-auth`組態映射發生問題。如需詳細資訊，請參閱 [中的具有路徑的角色在路徑包含在其 ARN 中時無法運作aws-authconfigmap](https://github.com/kubernetes-sigs/aws-iam-authenticator/issues/268)。

## 步驟 3：建立 Amazon EKS 運算環境
<a name="getting-started-eks-privateclusters-2"></a>

AWS Batch 運算環境定義運算資源參數，以滿足批次工作負載需求。在受管運算環境中， AWS Batch 可協助您管理 Amazon EKS 叢集內運算資源 (Kubernetes節點） 的容量和執行個體類型。這是以您在建立運算環境時定義的運算資源規格為基礎。您可以使用 EC2 隨需執行個體或 EC2 Spot 執行個體。

現在**AWSServiceRoleForBatch**服務連結角色可以存取您的 Amazon EKS 叢集，您可以建立 AWS Batch 資源。首先，建立指向 Amazon EKS 叢集的運算環境。
+ 若要讓 `subnets`執行`eksctl get cluster my-test-cluster`以取得叢集使用的子網路。
+ 對於 `securityGroupIds` 參數，您可以使用與 Amazon EKS 叢集相同的安全群組。此命令會擷取叢集的安全群組 ID。

  ```
  $ aws eks describe-cluster \
      --name my-test-cluster \
      --query cluster.resourcesVpcConfig.clusterSecurityGroupId
  ```
+ 使用`instanceRole`您在先決條件中建立的 ARN。

```
$ 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
```

**備註**
+ Amazon EKS 運算環境的維護是共同的責任。如需詳細資訊，請參閱 [Amazon EKS 中的安全性](https://docs.aws.amazon.com/eks/latest/userguide/security.html)。

## 步驟 4：建立任務佇列並連接運算環境
<a name="getting-started-eks-privateclusters-step-3"></a>

**重要**  
在繼續之前，請務必確認運算環境運作狀態良好。[DescribeComputeEnvironments](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeComputeEnvironments.html) API 操作可用來執行此操作。  

```
$ aws batch describe-compute-environments --compute-environments My-Eks-CE1
```
確認 `status` 參數不是 `INVALID`。如果是，請查看原因的 `statusReason` 參數。如需詳細資訊，請參閱[故障診斷 AWS Batch](troubleshooting.md)。

提交至此新任務佇列的任務會在加入與您運算環境相關聯之 Amazon EKS 叢集的 AWS Batch 受管節點上，以 Pod 的形式執行。

```
$ 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
```

## 步驟 5：使用提取快取建立 Amazon ECR
<a name="getting-started-eks-privateclusters-step-ecr"></a>

由於叢集沒有公有網際網路存取，您必須為容器映像建立 Amazon ECR。以下指示會建立具有提取快取規則的 Amazon ECR 來存放映像。

1. 下列命令會建立提取快取規則。您可以將*教學課程字首*取代為不同的字首。

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

1. 使用公有 ECR 驗證。

   ```
   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
   ```

   現在您可以提取映像。

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

1. 您可以執行下列命令來驗證儲存庫和映像：

   ```
   aws ecr describe-repositories
   ```

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

1. 用於提取容器的影像字串格式如下：

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

## 步驟 6：註冊任務定義
<a name="getting-started-eks-privateclusters-step-4"></a>

下列任務定義會指示 Pod 休眠 60 秒。

在任務定義的映像欄位中，提供儲存在私有 ECR 儲存庫中的映像連結，而不是提供公有 ECR 儲存庫中的映像連結。請參閱下列範例任務定義：

```
$ 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
```



**備註**
+ `cpu` 和 `memory` 參數有考量。如需詳細資訊，請參閱[Amazon EKS AWS Batch 上的 記憶體和 vCPU 考量事項](memory-cpu-batch-eks.md)。

## 步驟 7：提交要執行的任務
<a name="getting-started-eks-privateclusters-step-5"></a>

在 中執行下列 AWS CLI 命令 AWS CloudShell 以提交新任務，並傳回唯一的 JobID。

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

**備註**
+ 如需在 Amazon EKS 資源上執行任務的詳細資訊，請參閱 [Amazon EKS 任務](eks-jobs.md)。

## 步驟 8：檢視任務的輸出
<a name="getting-started-eks-privateclusters-step-7"></a>

若要檢查任務的狀態：

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

`startedAt` 和 `stoppedAt`應該相隔一分鐘。

## 步驟 9：（選用） 使用覆寫提交任務
<a name="getting-started-eks-privateclusters-step-6"></a>

此任務會覆寫傳遞至容器的命令。

```
$ 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
```

**備註**
+ 為了改善對操作詳細資訊的可見性，請啟用 Amazon EKS 控制平面記錄。如需詳細資訊，請參閱《[Amazon EKS 使用者指南》中的 Amazon EKS 控制平面記錄](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html)。 ****
+ Daemonsets 和 kubelets 額外負荷會影響可用的 vCPU 和記憶體資源，特別是擴展和任務配置。如需詳細資訊，請參閱[Amazon EKS AWS Batch 上的 記憶體和 vCPU 考量事項](memory-cpu-batch-eks.md)。

## 步驟 10：清除您的教學課程資源
<a name="getting-started-eks-privateclusters-step-8"></a>

您需支付啟用 Amazon EC2 執行個體的費用。您可以刪除執行個體以停止產生費用。

若要刪除您建立的資源，請執行下列動作：

1. 在 https：//[https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/) 開啟 AWS Batch 主控台。

1. 在導覽窗格中，選擇**任務佇列**。

1. 在**任務佇列**表格中，選擇您為教學課程建立的任務佇列。

1. 從**動作**選擇**停用**。任務佇列**狀態**停用後，您可以選擇**刪除**。

1. 刪除任務佇列後，在導覽窗格中選擇**運算環境**。

1. 選擇您為此教學課程建立的運算環境，然後從**動作**中選擇**停用**。運算環境可能需要 1-2 分鐘才能完成停用。

1. 一旦運算環境**的狀態**停用，請選擇**刪除**。可能需要 1-2 個小節才能刪除運算環境。

## 其他資源
<a name="getting-started-eks-additional-resources"></a>

完成教學課程後，您可能想要探索下列主題：
+ 進一步了解 [最佳實務](best-practices.md)。
+ 探索 AWS Batch 核心元件。如需詳細資訊，請參閱[的元件 AWS Batch](batch_components.md)。
+ 進一步了解 中可用的不同[運算環境](compute_environments.md) AWS Batch。
+ 進一步了解[任務佇列](job_queues.md)及其不同的排程選項。
+ 進一步了解[任務定義](job_definitions.md)和不同的組態選項。
+ 進一步了解不同類型的[任務](jobs.md)。

## 疑難排解
<a name="getting-started-eks-privateclusters-troubleshooting"></a>

如果 啟動的節點 AWS Batch 無法存取存放映像的 Amazon ECR 儲存庫 （或任何其他儲存庫），則您的任務可能會保持在 STARTING 狀態。這是因為 Pod 將無法下載映像並執行您的 AWS Batch 任務。如果您按一下 啟動的 Pod 名稱 AWS Batch ，應該可以查看錯誤訊息並確認問題。錯誤訊息看起來應該類似以下內容：

```
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
```

如需其他常見的故障診斷案例，請參閱[故障診斷 AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/batch-eks-troubleshooting.html)。如需根據 Pod 狀態進行故障診斷，請參閱[https://repost.aws/knowledge-center/eks-pod-status-troubleshooting](https://repost.aws/knowledge-center/eks-pod-status-troubleshooting)。