Bagikan melalui


Menggunakan templat CLI Azure Batch dan transfer file

Peringatan

Ekstensi Batch Azure CLI akan dihentikan pada 30 September 2024. Silakan hapus instalan ekstensi dengan perintah az extension remove --name azure-batch-cli-extensions.

Dengan menggunakan ekstensi Batch ke Azure CLI, pengguna dapat menjalankan pekerjaan Batch tanpa menulis kode.

Buat dan gunakan file templat JSON dengan Azure CLI untuk membuat kumpulan Batch, pekerjaan, dan tugas. Gunakan perintah ekstensi CLI untuk mengunggah file input pekerjaan dengan mudah ke akun penyimpanan yang terkait dengan akun Batch dan mengunduh file output pekerjaan.

Catatan

File JSON tidak mendukung fungsionalitas yang sama seperti templat Azure Resource Manager. Mereka dimaksudkan untuk diformat seperti isi permintaan REST mentah. Ekstensi CLI tidak mengubah perintah apa pun yang ada, tetapi memiliki opsi templat serupa yang menambahkan fungsionalitas templat Azure Resource Manager parsial. Lihat Ekstensi CLI Azure Batch untuk Windows, Mac, dan Linux.

Gambaran Umum

Ekstensi ke Azure CLI memungkinkan Batch untuk digunakan secara end-to-end oleh pengguna yang bukan pengembang. Hanya dengan perintah CLI, Anda dapat membuat kumpulan, mengunggah data input, membuat pekerjaan dan tugas terkait, serta mengunduh data output yang dihasilkan. Tidak diperlukan kode tambahan. Jalankan perintah CLI secara langsung atau integrasikan ke dalam skrip.

Templat batch dibangun di atas dukungan Batch yang ada di file Azure CLI untuk JSON untuk menentukan nilai properti saat membuat kumpulan, pekerjaan, tugas, dan item lainnya. Templat batch menambahkan kemampuan berikut:

  • Parameter dapat ditentukan. Saat templat digunakan, hanya nilai parameter yang ditentukan untuk membuat item dengan nilai properti item lain yang ditentukan dalam isi templat. Pengguna yang memahami Batch dan aplikasi yang akan dijalankan oleh Batch dapat membuat templat, menentukan nilai properti kumpulan, pekerjaan, dan tugas. Pengguna yang kurang akrab dengan Batch dan/atau aplikasi hanya perlu menentukan nilai untuk parameter yang ditentukan.

  • Pembuat tugas pekerjaan membuat satu atau lebih tugas yang terkait dengan pekerjaan, menghindari banyaknya penentuan tugas yang harus dibuat, dan menyederhanakan pengiriman pekerjaan secara signifikan.

Pekerjaan biasanya menggunakan file data input dan menghasilkan file data output. Akun penyimpanan dikaitkan, secara default, dengan setiap akun Batch. Anda dapat memindahkan file ke dan dari akun penyimpanan ini menggunakan CLI, tanpa pengodean dan tanpa mandat penyimpanan.

Misalnya, ffmpeg adalah aplikasi populer yang memproses file audio dan video. Dengan menggunakan ekstensi Azure Batch CLI, Anda dapat mempermudah pengguna untuk memanggil file video sumber ffmpeg ke transkode ke resolusi yang berbeda. Prosesnya mungkin terlihat seperti ini:

  • Buat templat kumpulan. Pengguna yang membuat templat tahu cara memanggil aplikasi ffmpeg dan persyaratannya; mereka menentukan OS yang sesuai, ukuran VM, bagaimana ffmpeg diinstal (dari paket aplikasi atau menggunakan manajer paket, misalnya), dan nilai properti kumpulan lainnya. Parameter dibuat sehingga saat templat digunakan, hanya ID kumpulan dan jumlah VM yang perlu ditentukan.
  • Buat templat pekerjaan. Pengguna yang membuat templat tahu bagaimana ffmpeg perlu dipanggil untuk melakukan transkode video sumber ke resolusi yang berbeda dan menentukan baris perintah tugas; mereka juga tahu bahwa ada folder yang berisi file video sumber, dengan tugas yang diperlukan per file input.
  • Pengguna akhir dengan kumpulan file video yang perlu ditranskodekan akan membuat kumpulan terlebih dahulu menggunakan templat kumpulan, hanya menentukan ID kumpulan dan jumlah VM yang diperlukan. Mereka kemudian dapat mengunggah file sumber ke transkode. Pekerjaan kemudian dapat dikirimkan menggunakan templat pekerjaan yang hanya menentukan ID kumpulan dan lokasi file sumber yang diunggah. Tugas Batch dibuat, dengan satu tugas per file input yang dibuat. Akhirnya, file output yang ditranskodekan dapat diunduh.

