

# AWS Batch를 사용한 예시AWS CLI
<a name="cli_batch_code_examples"></a>

다음 코드 예시에서는 AWS Batch에서 AWS Command Line Interface를 사용하여 작업을 수행하고 일반적인 시나리오를 구현하는 방법을 보여줍니다.

*작업*은 대규모 프로그램에서 발췌한 코드이며 컨텍스트에 맞춰 실행해야 합니다. 작업은 개별 서비스 함수를 직접적으로 호출하는 방법을 보여주며 관련 시나리오의 컨텍스트에 맞는 작업을 볼 수 있습니다.

각 예시에는 전체 소스 코드에 대한 링크가 포함되어 있으며, 여기에서 컨텍스트에 맞춰 코드를 설정하고 실행하는 방법에 대한 지침을 찾을 수 있습니다.

**Topics**
+ [작업](#actions)

## 작업
<a name="actions"></a>

### `cancel-job`
<a name="batch_CancelJob_cli_topic"></a>

다음 코드 예시는 `cancel-job`의 사용 방법을 보여줍니다.

**AWS CLI**  
**작업을 취소하는 방법**  
이 예제에서는 지정된 작업 ID가 있는 작업을 취소합니다.  
명령:  

```
aws batch cancel-job --job-id bcf0b186-a532-4122-842e-2ccab8d54efb --reason "Cancelling job."
```
+  API 세부 정보는 *AWS CLI 명령 참조*의 [CancelJob](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/batch/cancel-job.html)을 참조하세요.

### `create-compute-environment`
<a name="batch_CreateComputeEnvironment_cli_topic"></a>

다음 코드 예시는 `create-compute-environment`의 사용 방법을 보여줍니다.

**AWS CLI**  
**온디맨드 인스턴스를 사용하여 관리형 컴퓨팅 환경을 생성하는 방법**  
이 예제에서는 온디맨드 방식으로 시작되는 특정 C4 인스턴스 유형을 사용하여 관리형 컴퓨팅 환경을 생성합니다. 이 컴퓨팅 환경을 C4OnDemand라고 합니다.  
명령:  

```
aws batch create-compute-environment --cli-input-json file://<path_to_json_file>/C4OnDemand.json
```
JSON 파일 형식:  

```
{
  "computeEnvironmentName": "C4OnDemand",
  "type": "MANAGED",
  "state": "ENABLED",
  "computeResources": {
    "type": "EC2",
    "minvCpus": 0,
    "maxvCpus": 128,
    "desiredvCpus": 48,
    "instanceTypes": [
      "c4.large",
      "c4.xlarge",
      "c4.2xlarge",
      "c4.4xlarge",
      "c4.8xlarge"
    ],
    "subnets": [
      "subnet-220c0e0a",
      "subnet-1a95556d",
      "subnet-978f6dce"
    ],
    "securityGroupIds": [
      "sg-cf5093b2"
    ],
    "ec2KeyPair": "id_rsa",
    "instanceRole": "ecsInstanceRole",
    "tags": {
      "Name": "Batch Instance - C4OnDemand"
    }
  },
  "serviceRole": "arn:aws:iam::012345678910:role/AWSBatchServiceRole"
}
```
출력:  

```
{
    "computeEnvironmentName": "C4OnDemand",
    "computeEnvironmentArn": "arn:aws:batch:us-east-1:012345678910:compute-environment/C4OnDemand"
}
```
**스팟 인스턴스를 사용하여 관리형 컴퓨팅 환경을 생성하는 방법**  
이 예제에서는 스팟 입찰 가격이 인스턴스 유형에 대한 온디맨드 가격의 20% 이하일 때 시작되는 M4 인스턴스 유형을 사용하여 관리형 컴퓨팅 환경을 생성합니다. 이 컴퓨팅 환경을 M4Spot이라고 합니다.  
명령:  

```
aws batch create-compute-environment --cli-input-json file://<path_to_json_file>/M4Spot.json
```
JSON 파일 형식:  

```
{
  "computeEnvironmentName": "M4Spot",
  "type": "MANAGED",
  "state": "ENABLED",
  "computeResources": {
    "type": "SPOT",
    "spotIamFleetRole": "arn:aws:iam::012345678910:role/aws-ec2-spot-fleet-role",
    "minvCpus": 0,
    "maxvCpus": 128,
    "desiredvCpus": 4,
    "instanceTypes": [
      "m4"
    ],
    "bidPercentage": 20,
    "subnets": [
      "subnet-220c0e0a",
      "subnet-1a95556d",
      "subnet-978f6dce"
    ],
    "securityGroupIds": [
      "sg-cf5093b2"
    ],
    "ec2KeyPair": "id_rsa",
    "instanceRole": "ecsInstanceRole",
    "tags": {
      "Name": "Batch Instance - M4Spot"
    }
  },
  "serviceRole": "arn:aws:iam::012345678910:role/AWSBatchServiceRole"
}
```
출력:  

```
{
    "computeEnvironmentName": "M4Spot",
    "computeEnvironmentArn": "arn:aws:batch:us-east-1:012345678910:compute-environment/M4Spot"
}
```
+  API 세부 정보는 *AWS CLI 명령 참조*의 [CreateComputeEnvironment](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/batch/create-compute-environment.html)를 참조하세요.

### `create-job-queue`
<a name="batch_CreateJobQueue_cli_topic"></a>

다음 코드 예시는 `create-job-queue`의 사용 방법을 보여줍니다.

**AWS CLI**  
**단일 컴퓨팅 환경을 사용하여 낮은 우선순위 작업 대기열을 생성하는 방법**  
이 예제에서는 M4Spot 컴퓨팅 환경을 사용하는 LowPriority라고 하는 작업 대기열을 생성합니다.  
명령:  

```
aws batch create-job-queue --cli-input-json file://<path_to_json_file>/LowPriority.json
```
JSON 파일 형식:  

```
{
  "jobQueueName": "LowPriority",
  "state": "ENABLED",
  "priority": 10,
  "computeEnvironmentOrder": [
    {
      "order": 1,
      "computeEnvironment": "M4Spot"
    }
  ]
}
```
출력:  

```
{
    "jobQueueArn": "arn:aws:batch:us-east-1:012345678910:job-queue/LowPriority",
    "jobQueueName": "LowPriority"
}
```
**두 개의 컴퓨팅 환경을 사용하여 높은 우선순위 작업 대기열을 생성하는 방법**  
이 예제에서는 순서가 1인 C4OnDemand 컴퓨팅 환경과 순서가 2인 M4Spot 컴퓨팅 환경을 사용하는 HighPriority라고 하는 작업 대기열을 생성합니다. 스케줄러는 먼저 C4OnDemand 컴퓨팅 환경에 작업을 배치하려고 시도합니다.  
명령:  

```
aws batch create-job-queue --cli-input-json file://<path_to_json_file>/HighPriority.json
```
JSON 파일 형식:  

```
{
  "jobQueueName": "HighPriority",
  "state": "ENABLED",
  "priority": 1,
  "computeEnvironmentOrder": [
    {
      "order": 1,
      "computeEnvironment": "C4OnDemand"
    },
    {
      "order": 2,
      "computeEnvironment": "M4Spot"
    }
  ]
}
```
출력:  

```
{
    "jobQueueArn": "arn:aws:batch:us-east-1:012345678910:job-queue/HighPriority",
    "jobQueueName": "HighPriority"
}
```
+  API 세부 정보는 *AWS CLI 명령 참조*의 [CreateJobQueue](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/batch/create-job-queue.html)를 참조하세요.

### `delete-compute-environment`
<a name="batch_DeleteComputeEnvironment_cli_topic"></a>

다음 코드 예시는 `delete-compute-environment`의 사용 방법을 보여줍니다.

**AWS CLI**  
**컴퓨팅 환경을 삭제하는 방법**  
이 예제에서는 P2OnDemand 컴퓨팅 환경을 삭제합니다.  
명령:  

```
aws batch delete-compute-environment --compute-environment P2OnDemand
```
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DeleteComputeEnvironment](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/batch/delete-compute-environment.html)를 참조하세요.

### `delete-job-queue`
<a name="batch_DeleteJobQueue_cli_topic"></a>

다음 코드 예시는 `delete-job-queue`의 사용 방법을 보여줍니다.

**AWS CLI**  
**대기열을 삭제하는 방법**  
이 예제에서는 GPGPU 작업 대기열을 삭제합니다.  
명령:  

```
aws batch delete-job-queue --job-queue GPGPU
```
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DeleteJobQueue](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/batch/delete-job-queue.html)를 참조하세요.

### `deregister-job-definition`
<a name="batch_DeregisterJobDefinition_cli_topic"></a>

다음 코드 예시는 `deregister-job-definition`의 사용 방법을 보여줍니다.

**AWS CLI**  
**작업 정의의 등록을 취소하는 방법**  
이 예제에서는 sleep10이라고 하는 작업 정의의 등록을 취소합니다.  
명령:  

```
aws batch deregister-job-definition --job-definition sleep10
```
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DeregisterJobDefinition](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/batch/deregister-job-definition.html)을 참조하세요.

### `describe-compute-environments`
<a name="batch_DescribeComputeEnvironments_cli_topic"></a>

다음 코드 예시는 `describe-compute-environments`의 사용 방법을 보여줍니다.

**AWS CLI**  
**컴퓨팅 환경을 설명하는 방법**  
이 예시에서는 P2Ondemand 컴퓨팅 환경을 설명합니다.  
명령:  

