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
Topik
Prasyarat
Sebelum Anda memulai tutorial ini, pastikan Anda memiliki yang berikut ini.
-
The AWS CLI. Jika Anda perlu menginstalnya, ikuti panduan AWS CLI instalasi. Anda juga dapat menggunakan AWS CloudShell, yang mencakup AWS CLI.
-
Konfigurasikan Anda AWS CLI dengan kredensi yang sesuai. Jalankan
aws configurejika Anda belum menyiapkan kredensional Anda. -
Keakraban dasar dengan antarmuka baris perintah dan konsep kontainerisasi.
-
Bagaimana AWS Batch bekerja dengan IAMuntuk membuat dan mengelola AWS Batch sumber daya, peran IAM, dan sumber daya VPC di Anda. Akun AWS
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-groups
di 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 --jobs1509xmpl-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
Langkah selanjutnya
Sekarang setelah Anda menyelesaikan tutorial ini, Anda dapat menjelajahi AWS Batch fitur-fitur yang lebih canggih:
-
Antrean tugas— Pelajari tentang penjadwalan antrian pekerjaan dan manajemen prioritas
-
Ketentuan tugas— Jelajahi konfigurasi definisi pekerjaan lanjutan termasuk variabel lingkungan, volume, dan strategi coba lagi
-
Menghitung lingkungan untuk AWS Batch— Memahami berbagai jenis lingkungan komputasi dan opsi penskalaan
-
Tugas paralel multisimpul— Jalankan pekerjaan yang menjangkau beberapa node komputasi
-
Tugas array— Kirim sejumlah besar pekerjaan serupa secara efisien
-
Praktik terbaik untuk AWS Batch— Pelajari teknik pengoptimalan untuk beban kerja produksi