Penginstalan

Untuk menginstal ekstensi CLI Azure Batch, Instal Azure CLI 2.0 terlebih dahulu atau jalankan Azure CLI di Azure Cloud Shell.

Instal versi terbaru ekstensi Batch menggunakan perintah Azure CLI berikut:

az extension add --name azure-batch-cli-extensions

Untuk informasi selengkapnya tentang ekstensi CLI Batch dan opsi penginstalan tambahan, lihat repo GitHub.

Untuk menggunakan fitur ekstensi CLI, Anda memerlukan akun Azure Batch dan, untuk perintah yang mentransfer file ke dan dari penyimpanan, akun penyimpanan yang ditautkan.

Untuk login ke akun Batch dengan Azure CLI, lihat Mengelola sumber daya Batch dengan Azure CLI.

Templat

Templat Azure Batch serupa dengan templat Azure Resource Manager dalam fungsionalitas dan sintaksis. Mereka adalah file JSON yang berisi nama dan nilai properti item, tetapi menambahkan konsep utama berikut:

  • Parameters: Memungkinkan nilai properti ditentukan dalam bagian isi, dengan hanya nilai parameter yang perlu disediakan saat templat digunakan. Misalnya, penentuan lengkap untuk kumpulan dapat ditempatkan di isi dan hanya satu parameter yang ditentukan untuk poolId; hanya string ID kumpulan yang perlu disediakan untuk membuat kumpulan. Isi templat dapat dibuat oleh seseorang dengan pengetahuan tentang Batch dan aplikasi yang akan dijalankan oleh Batch; hanya nilai untuk parameter yang ditentukan pembuat yang harus disediakan saat templat digunakan. Hal ini memungkinkan pengguna tanpa pengetahuan Batch dan/atau aplikasi yang mendalam menggunakan templat.
  • Variabel: Memungkinkan nilai parameter sederhana atau kompleks untuk ditentukan di satu tempat dan digunakan di satu atau beberapa tempat di isi templat. Variabel dapat menyederhanakan dan mengurangi ukuran templat, serta membuatnya lebih dapat dikelola dengan memiliki satu lokasi untuk mengubah properti.
  • Konstruksi tingkat lebih tinggi: Beberapa konstruksi tingkat yang lebih tinggi tersedia dalam templat yang belum tersedia di API Batch. Misalnya, pembuat tugas dapat ditentukan dalam templat pekerjaan yang membuat beberapa tugas untuk pekerjaan tersebut dengan menggunakan penentuan tugas umum. Konstruksi ini menghindari kebutuhan kode untuk membuat beberapa file JSON secara dinamis, seperti satu file per tugas, serta membuat file skrip untuk menginstal aplikasi melalui manajer paket.

Templat kumpulan

Templat kumpulan mendukung kemampuan templat standar dari parameter dan variabel. Konstruksi tersebut juga mendukung referensi paket yang secara opsional memungkinkan perangkat lunak untuk disalin ke kumpulan simpul dengan menggunakan manajer paket. Manajer paket dan ID paket ditentukan dalam referensi paket. Dengan mendeklarasikan satu atau lebih paket, Anda menghindari pembuatan skrip yang mendapatkan paket yang diperlukan, menginstal skrip, dan menjalankan skrip pada setiap simpul kumpulan.