```
aws batch describe-compute-environments --compute-environments P2OnDemand
```
출력:  

```
{
    "computeEnvironments": [
        {
            "status": "VALID",
            "serviceRole": "arn:aws:iam::012345678910:role/AWSBatchServiceRole",
            "computeEnvironmentArn": "arn:aws:batch:us-east-1:012345678910:compute-environment/P2OnDemand",
            "computeResources": {
                "subnets": [
                    "subnet-220c0e0a",
                    "subnet-1a95556d",
                    "subnet-978f6dce"
                ],
                "tags": {
                    "Name": "Batch Instance - P2OnDemand"
                },
                "desiredvCpus": 48,
                "minvCpus": 0,
                "instanceTypes": [
                    "p2"
                ],
                "securityGroupIds": [
                    "sg-cf5093b2"
                ],
                "instanceRole": "ecsInstanceRole",
                "maxvCpus": 128,
                "type": "EC2",
                "ec2KeyPair": "id_rsa"
            },
            "statusReason": "ComputeEnvironment Healthy",
            "ecsClusterArn": "arn:aws:ecs:us-east-1:012345678910:cluster/P2OnDemand_Batch_2c06f29d-d1fe-3a49-879d-42394c86effc",
            "state": "ENABLED",
            "computeEnvironmentName": "P2OnDemand",
            "type": "MANAGED"
        }
    ]
}
```
+  API 세부 정보는 **AWS CLI 명령 참조의 [DescribeComputeEnvironments](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/batch/describe-compute-environments.html)를 참조하세요.

### `describe-job-definitions`
<a name="batch_DescribeJobDefinitions_cli_topic"></a>

다음 코드 예시는 `describe-job-definitions`의 사용 방법을 보여줍니다.

**AWS CLI**  
**활성 작업 정의를 설명하는 방법**  
이 예제에서는 모든 활성 작업 정의를 설명합니다.  
명령:  

```
aws batch describe-job-definitions --status ACTIVE
```
출력:  

```
{
    "jobDefinitions": [
        {
            "status": "ACTIVE",
            "jobDefinitionArn": "arn:aws:batch:us-east-1:012345678910:job-definition/sleep60:1",
            "containerProperties": {
                "mountPoints": [],
                "parameters": {},
                "image": "busybox",
                "environment": {},
                "vcpus": 1,
                "command": [
                    "sleep",
                    "60"
                ],
                "volumes": [],
                "memory": 128,
                "ulimits": []
            },
            "type": "container",
            "jobDefinitionName": "sleep60",
            "revision": 1
        }
    ]
}
```
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DescribeJobDefinitions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/batch/describe-job-definitions.html)를 참조하세요.

