

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

# Memulai dengan AWS Batch dan Fargate menggunakan AWS CLI
<a name="getting-started-with-fargate-using-the-aws-cli"></a>

Tutorial ini menunjukkan cara mengatur AWS Batch dengan AWS Fargate orkestrasi dan menjalankan pekerjaan “Hello World” sederhana menggunakan (). AWS Command Line Interface AWS CLI Anda akan belajar cara membuat lingkungan komputasi, antrian pekerjaan, definisi pekerjaan, dan mengirimkan pekerjaan ke. AWS Batch

**Topics**
+ [

## Prasyarat
](#prerequisites)
+ [

## Buat peran eksekusi IAM
](#tutorial-fargate-using-the-aws-cli-create-an-iam-execution-role)
+ [

## Membuat lingkungan komputasi
](#create-a-compute-environment)
+ [

## Membuat antrean tugas
](#cli-create-a-job-queue)
+ [

## Buat definisi pekerjaan
](#cli-create-a-job-definition)
+ [

## Kirim dan pantau pekerjaan
](#cli-submit-and-monitor-a-job)
+ [

## Lihat output pekerjaan
](#cli-view-job-output)
+ [

## Pembersihan sumber daya
](#cli-clean-up-resources)
+ [

## Pergi ke produksi
](#cli-going-to-production)
+ [

## Langkah selanjutnya
](#cli-next-steps)

## Prasyarat
<a name="prerequisites"></a>

Sebelum Anda memulai tutorial ini, pastikan Anda memiliki yang berikut ini.

1. The AWS CLI. Jika Anda perlu menginstalnya, ikuti [panduan AWS CLI instalasi](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). Anda juga dapat [menggunakan AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html), yang mencakup AWS CLI.

1. Konfigurasikan Anda AWS CLI dengan kredensi yang sesuai. Jalankan `aws configure` jika Anda belum menyiapkan kredensional Anda.

1. Keakraban dasar dengan antarmuka baris perintah dan konsep kontainerisasi.

1. [Bagaimana AWS Batch bekerja dengan IAM](security_iam_service-with-iam.md)untuk membuat dan mengelola AWS Batch sumber daya, peran IAM, dan sumber daya VPC di Anda. Akun AWS

1. ID subnet dan ID grup keamanan dari VPC di Anda. Akun AWS Jika Anda tidak memiliki VPC, Anda dapat [membuatnya](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html). *Untuk informasi selengkapnya tentang penggunaan AWS CLI untuk mengambil sumber daya ini IDs, lihat [mendeskripsikan subnet dan [describe-security-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-security-groups.html)di Referensi](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-subnets.html) Perintah.AWS CLI *

**Waktu yang Diperlukan**: Sekitar 15-20 menit untuk menyelesaikan tutorial ini.

**Biaya**: Tutorial ini menggunakan sumber daya komputasi Fargate. Perkiraan biaya untuk menyelesaikan tutorial ini kurang dari \$10,01 USD, dengan asumsi Anda mengikuti instruksi pembersihan untuk menghapus sumber daya segera setelah selesai. Harga Fargate didasarkan pada vCPU dan sumber daya memori yang dikonsumsi, diisi per detik dengan minimum 1 menit. Untuk informasi harga saat ini, lihat [AWS Fargate harga](https://aws.amazon.com/fargate/pricing/).

## Buat peran eksekusi IAM
<a name="tutorial-fargate-using-the-aws-cli-create-an-iam-execution-role"></a>

AWS Batch memerlukan peran eksekusi yang memungkinkan agen Amazon Elastic Container Service (Amazon ECS) AWS melakukan panggilan API atas nama Anda. Peran ini diperlukan untuk tugas Fargate untuk menarik gambar kontainer dan menulis log ke Amazon. CloudWatch

**Buat dokumen kebijakan kepercayaan**

Pertama, buat kebijakan kepercayaan yang memungkinkan layanan tugas Amazon ECS untuk mengambil peran tersebut.

```
cat > batch-execution-role-trust-policy.json << EOF
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ecs-tasks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
EOF
```

**Buat peran eksekusi**

Perintah berikut membuat peran IAM bernama `BatchEcsTaskExecutionRoleTutorial` menggunakan kebijakan kepercayaan yang baru saja Anda buat.

```
aws iam create-role \
    --role-name BatchEcsTaskExecutionRoleTutorial \
    --assume-role-policy-document file://batch-execution-role-trust-policy.json
```

**Lampirkan kebijakan yang diperlukan**

Lampirkan kebijakan AWS terkelola yang memberikan izin yang diperlukan untuk eksekusi tugas Amazon ECS.

```
aws iam attach-role-policy \
    --role-name BatchEcsTaskExecutionRoleTutorial \
    --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
```

Peran tersebut sekarang siap digunakan oleh AWS Batch untuk eksekusi tugas Fargate.

## Membuat lingkungan komputasi
<a name="create-a-compute-environment"></a>

Lingkungan komputasi mendefinisikan sumber daya komputasi tempat pekerjaan batch Anda akan berjalan. Untuk tutorial ini, Anda akan membuat lingkungan komputasi Fargate terkelola yang secara otomatis menyediakan dan menskalakan sumber daya berdasarkan persyaratan pekerjaan.

**Buat lingkungan komputasi**

Perintah berikut menciptakan lingkungan komputasi Fargate. Ganti contoh subnet dan grup keamanan IDs dengan subnet Anda sendiri per. [Prasyarat](#prerequisites)

```
aws batch create-compute-environment \
    --compute-environment-name my-fargate-compute-env \
    --type MANAGED \
    --state ENABLED \
    --compute-resources type=FARGATE,maxvCpus=128,subnets=subnet-a123456b,securityGroupIds=sg-a12b3456
```

Berikut ini menunjukkan bagaimana output terlihat ketika perintah berjalan dengan sukses.

```
{
    "computeEnvironmentName": "my-fargate-compute-env",
    "computeEnvironmentArn": "arn:aws:batch:us-west-2:123456789012:compute-environment/my-fargate-compute-env"
}
```

**Tunggu hingga lingkungan komputasi siap**

Periksa status lingkungan komputasi Anda untuk memastikannya siap sebelum melanjutkan.

```
aws batch describe-compute-environments \
    --compute-environments my-fargate-compute-env \
    --query 'computeEnvironments[0].status'
```

```
"VALID"
```

Saat status ditampilkan`VALID`, lingkungan komputasi Anda siap menerima pekerjaan.

## Membuat antrean tugas
<a name="cli-create-a-job-queue"></a>

Antrian pekerjaan menyimpan pekerjaan yang dikirimkan hingga AWS Batch penjadwal menjalankannya pada sumber daya di lingkungan komputasi Anda. Pekerjaan diproses dalam urutan prioritas dalam antrian.

**Buat antrian pekerjaan**

Perintah berikut membuat antrian pekerjaan dengan prioritas 900 yang menggunakan lingkungan komputasi Fargate Anda.

```
aws batch create-job-queue \
    --job-queue-name my-fargate-job-queue \
    --state ENABLED \
    --priority 900 \
    --compute-environment-order order=1,computeEnvironment=my-fargate-compute-env
```

Berikut ini menunjukkan bagaimana output terlihat ketika perintah berjalan dengan sukses.

```
{
    "jobQueueName": "my-fargate-job-queue",
    "jobQueueArn": "arn:aws:batch:us-west-2:123456789012:job-queue/my-fargate-job-queue"
}
```

**Verifikasi antrian pekerjaan sudah siap**

Periksa apakah antrian pekerjaan Anda ada di `ENABLED` negara bagian dan siap menerima pekerjaan.

```
aws batch describe-job-queues \
    --job-queues my-fargate-job-queue \
    --query 'jobQueues[0].state' "ENABLED"
```

## Buat definisi pekerjaan
<a name="cli-create-a-job-definition"></a>

Definisi pekerjaan menentukan bagaimana pekerjaan akan dijalankan, termasuk image Docker yang akan digunakan, persyaratan sumber daya, dan parameter lainnya. Untuk Fargate, Anda akan menggunakan persyaratan sumber daya alih-alih vCPU tradisional dan parameter memori.

**Buat definisi pekerjaan**

Perintah berikut membuat definisi pekerjaan yang menjalankan perintah “hello world” sederhana menggunakan gambar container busybox. Ganti `123456789012` dengan Akun AWS ID Anda yang sebenarnya dan ganti contoh Wilayah AWS dengan milik Anda sendiri.

```
aws batch register-job-definition \
    --job-definition-name my-fargate-job-def \
    --type container \
    --platform-capabilities FARGATE \
    --container-properties '{
        "image": "busybox",
        "resourceRequirements": [
            {"type": "VCPU", "value": "0.25"},
            {"type": "MEMORY", "value": "512"}
        ],
        "command": ["echo", "hello world"],
        "networkConfiguration": {
            "assignPublicIp": "ENABLED"
        },
        "executionRoleArn": "arn:aws:iam::123456789012:role/BatchEcsTaskExecutionRoleTutorial"
    },
{
    "jobDefinitionName": "my-fargate-job-def",
    "jobDefinitionArn": "arn:aws:batch:us-west-2:123456789012:job-definition/my-fargate-job-def:1",
    "revision": 1
}'
```

Definisi pekerjaan menentukan 0,25 vCPU dan 512 MB memori, yang merupakan sumber daya minimum untuk tugas Fargate. `assignPublicIp`Pengaturan diaktifkan sehingga wadah dapat menarik gambar busybox dari Docker Hub.

## Kirim dan pantau pekerjaan
<a name="cli-submit-and-monitor-a-job"></a>

Sekarang setelah Anda memiliki semua komponen yang diperlukan, Anda dapat mengirimkan pekerjaan ke antrian Anda dan memantau perkembangannya.

**Kirim pekerjaan**

Perintah berikut mengirimkan pekerjaan ke antrian Anda menggunakan definisi pekerjaan yang Anda buat.

```
aws batch submit-job \
    --job-name my-hello-world-job \
    --job-queue my-fargate-job-queue \
    --job-definition my-fargate-job-def
```

Berikut ini menunjukkan bagaimana output terlihat ketika perintah berjalan dengan sukses.

```
{
    "jobArn": "arn:aws:batch:us-west-2:123456789012:job/my-hello-world-job",
    "jobName": "my-hello-world-job",
    "jobId": "1509xmpl-4224-4da6-9ba9-1d1acc96431a"
}
```

Catat yang `jobId` dikembalikan dalam respons, karena Anda akan menggunakannya untuk memantau kemajuan pekerjaan.

**Pantau status pekerjaan**

Gunakan ID pekerjaan untuk memeriksa status pekerjaan Anda. Pekerjaan akan berkembang melalui beberapa negara bagian:`SUBMITTED`,,`PENDING`,`RUNNABLE`,`STARTING`,`RUNNING`, dan akhirnya `SUCCEEDED` atau`FAILED`.

```
aws batch describe-jobs --jobs 1509xmpl-4224-4da6-9ba9-1d1acc96431a
```

Berikut ini menunjukkan bagaimana output terlihat ketika perintah berjalan dengan sukses.

```
{
    "jobs": [
        {
            "jobArn": "arn:aws:batch:us-west-2:123456789012:job/my-hello-world-job",
            "jobName": "my-hello-world-job",
            "jobId": "1509xmpl-4224-4da6-9ba9-1d1acc96431a",
            "jobQueue": "arn:aws:batch:us-west-2:123456789012:job-queue/my-fargate-job-queue",
            "status": "SUCCEEDED",
            "createdAt": 1705161908000,
            "jobDefinition": "arn:aws:batch:us-west-2:123456789012:job-definition/my-fargate-job-def:1"
        }
    ]
}
```

Ketika status ditampilkan`SUCCEEDED`, pekerjaan Anda telah selesai dengan sukses.

## Lihat output pekerjaan
<a name="cli-view-job-output"></a>

Setelah pekerjaan Anda selesai, Anda dapat melihat outputnya di Amazon CloudWatch Logs.

**Dapatkan nama log stream**

Pertama, ambil nama aliran log dari detail pekerjaan. Ganti contoh ID pekerjaan dengan ID Anda sendiri.

```
aws batch describe-jobs --jobs 1509xmpl-4224-4da6-9ba9-1d1acc96431a \
    --query 'jobs[0].attempts[0].containers[0].logStreamName' \
    --output text
```

```
my-fargate-job-def/default/1509xmpl-4224-4da6-9ba9-1d1acc96431a
```

**Lihat log pekerjaan**

Gunakan nama aliran log untuk mengambil output pekerjaan dari CloudWatch Log.

```
aws logs get-log-events \
    --log-group-name /aws/batch/job \
    --log-stream-name my-fargate-job-def/default/1509xmpl-4224-4da6-9ba9-1d1acc96431a \
    --query 'events[*].message' \
    --output text
```

Outputnya menunjukkan “hello world”, mengonfirmasi bahwa pekerjaan Anda berhasil berjalan.

## Pembersihan sumber daya
<a name="cli-clean-up-resources"></a>

Untuk menghindari biaya yang sedang berlangsung, bersihkan sumber daya yang Anda buat dalam tutorial ini. Anda harus menghapus sumber daya dalam urutan yang benar karena dependensi.

**Nonaktifkan dan hapus antrian pekerjaan**

Pertama, nonaktifkan antrian pekerjaan, lalu hapus.

```
aws batch update-job-queue \
    --job-queue my-fargate-job-queue \
    --state DISABLED
```

```
aws batch delete-job-queue \
    --job-queue my-fargate-job-queue
```

**Nonaktifkan dan hapus lingkungan komputasi**

Setelah antrian pekerjaan dihapus, nonaktifkan dan hapus lingkungan komputasi.

```
aws batch update-compute-environment \
    --compute-environment my-fargate-compute-env \
    --state DISABLED
```

```
aws batch delete-compute-environment \
    --compute-environment my-fargate-compute-env
```

**Bersihkan peran IAM**

Hapus lampiran kebijakan dan hapus peran IAM.

```
aws iam detach-role-policy \
    --role-name BatchEcsTaskExecutionRoleTutorial \
    --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
```

```
aws iam delete-role \
    --role-name BatchEcsTaskExecutionRoleTutorial
```

**Hapus file sementara**

Hapus file kebijakan kepercayaan yang Anda buat.

```
rm batch-execution-role-trust-policy.json
```

Semua sumber daya telah berhasil dibersihkan.

## Pergi ke produksi
<a name="cli-going-to-production"></a>

Tutorial ini dirancang untuk membantu Anda memahami cara AWS Batch kerja dengan Fargate. Untuk penyebaran produksi, pertimbangkan persyaratan tambahan berikut:

**Pertimbangan keamanan:**
+ Buat grup keamanan khusus dengan akses minimal yang diperlukan alih-alih menggunakan grup keamanan default
+ Gunakan subnet pribadi dengan NAT Gateway alih-alih penetapan IP publik untuk kontainer
+ Simpan gambar kontainer di Amazon ECR alih-alih menggunakan repositori publik
+ Menerapkan titik akhir VPC untuk komunikasi AWS layanan untuk menghindari lalu lintas internet

**Pertimbangan arsitektur:**
+ Terapkan di beberapa Availability Zone untuk ketersediaan tinggi
+ Menerapkan strategi coba lagi pekerjaan dan antrian surat mati untuk penanganan kesalahan
+ Gunakan beberapa antrian pekerjaan dengan prioritas berbeda untuk manajemen beban kerja
+ Konfigurasikan kebijakan penskalaan otomatis berdasarkan kedalaman antrian dan pemanfaatan sumber daya
+ Menerapkan pemantauan dan peringatan untuk kegagalan pekerjaan dan pemanfaatan sumber daya

**Pertimbangan operasional:**
+ Siapkan CloudWatch dasbor dan alarm untuk pemantauan
+ Menerapkan jalur pencatatan dan audit yang tepat
+ Gunakan CloudFormation atau AWS CDK untuk infrastruktur sebagai kode
+ Menetapkan prosedur cadangan dan pemulihan bencana

[Untuk panduan komprehensif tentang arsitektur siap produksi, lihat Kerangka Kerja [AWS Well-Architected](https://aws.amazon.com/architecture/well-architected/) dan Praktik Terbaik Keamanan.AWS](https://aws.amazon.com/architecture/security-identity-compliance/)

## Langkah selanjutnya
<a name="cli-next-steps"></a>

Sekarang setelah Anda menyelesaikan tutorial ini, Anda dapat menjelajahi AWS Batch fitur-fitur yang lebih canggih:
+ [Antrean tugas](job_queues.md)— Pelajari tentang penjadwalan antrian pekerjaan dan manajemen prioritas
+ [Ketentuan tugas](job_definitions.md)— Jelajahi konfigurasi definisi pekerjaan lanjutan termasuk variabel lingkungan, volume, dan strategi coba lagi
+ [Menghitung lingkungan untuk AWS Batch](compute_environments.md)— Memahami berbagai jenis lingkungan komputasi dan opsi penskalaan
+ [Tugas paralel multisimpul](multi-node-parallel-jobs.md)— Jalankan pekerjaan yang menjangkau beberapa node komputasi
+ [Tugas array](array_jobs.md)— Kirim sejumlah besar pekerjaan serupa secara efisien
+ [Praktik terbaik untuk AWS Batch](best-practices.md)— Pelajari teknik pengoptimalan untuk beban kerja produksi