Berikut adalah contoh templat yang membuat kumpulan VM Linux dengan ffmpeg diinstal. Untuk menggunakannya, hanya sediakan string ID kumpulan dan jumlah VM di kumpulan:

{
    "parameters": {
        "nodeCount": {
            "type": "int",
            "metadata": {
                "description": "The number of pool nodes"
            }
        },
        "poolId": {
            "type": "string",
            "metadata": {
                "description": "The pool ID "
            }
        }
    },
    "pool": {
        "type": "Microsoft.Batch/batchAccounts/pools",
        "apiVersion": "2016-12-01",
        "properties": {
            "id": "[parameters('poolId')]",
            "virtualMachineConfiguration": {
                "imageReference": {
                    "publisher": "Canonical",
                    "offer": "UbuntuServer",
                    "sku": "20.04-LTS",
                    "version": "latest"
                },
                "nodeAgentSKUId": "batch.node.ubuntu 20.04"
            },
            "vmSize": "STANDARD_D3_V2",
            "targetDedicatedNodes": "[parameters('nodeCount')]",
            "enableAutoScale": false,
            "taskSlotsPerNode": 1,
            "packageReferences": [
                {
                    "type": "aptPackage",
                    "id": "ffmpeg"
                }
            ]
        }
    }
}

Jika file templat diberi nama pool-ffmpeg.json, panggil templat sebagai berikut:

az batch pool create --template pool-ffmpeg.json

CLI meminta Anda untuk memberikan nilai untuk parameter poolId dan nodeCount. Anda juga dapat menyediakan parameter dalam file JSON. Contohnya:

{
  "poolId": {
    "value": "mypool"
  },
  "nodeCount": {
    "value": 2
  }
}

Jika parameter file JSON diberi nama pool-parameters.json, panggil templat sebagai berikut:

az batch pool create --template pool-ffmpeg.json --parameters pool-parameters.json

Templat pekerjaan

Templat pekerjaan mendukung kemampuan templat standar dari parameter dan variabel. Templat tersebut juga mendukung konstruksi pembuat tugas, yang membuat beberapa tugas untuk pekerjaan dari satu definisi tugas. Ada tiga jenis pembuat tugas yang didukung, yaitu sapuan parametrik, tugas per file, dan koleksi tugas.

Berikut adalah contoh templat yang membuat pekerjaan untuk melakukan transkode file video MP4 dengan ffmpeg ke salah satu dari dua resolusi yang lebih rendah. Ini membuat satu tugas per file video sumber. Lihat Grup file dan transfer file untuk informasi selengkapnya tentang grup file untuk input dan output pekerjaan.

{
    "parameters": {
        "poolId": {
            "type": "string",
            "metadata": {
                "description": "The name of Azure Batch pool which runs the job"
            }
        },
        "jobId": {
            "type": "string",
            "metadata": {
                "description": "The name of Azure Batch job"
            }
        },
        "resolution": {
            "type": "string",
            "defaultValue": "428x240",
            "allowedValues": [
                "428x240",
                "854x480"
            ],
            "metadata": {
                "description": "Target video resolution"
            }
        }
    },
    "job": {
        "type": "Microsoft.Batch/batchAccounts/jobs",
        "apiVersion": "2016-12-01",
        "properties": {
            "id": "[parameters('jobId')]",
            "constraints": {
                "maxWallClockTime": "PT5H",
                "maxTaskRetryCount": 1
            },
            "poolInfo": {
                "poolId": "[parameters('poolId')]"
            },
            "taskFactory": {
                "type": "taskPerFile",
                "source": {
                    "fileGroup": "ffmpeg-input"
                },
                "repeatTask": {
                    "commandLine": "ffmpeg -i {fileName} -y -s [parameters('resolution')] -strict -2 {fileNameWithoutExtension}_[parameters('resolution')].mp4",
                    "resourceFiles": [
                        {
                            "blobSource": "{url}",
                            "filePath": "{fileName}"
                        }
                    ],
                    "outputFiles": [
                        {
                            "filePattern": "{fileNameWithoutExtension}_[parameters('resolution')].mp4",
                            "destination": {
                                "autoStorage": {
                                    "path": "{fileNameWithoutExtension}_[parameters('resolution')].mp4",
                                    "fileGroup": "ffmpeg-output"
                                }
                            },
                            "uploadOptions": {
                                "uploadCondition": "TaskSuccess"
                            }
                        }
                    ]
                }
            },
            "onAllTasksComplete": "terminatejob"
        }
    }
}

