View a markdown version of this page

Memulai dengan AWS Batch dan Fargate menggunakan AWS CLI - AWS Batch

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

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

Prasyarat

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

  1. The AWS CLI. Jika Anda perlu menginstalnya, ikuti panduan AWS CLI instalasi. Anda juga dapat menggunakan AWS CloudShell, yang mencakup AWS CLI.

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

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

  4. Bagaimana AWS Batch bekerja dengan IAMuntuk membuat dan mengelola AWS Batch sumber daya, peran IAM, dan sumber daya VPC di Anda. Akun AWS

  5. ID subnet dan ID grup keamanan dari VPC di Anda. Akun AWS Jika Anda tidak memiliki VPC, Anda dapat membuatnya. Untuk informasi selengkapnya tentang penggunaan AWS CLI untuk mengambil sumber daya ini IDs, lihat mendeskripsikan subnet dan describe-security-groupsdi Referensi 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 $0,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.

Buat peran eksekusi IAM

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

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

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 ditampilkanVALID, lingkungan komputasi Anda siap menerima pekerjaan.

Membuat antrean tugas

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

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 AWS Region 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. assignPublicIpPengaturan diaktifkan sehingga wadah dapat menarik gambar busybox dari Docker Hub.

Kirim dan pantau pekerjaan

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 atauFAILED.

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 ditampilkanSUCCEEDED, pekerjaan Anda telah selesai dengan sukses.

Lihat output pekerjaan

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

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

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 dan Praktik Terbaik Keamanan.AWS

Langkah selanjutnya

Sekarang setelah Anda menyelesaikan tutorial ini, Anda dapat menjelajahi AWS Batch fitur-fitur yang lebih canggih: