Tutorial: Menggunakan indeks pekerjaan array untuk mengontrol diferensiasi pekerjaan - AWS Batch

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

Tutorial: Menggunakan indeks pekerjaan array untuk mengontrol diferensiasi pekerjaan

Tutorial ini menjelaskan cara menggunakan variabel AWS_BATCH_JOB_ARRAY_INDEX lingkungan untuk membedakan pekerjaan anak. Setiap pekerjaan anak ditugaskan ke variabel ini. Contoh menggunakan nomor indeks pekerjaan anak untuk membaca baris tertentu dalam file. Kemudian, ia mengganti parameter yang terkait dengan nomor baris itu dengan perintah di dalam wadah pekerjaan. Hasilnya adalah Anda dapat memiliki beberapa AWS Batch pekerjaan yang menjalankan gambar Docker dan argumen perintah yang sama. Namun, hasilnya berbeda karena indeks pekerjaan array digunakan sebagai pengubah.

Dalam tutorial ini, Anda membuat file teks yang memiliki semua warna pelangi, dengan setiap warna memiliki barisnya masing-masing. Kemudian, Anda membuat skrip titik masuk untuk wadah Docker yang mengubah indeks menjadi nilai yang dapat digunakan untuk nomor baris dalam file warna. Indeks dimulai dari nol, tetapi nomor baris dimulai dari satu. Buat Dockerfile yang menyalin file warna dan indeks ke gambar kontainer dan set ENTRYPOINT untuk gambar ke skrip entrypoint. Dockerfile dan sumber daya dibangun ke gambar Docker yang didorong ke Amazon. ECR Anda kemudian mendaftarkan definisi pekerjaan yang menggunakan gambar kontainer baru Anda, mengirimkan pekerjaan AWS Batch array dengan definisi pekerjaan itu, dan melihat hasilnya.

Prasyarat

Tutorial ini memiliki prasyarat berikut ini:

  • Lingkungan AWS Batch komputasi. Untuk informasi selengkapnya, lihat Membuat lingkungan komputasi.

  • Antrian AWS Batch pekerjaan dan lingkungan komputasi terkait. Untuk informasi selengkapnya, lihat Membuat antrean tugas.

  • Yang AWS CLI diinstal pada sistem lokal Anda. Untuk informasi selengkapnya, lihat Menginstal AWS Command Line Interface dalam Panduan Pengguna AWS Command Line Interface .

  • Docker yang diinstal di sistem lokal Anda. Untuk informasi selengkapnya, lihat Tentang Docker CE dalam dokumentasi Docker.

Langkah 1: Membangun gambar kontainer

Anda dapat menggunakan definisi pekerjaan dalam parameter perintah. AWS_BATCH_JOB_ARRAY_INDEX Namun, kami menyarankan Anda membuat gambar kontainer yang menggunakan variabel dalam skrip entrypoint sebagai gantinya. Bagian ini menjelaskan cara membuat citra kontainer.

Untuk membangun gambar kontainer Docker Anda
  1. Buat direktori baru untuk digunakan sebagai ruang kerja gambar Docker Anda dan buka direktori tersebut.

  2. Buat file bernama colors.txt di direktori ruang kerja Anda dan tempelkan yang berikut ini ke dalamnya.

    red orange yellow green blue indigo violet
  3. Buat file bernama print-color.sh di direktori ruang kerja Anda dan tempelkan yang berikut ini ke dalamnya.

    catatan

    Variabel LINE diatur ke AWS_BATCH_JOB_ARRAY_INDEX + 1 karena indeks array dimulai dari 0, tetapi nomor baris dimulai dari 1. COLORVariabel diatur ke warna colors.txt yang terkait dengan nomor barisnya.

    #!/bin/sh LINE=$((AWS_BATCH_JOB_ARRAY_INDEX + 1)) COLOR=$(sed -n ${LINE}p /tmp/colors.txt) echo My favorite color of the rainbow is $COLOR.
  4. Buat file bernama Dockerfile di direktori ruang kerja Anda dan tempelkan konten berikut ke dalamnya. Dockerfile ini menyalin file sebelumnya ke kontainer Anda dan menetapkan skrip entrypoint yang akan dijalankan ketika kontainer dimulai.

    FROM busybox COPY print-color.sh /tmp/print-color.sh COPY colors.txt /tmp/colors.txt RUN chmod +x /tmp/print-color.sh ENTRYPOINT /tmp/print-color.sh
  5. Bangun gambar Docker Anda.

    $ docker build -t print-color .
  6. Uji kontainer Anda dengan skrip berikut. Skrip ini menetapkan AWS_BATCH_JOB_ARRAY_INDEX variabel ke 0 secara lokal dan kemudian meningkatkannya untuk mensimulasikan apa yang dilakukan oleh pekerjaan array dengan tujuh anak.

    $ AWS_BATCH_JOB_ARRAY_INDEX=0 while [ $AWS_BATCH_JOB_ARRAY_INDEX -le 6 ] do docker run -e AWS_BATCH_JOB_ARRAY_INDEX=$AWS_BATCH_JOB_ARRAY_INDEX print-color AWS_BATCH_JOB_ARRAY_INDEX=$((AWS_BATCH_JOB_ARRAY_INDEX + 1)) done

    Berikut ini adalah outputnya.

    My favorite color of the rainbow is red.
    My favorite color of the rainbow is orange.
    My favorite color of the rainbow is yellow.
    My favorite color of the rainbow is green.
    My favorite color of the rainbow is blue.
    My favorite color of the rainbow is indigo.
    My favorite color of the rainbow is violet.