Jika file templat diberi nama pool-ffmpeg.json, maka panggil templat sebagai berikut:

az batch job create --template job-ffmpeg.json

Seperti sebelumnya, CLI meminta Anda untuk memberikan nilai untuk parameter. Anda juga dapat menyediakan parameter dalam file JSON.

Menggunakan templat di Batch Explorer

Anda dapat mengunggah templat CLI Batch ke aplikasi desktop Batch Explorer untuk membuat kumpulan Batch atau pekerjaan. Anda juga dapat memilih dari kumpulan yang telah ditentukan sebelumnya dan templat pekerjaan di Galeri Batch Explorer.

Untuk mengunggah templat:

  1. Di Batch Explorer, pilih Galeri>Templat lokal.
  2. Pilih, atau seret dan lepas, kumpulan lokal atau templat pekerjaan.
  3. Pilih Gunakan templat ini dan ikuti petunjuk di layar.

Grup file dan transfer file

Sebagian besar pekerjaan dan tugas memerlukan file input dan menghasilkan file output. Biasanya, file input dan file output ditransfer, baik dari klien ke node, atau dari simpul ke klien. Ekstensi CLI Azure Batch mengabstraksi transfer file dan menggunakan akun penyimpanan yang dapat Anda kaitkan dengan setiap akun Batch.

Grup file sama dengan kontainer yang dibuat di akun penyimpanan Azure. Grup file mungkin memiliki subfolder.

Ekstensi CLI Batch memberikan perintah untuk mengunggah file dari klien ke grup file yang ditentukan dan mengunduh file dari grup file yang ditentukan ke klien.

az batch file upload --local-path c:\source_videos\*.mp4
    --file-group ffmpeg-input

az batch file download --file-group ffmpeg-output --local-path
    c:\output_lowres_videos

Templat kumpulan dan pekerjaan memungkinkan file yang disimpan dalam grup file ditentukan untuk disalin ke simpul kumpulan atau di luar simpul kumpulan kembali ke grup file. Misalnya, dalam templat pekerjaan yang ditentukan sebelumnya, grup file ffmpeg-input ditentukan untuk pembuat tugas sebagai lokasi file video sumber yang disalin ke simpul untuk transcoding. Grup file ffmpeg-output adalah lokasi di mana file output yang ditranskodekan disalin dari simpul yang menjalankan setiap tugas.

Ringkasan

Dukungan templat dan transfer file saat ini hanya ditambahkan ke Azure CLI. Tujuannya adalah untuk memperluas audiens yang dapat menggunakan Batch ke pengguna yang tidak perlu mengembangkan kode menggunakan API Batch, seperti peneliti dan pengguna IT. Tanpa pengodean, pengguna dengan pengetahuan Azure, Batch, dan aplikasi yang akan dijalankan oleh Batch dapat membuat templat untuk kumpulan dan pembuatan pekerjaan. Dengan parameter templat, pengguna tanpa pengetahuan mendetail tentang Batch dan aplikasi dapat menggunakan templat.

Cobalah ekstensi Batch untuk Azure CLI dan berikan kami umpan balik atau saran apa pun, baik di komentar untuk artikel ini atau melalui repo Komunitas Batch.

Langkah berikutnya

  • Lihat dokumentasi penginstalan dan penggunaan mendetail, sampel, dan kode sumber di repositori Azure GitHub.
  • Pelajari selengkapnya tentang menggunakan Batch Explorer untuk membuat dan mengelola sumber daya Batch.