### `describe-job-queues`
<a name="batch_DescribeJobQueues_cli_topic"></a>

다음 코드 예시는 `describe-job-queues`의 사용 방법을 보여줍니다.

**AWS CLI**  
**작업 대기열을 설명하는 방법**  
이 예제에서는 HighPriority 작업 대기열을 설명합니다.  
명령:  

```
aws batch describe-job-queues --job-queues HighPriority
```
출력:  

```
{
    "jobQueues": [
        {
            "status": "VALID",
            "jobQueueArn": "arn:aws:batch:us-east-1:012345678910:job-queue/HighPriority",
            "computeEnvironmentOrder": [
                {
                    "computeEnvironment": "arn:aws:batch:us-east-1:012345678910:compute-environment/C4OnDemand",
                    "order": 1
                }
            ],
            "statusReason": "JobQueue Healthy",
            "priority": 1,
            "state": "ENABLED",
            "jobQueueName": "HighPriority"
        }
    ]
}
```
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DescribeJobQueues](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/batch/describe-job-queues.html)를 참조하세요.

### `describe-jobs`
<a name="batch_DescribeJobs_cli_topic"></a>

다음 코드 예시는 `describe-jobs`의 사용 방법을 보여줍니다.

**AWS CLI**  
**작업을 설명하는 방법**  
다음 `describe-jobs` 예제에서는 지정된 작업 ID가 있는 작업을 설명합니다.  

```
aws batch describe-jobs \
    --jobs bcf0b186-a532-4122-842e-2ccab8d54efb
```
출력:  

```
{
    "jobs": [
        {
            "status": "SUBMITTED",
            "container": {
                "mountPoints": [],
                "image": "busybox",
                "environment": [],
                "vcpus": 1,
                "command": [
                    "sleep",
                    "60"
                ],
                "volumes": [],
                "memory": 128,
                "ulimits": []
            },
            "parameters": {},
            "jobDefinition": "arn:aws:batch:us-east-1:012345678910:job-definition/sleep60:1",
            "jobQueue": "arn:aws:batch:us-east-1:012345678910:job-queue/HighPriority",
            "jobId": "bcf0b186-a532-4122-842e-2ccab8d54efb",
            "dependsOn": [],
            "jobName": "example",
            "createdAt": 1480483387803
        }
    ]
}
```
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DescribeJobs](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/batch/describe-jobs.html)를 참조하세요.

### `list-jobs`
<a name="batch_ListJobs_cli_topic"></a>

다음 코드 예시는 `list-jobs`의 사용 방법을 보여줍니다.

**AWS CLI**  
**실행 중인 작업을 나열하는 방법**  
이 예제에서는 HighPriority 작업 대기열에서 실행 중인 작업을 나열합니다.  
명령:  

```
aws batch list-jobs --job-queue HighPriority
```
출력:  

```
{
    "jobSummaryList": [
        {
            "jobName": "example",
            "jobId": "e66ff5fd-a1ff-4640-b1a2-0b0a142f49bb"
        }
    ]
}
```
**제출된 작업을 나열하는 방법**  
이 예제에서는 HighPriority 작업 대기열에서 SUBMITTED 작업 상태인 작업을 나열합니다.  
명령:  

```
aws batch list-jobs --job-queue HighPriority --job-status SUBMITTED
```
출력:  

```
{
    "jobSummaryList": [
        {
            "jobName": "example",
            "jobId": "68f0c163-fbd4-44e6-9fd1-25b14a434786"
        }
    ]
}
```
+  API 세부 정보는 *AWS CLI 명령 참조*의 [ListJobs](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/batch/list-jobs.html)를 참조하세요.