Langkah 2: Dorong gambar Anda ke Amazon ECR

Sekarang setelah Anda membangun dan menguji wadah Docker Anda, dorong ke repositori gambar. Contoh ini menggunakan AmazonECR, tetapi Anda dapat menggunakan registri lain, seperti DockerHub.

  1. Buat repositori ECR gambar Amazon untuk menyimpan gambar kontainer Anda. Contoh ini hanya menggunakan AWS CLI, tetapi Anda juga dapat menggunakan AWS Management Console. Untuk informasi selengkapnya, lihat Membuat Repositori dalam Panduan Pengguna Amazon Elastic Container Registry.

    $ aws ecr create-repository --repository-name print-color
  2. Tandai print-color gambar Anda dengan ECR repositori Amazon Anda URI yang dikembalikan dari langkah sebelumnya.

    $ docker tag print-color aws_account_id.dkr.ecr.region.amazonaws.com/print-color
  3. Masuk ke ECR registri Amazon Anda. Untuk informasi selengkapnya, lihat Autentikasi Registri dalam Panduan Pengguna Amazon Elastic Container Registry.

    $ aws ecr get-login-password \ --region region | docker login \ --username AWS \ --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
  4. Dorong gambar Anda ke AmazonECR.

    $ docker push aws_account_id.dkr.ecr.region.amazonaws.com/print-color

Langkah 3: Buat dan daftarkan definisi pekerjaan

Sekarang gambar Docker Anda ada di registri gambar, Anda dapat menentukannya dalam definisi AWS Batch pekerjaan. Kemudian, Anda dapat menggunakannya nanti untuk menjalankan pekerjaan array. Contoh ini hanya menggunakan AWS CLI. Namun, Anda juga dapat menggunakan AWS Management Console. Untuk informasi selengkapnya, lihat Membuat definisi pekerjaan simpul tunggal .

Untuk membuat ketentuan tugas
  1. Buat file bernama print-color-job-def.json di direktori ruang kerja Anda dan tempelkan yang berikut ini ke dalamnya. Ganti repositori gambar URI dengan gambar Anda sendiri. URI

    { "jobDefinitionName": "print-color", "type": "container", "containerProperties": { "image": "aws_account_id.dkr.ecr.region.amazonaws.com/print-color", "resourceRequirements": [ { "type": "MEMORY", "value": "250" }, { "type": "VCPU", "value": "1" } ] } }
  2. Daftarkan definisi pekerjaan dengan AWS Batch.

    $ aws batch register-job-definition --cli-input-json file://print-color-job-def.json

Langkah 4: Kirim pekerjaan AWS Batch array

Setelah Anda mendaftarkan definisi pekerjaan Anda, Anda dapat mengirimkan pekerjaan AWS Batch array yang menggunakan gambar kontainer baru Anda.

Untuk mengirimkan pekerjaan AWS Batch array
  1. Buat file bernama print-color-job.json di direktori ruang kerja Anda dan tempelkan yang berikut ini ke dalamnya.

    catatan

    Contoh ini menggunakan antrian pekerjaan yang disebutkan di Prasyarat bagian.

    { "jobName": "print-color", "jobQueue": "existing-job-queue", "arrayProperties": { "size": 7 }, "jobDefinition": "print-color" }
  2. Kirim pekerjaan ke antrian AWS Batch pekerjaan Anda. Perhatikan ID pekerjaan yang dikembalikan dalam output.

    $ aws batch submit-job --cli-input-json file://print-color-job.json
  3. Deskripsikan status tugas dan tunggu tugas untuk berpindah ke SUCCEEDED.

Langkah 5: Lihat log pekerjaan array Anda

Setelah pekerjaan Anda mencapai SUCCEEDED status, Anda dapat melihat CloudWatch Log dari wadah pekerjaan.

Untuk melihat log pekerjaan Anda di CloudWatch Log
  1. Buka AWS Batch konsol di https://console.aws.amazon.com/batch/.

  2. Di panel navigasi kiri, pilih Jobs (Tugas).

  3. Untuk Job queue (Antrean tugas), pilih antrean.

  4. Di bagian Status, pilih succeeded (berhasil).

  5. Untuk menampilkan semua tugas turunan untuk tugas array Anda, pilih ID tugas yang dikembalikan di bagian sebelumnya.

  6. Untuk melihat log dari kontainer tugas, pilih salah satu tugas turunan dan pilih View logs (Lihat log).

    Log kontainer pekerjaan array
  7. Lihat log tugas turunan lainnya. Setiap tugas mengembalikan warna pelangi yang berbeda.