### `register-job-definition`
<a name="batch_RegisterJobDefinition_cli_topic"></a>

다음 코드 예시는 `register-job-definition`의 사용 방법을 보여줍니다.

**AWS CLI**  
**작업 정의를 등록하는 방법**  
이 예제에서는 간단한 컨테이너 작업에 대한 작업 정의를 등록합니다.  
명령:  

```
aws batch register-job-definition --job-definition-name sleep30 --type container --container-properties '{ "image": "busybox", "vcpus": 1, "memory": 128, "command": [ "sleep", "30"]}'
```
출력:  

```
{
    "jobDefinitionArn": "arn:aws:batch:us-east-1:012345678910:job-definition/sleep30:1",
    "jobDefinitionName": "sleep30",
    "revision": 1
}
```
+  API 세부 정보는 *AWS CLI 명령 참조*의 [RegisterJobDefinition](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/batch/register-job-definition.html)을 참조하세요.

### `submit-job`
<a name="batch_SubmitJob_cli_topic"></a>

다음 코드 예시는 `submit-job`의 사용 방법을 보여줍니다.

**AWS CLI**  
**작업을 제출하는 방법**  
이 예제에서는 예제라고 하는 간단한 컨테이너 작업을 HighPriority 작업 대기열에 제출합니다.  
명령:  

```
aws batch submit-job --job-name example --job-queue HighPriority  --job-definition sleep60
```
출력:  

```
{
    "jobName": "example",
    "jobId": "876da822-4198-45f2-a252-6cea32512ea8"
}
```
+  API 세부 정보는 *AWS CLI 명령 참조*의 [SubmitJob](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/batch/submit-job.html)을 참조하세요.

### `terminate-job`
<a name="batch_TerminateJob_cli_topic"></a>

다음 코드 예시는 `terminate-job`의 사용 방법을 보여줍니다.

**AWS CLI**  
**작업을 종료하는 방법**  
이 예제에서는 지정된 작업 ID가 있는 작업을 종료합니다.  
명령:  

```
aws batch terminate-job --job-id 61e743ed-35e4-48da-b2de-5c8333821c84 --reason "Terminating job."
```
+  API 세부 정보는 *AWS CLI 명령 참조*의 [TerminateJob](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/batch/terminate-job.html)을 참조하세요.

### `update-compute-environment`
<a name="batch_UpdateComputeEnvironment_cli_topic"></a>

다음 코드 예시는 `update-compute-environment`의 사용 방법을 보여줍니다.

**AWS CLI**  
**컴퓨팅 환경을 업데이트하는 방법**  
이 예제에서는 P2OnDemand 컴퓨팅 환경이 삭제될 수 있도록 이 환경을 비활성화합니다.  
명령:  

```
aws batch update-compute-environment --compute-environment P2OnDemand --state DISABLED
```
출력:  

```
{
    "computeEnvironmentName": "P2OnDemand",
    "computeEnvironmentArn": "arn:aws:batch:us-east-1:012345678910:compute-environment/P2OnDemand"
}
```
+  API 세부 정보는 *AWS CLI 명령 참조*의 [UpdateComputeEnvironment](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/batch/update-compute-environment.html)를 참조하세요.

### `update-job-queue`
<a name="batch_UpdateJobQueue_cli_topic"></a>

다음 코드 예시는 `update-job-queue`의 사용 방법을 보여줍니다.

**AWS CLI**  
**작업 대기열을 업데이트하는 방법**  
이 예제에서는 작업 대기열이 삭제될 수 있도록 이 작업 대기열을 비활성화합니다.  
명령:  

```
aws batch update-job-queue --job-queue GPGPU --state DISABLED
```
출력:  

```
{
    "jobQueueArn": "arn:aws:batch:us-east-1:012345678910:job-queue/GPGPU",
    "jobQueueName": "GPGPU"
}
```
+  API 세부 정보는 *AWS CLI 명령 참조*의 [UpdateJobQueue](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/batch/update-job-queue.html)를 참조하세요.