All Products
Search
Document Center

Elastic Compute Service:Perintah yang Didukung oleh Image Builder

Last Updated:Jun 26, 2025

Fitur Image Builder menyesuaikan konten gambar menggunakan template gambar. Anda dapat menentukan komponen gambar atau langsung menentukan perintah untuk membuat template gambar. Komponen gambar terdiri dari satu atau lebih perintah, yang merupakan unit terkecil dalam sebuah template gambar. Topik ini menjelaskan sintaksis dan memberikan contoh perintah umum yang didukung oleh Image Builder.

Sintaksis Perintah

Image Builder mendukung perintah dalam format YAML Ain't Markup Language (YAML) untuk sistem operasi Linux dan Windows serta perintah dalam format DockerFile hanya untuk sistem operasi Linux.

Catatan

Perintah dalam format DockerFile kurang fleksibel dan memiliki batasan pada sistem operasi. Kami merekomendasikan penggunaan format YAML.

Berikut adalah persyaratan sintaksis untuk perintah dalam format YAML dan DockerFile:

  • YAML: Anda harus mendefinisikan bidang Parameters dan Tasks. Sintaksis:

    Parameters: # (Opsional) Tentukan parameter kustom.
      param1: # (Wajib) Tentukan nama parameter.
        Type: String # (Wajib) Tentukan tipe parameter. Nilai valid: String, Number, dan Boolean.
        DefaultValue: nilaiDefault # (Opsional) Konfigurasikan nilai default dari parameter. Jika parameter tidak memiliki nilai default, Anda harus secara eksplisit memasukkan parameter ke dalam template gambar yang berisi komponen gambar di mana parameter tersebut disertakan.
    Tasks: # Tentukan daftar tugas dari komponen gambar, yang berisi setidaknya satu tugas. Tugas dalam daftar tugas dieksekusi secara berurutan.
      - Name: namaTugas1 # (Wajib) Tentukan nama tugas.
        Action: RunShellCommand # (Wajib) Tentukan aksi tugas. Untuk informasi lebih lanjut, lihat perintah komponen dalam format YAML.
        Properties: # Tentukan properti aksi. Properti bervariasi berdasarkan aksi.
          commandContent: echo {{ param1 }} # Referensikan parameter kustom.
      - Name: namaTugas2
        Action: aksi2
        Properties:
          aksi2Properti1: {{ stdout.namaTugas1 }} # Referensikan keluaran dari tugas namaTugas1.
    Catatan

    Anda dapat mereferensikan parameter sebelumnya sebagai properti di bidang Tasks. Contoh kode berikut menunjukkan sintaksis referensi:

    {{taskName1.stdout}}           
  • DockerFile

    • Setiap baris hanya boleh berisi satu perintah atau bagian dari satu perintah.

    • Satu perintah dapat dibagi menjadi beberapa baris. Tambahkan karakter escape (\) di akhir setiap baris kecuali baris terakhir.

Perintah yang Didukung oleh Image Builder

Berikut ini menjelaskan sintaksis perintah yang didukung oleh komponen gambar saat menggunakan Image Builder untuk membuat komponen gambar di konsol Elastic Compute Service (ECS) dan melalui pemanggilan API.

Perintah komponen yang didukung oleh konsol ECS dan operasi API

(Direkomendasikan) Format YAML

Perintah

Sintaksis atau contoh

Deskripsi

Keluaran

RunShellCommand

Name: String
Action: RunShellCommand
Properties:
  commandContent: String # Tentukan isi perintah.
  workingDir: String,opsional # Tentukan direktori kerja.
  username: String,opsional # Tentukan nama pengguna akun yang digunakan untuk menjalankan perintah.
  • Perintah ini digunakan untuk menjalankan skrip shell.

  • Perintah ini hanya berlaku untuk sistem operasi Linux.

stdout: String# Tentukan keluaran perintah.

RunPowerShellCommand

Name: String
Action: RunPowerShellCommand
Properties:
  commandContent: String # Tentukan isi perintah.
  workingDir: String,opsional # Tentukan direktori kerja.
  username: String,opsional # Tentukan nama pengguna akun yang digunakan untuk menjalankan perintah.
  windowsPasswordName: String,opsional # Tentukan kata sandi akun yang digunakan untuk menjalankan perintah pada instance Windows.
  • Perintah ini digunakan untuk menjalankan skrip PowerShell.

  • Perintah ini hanya berlaku untuk sistem operasi Windows.

InvokeCommand

Name: String
Action: InvokeCommand
Properties:
 commandId: String # Tentukan ID perintah.
 username: String,opsional # Tentukan nama pengguna akun yang digunakan untuk menjalankan perintah.
 parameters: Json,opsional # Tentukan pasangan key-value dari parameter kustom.

Perintah ini digunakan untuk menjalankan perintah umum.

OSSDownload

Name: String
Action: OSSDownload
Properties:
 bucketName: String # Tentukan nama Bucket Object Storage Service (OSS).
 destinationDir: String # Tentukan folder pada instance ECS.
 objectName: String # Tentukan nama objek OSS.
 ossRegion: String,opsional # Tentukan wilayah OSS.
 validTime: Number,opsional # Tentukan periode validitas URL objek OSS.
  • Perintah ini digunakan untuk mengunduh file dari bucket OSS ke instance ECS.

  • Bucket yang Anda gunakan harus ditambahkan tag allowImageBuilderAccess:true.

Tidak ada.

OSSUpload

Name: String
Action: OSSUpload
Properties:
 bucketName: String # Tentukan nama bucket OSS.
 fileToUpload: String # Tentukan jalur file yang ingin Anda unggah dari instance ECS.
 objectName: String # Tentukan nama objek OSS.
 ossRegion: String,opsional # Tentukan wilayah OSS.
 validTime: Number,opsional # Tentukan periode validitas URL objek OSS.
  • Perintah ini digunakan untuk mengunggah file dari instance ECS ke bucket OSS.

  • Bucket OSS yang Anda gunakan harus ditambahkan tag allowImageBuilderAccess:true.

WebDownload

Name: String
Action: WebDownload
Properties:
 sourcePath: String # Tentukan URL file jaringan.
 tokenInfo: String,opsional # Tentukan token yang digunakan untuk mengunduh file. Properti ini diperlukan hanya jika Anda mengunduh file dari GitHub.
 destinationDir: String # Tentukan direktori tempat file akan diunduh pada instance ECS.
 timeout: Number,opsional,default=600 # Tentukan waktu habis unduhan.

Perintah ini digunakan untuk mengunduh file dari jaringan.

Reboot

Name: String
Action: Reboot
Properties:
 forceStop: Boolean,opsional,default=false # Tentukan apakah akan memaksa me-restart instance ECS.

Perintah ini digunakan untuk me-restart instance ECS.

Format DockerFile

Perintah

Sintaksis atau contoh

Deskripsi

RESTART

RESTART

  • Perintah ini digunakan untuk me-restart instance ECS.

  • Jangan tambahkan konten setelah perintah.

RUN

RUN echo hello;\
echo world;
  • Perintah ini digunakan untuk membangun gambar.

  • Perintah ini dapat dibagi menjadi beberapa baris. Karakter escape (\) harus ditambahkan di akhir setiap baris kecuali baris terakhir.

ENV

  • ENV key value

  • ENV key1="value1" key2="value2"

  • Perintah ini digunakan untuk mengonfigurasi variabel sistem.

  • Perintah ini dalam bentuk pasangan key-value.

Catatan

Tanda kutip ganda (") diperlukan sebelum dan sesudah nilai setiap variabel sistem dalam perintah. Contoh: ENV key1="value1" key2="value2".

WORKDIR

  • WORKDIR /<path>

  • WORKDIR <path1>/<path2>

Perintah ini digunakan untuk menentukan direktori kerja.

COPY

  • COPY <Alamat file jaringan> <Direktori tujuan lokal>

  • COPY <Jalur file sumber lokal> <Direktori tujuan lokal>

Perintah ini digunakan untuk menyalin file.

Catatan

File jaringan harus diunduh menggunakan utilitas wget, dan query strings tidak didukung dalam URL. Selain itu, instance perantara harus dapat mengakses Internet.

USER

USER <username>

Perintah ini digunakan untuk menentukan nama pengguna akun yang digunakan untuk menjalankan perintah.

Catatan

Ganti variabel <username> dengan nama pengguna yang ada. Jika tidak, kesalahan akan dilaporkan setelah perintah dijalankan.

LABEL

LABEL user="username"\
date="2020-11-11" key="value"
  • Perintah ini digunakan untuk mendefinisikan metadata template.

  • Perintah ini dapat dibagi menjadi beberapa baris. Karakter escape (\) harus ditambahkan di akhir setiap baris kecuali baris terakhir.

CMD

  • CMD ["executable","param1","param2"]

  • CMD command param1 param2

Perintah ini digunakan untuk mengaktifkan perintah dan parameter tertentu agar berjalan saat startup sistem.

ENTRYPOINT

  • ENTRYPOINT ["executable","param1","param2"]

  • CMD command param1 param2

Perintah ini digunakan untuk mengaktifkan perintah dan parameter tertentu agar berjalan saat startup sistem.

Catatan

Perintah CMD dan ENTRYPOINT digunakan untuk mengaktifkan perintah dan parameter tertentu agar berjalan saat wadah dimulai. Perintah-perintah tersebut memiliki skenario penggunaan dan fitur yang berbeda dan dapat digunakan secara terpisah atau dikombinasikan untuk mencapai hasil yang lebih fleksibel. Untuk informasi tentang perbedaan antara perintah CMD dan ENTRYPOINT, lihat Referensi Dockerfile.

Perintah Template dalam format DockerFile (hanya didukung oleh operasi API)

Perintah

Sintaksis atau contoh

Deskripsi

COMPONENT

  • COMPONENT ic-bp18hy47cqavewsb****

  • COMPONENT ic-bp18hy47cqavewsb**** --paramName1 paramValue1 --paramName2 paramValue2

  • COMPONENT acs:ecs:<RegionId>:<AliUid>:imagecomponent/<ComponentName>:<major>.<minor>.<patch>

    Catatan

    Anda dapat menggunakan karakter asterisk (*) sebagai karakter wildcard untuk menggantikan variabel <major>, <minor>, atau <patch>, yang menentukan versi terbaru dari komponen gambar.

Perintah ini digunakan untuk menentukan komponen gambar. Anda dapat menentukan komponen sistem atau komponen kustom.

  • Perintah ini hanya berlaku untuk template gambar.

  • Saat Anda membuat template gambar, Anda dapat menjalankan perintah ini untuk menentukan satu atau lebih komponen gambar dalam template gambar.

  • Perintah ini dapat digunakan untuk memanggil komponen dalam format YAML atau DockerFile.

RESTART

RESTART

  • Perintah ini digunakan untuk me-restart instance ECS.

  • Jangan tambahkan konten setelah perintah.

RUN

RUN echo hello;\
echo world;
  • Perintah ini digunakan untuk membangun gambar.

  • Perintah ini dapat dibagi menjadi beberapa baris. Karakter escape (\) harus ditambahkan di akhir setiap baris kecuali baris terakhir.

  • Perintah ini hanya berlaku untuk sistem operasi Linux.

ENV

  • ENV key value

  • ENV key1="value1" key2="value2"

  • Perintah ini digunakan untuk mengonfigurasi variabel sistem.

  • Perintah ini dalam bentuk pasangan key-value.

  • Perintah ini hanya berlaku untuk sistem operasi Linux.

Catatan

Tanda kutip ganda (") diperlukan sebelum dan sesudah nilai setiap variabel sistem dalam perintah. Contoh: ENV key1="value1" key2="value2".

WORKDIR

  • WORKDIR /<path>

  • WORKDIR <path1>/<path2>

  • Perintah ini digunakan untuk menentukan direktori kerja.

  • Perintah ini hanya berlaku untuk sistem operasi Linux.

COPY

  • COPY <Alamat file jaringan> <Direktori tujuan lokal>

  • COPY <Jalur file sumber lokal> <Direktori tujuan lokal>

  • Perintah ini digunakan untuk menyalin file.

  • Perintah ini hanya berlaku untuk sistem operasi Linux.

Catatan

File jaringan harus diunduh menggunakan utilitas wget, dan query strings tidak didukung dalam URL. Selain itu, instance perantara harus dapat mengakses Internet.

USER

USER <username>

  • Perintah ini digunakan untuk menentukan nama pengguna akun yang digunakan untuk menjalankan perintah.

  • Perintah ini hanya berlaku untuk sistem operasi Linux.

Catatan

Ganti variabel <username> dengan nama pengguna yang ada dalam sistem. Jika tidak, kesalahan akan dilaporkan saat perintah dijalankan.

LABEL

LABEL user="username"\
date="2020-11-11" key="value"
  • Perintah ini digunakan untuk mendefinisikan metadata template.

  • Perintah ini dapat dibagi menjadi beberapa baris. Karakter escape (\) harus ditambahkan di akhir setiap baris kecuali baris terakhir.

  • Perintah ini hanya berlaku untuk sistem operasi Linux.

CMD

  • CMD ["executable","param1","param2"]

  • CMD command param1 param2

  • Perintah ini digunakan untuk mengaktifkan perintah dan parameter tertentu agar berjalan saat startup sistem.

  • Perintah ini hanya berlaku untuk sistem operasi Linux.

ENTRYPOINT

  • ENTRYPOINT ["executable","param1","param2"]

  • CMD command param1 param2

  • Perintah ini digunakan untuk mengaktifkan perintah dan parameter tertentu agar berjalan saat startup sistem.

  • Perintah ini hanya berlaku untuk sistem operasi Linux.

Catatan

Perintah CMD dan ENTRYPOINT digunakan untuk mengaktifkan perintah dan parameter tertentu agar berjalan saat wadah dimulai. Perintah-perintah tersebut memiliki skenario penggunaan dan fitur yang berbeda dan dapat digunakan secara terpisah atau dikombinasikan untuk mencapai hasil yang lebih fleksibel. Untuk informasi tentang perbedaan antara perintah CMD dan ENTRYPOINT, lihat Referensi Dockerfile.

Contoh Perintah

Berikut ini memberikan contoh perintah komponen dan template berdasarkan skenario.

Perintah Komponen

Contoh 1: Gunakan parameter input kustom dalam komponen gambar

Pada contoh ini, fungsi (3x+2y+z)+(3x+2y+z) ditambahkan ke dalam komponen gambar. Setiap kali komponen digunakan untuk membuat template gambar, nilai x, y, dan z berbeda. Contoh kode berikut menunjukkan perintah komponen. Untuk informasi tentang contoh template yang sesuai, lihat bagian Contoh 1: Asosiasikan template gambar dengan komponen gambar yang berisi parameter input kustom dan tetapkan nilai untuk parameter input dari topik ini.

Parameters:
  x:
    Type: String
  y:
    Type: String
  z:
    Type: String
Tasks:
  - Name: hitung
    Action: RunShellCommand
    Properties:
      commandContent: echo $((3 * {{x}} + 2 * {{y}} + {{z}}))
  - Name: hasil
    Action: RunShellCommand
    Properties:
      commandContent: echo $(({{stdout.hitung}}+{{stdout.hitung}}))

Contoh 2: Tentukan file skrip yang disimpan dalam bucket OSS dalam komponen gambar

Tentukan file skrip Linux yang disimpan dalam bucket Object Storage Service (OSS) dalam komponen gambar untuk pembuatan gambar. Ini memudahkan pembuatan beberapa instance ECS dengan konfigurasi yang sama dari gambar yang sama di perusahaan. Komponen gambar mencakup tindakan OSSDownload dan OSSUpload. Anda tidak perlu menentukan pasangan AccessKey dalam teks biasa di dalam kode komponen.

Tasks:
  - Name: ossdownload
    Action: OSSDownload
    Properties:
      bucketName: <Nama bucket OSS>
      destinationDir: /home
      objectName: <File skrip yang disimpan dalam bucket OSS>
  - Name: setpermissions
    Action: RunShellCommand
    Properties:
      commandContent: sudo chmod +x /home/<File skrip yang disimpan dalam bucket OSS>
  - Name: createfile
    Action: RunShellCommand
    Properties:
      commandContent: sudo touch /home/output.txt
  - Name: setfilepermissions
    Action: RunShellCommand
    Properties:
      commandContent: sudo chmod 666 /home/output.txt
  - Name: hasil
    Action: RunShellCommand
    Properties:
      commandContent: sudo bash /home/<File skrip yang disimpan dalam bucket OSS> &> /home/output.txt
  - Name: ossupload
    Action: OSSUpload
    Properties:
      bucketName: <Nama bucket OSS>
      fileToUpload: /home/output.txt
      objectName: output.txt

Perintah Template

Contoh 1: Asosiasikan template gambar dengan komponen gambar yang berisi parameter input kustom dan tetapkan nilai untuk parameter input

Tetapkan nilai untuk x, y, dan z dalam komponen gambar yang dibuat di Contoh 1: Gunakan parameter input kustom dalam komponen gambar. Setiap kali Anda menjalankan perintah template, Anda dapat menetapkan nilai berbeda untuk x, y, dan z.

COMPONENT i-xxxxxxxxx --x 1 --y 2 --z 3

Contoh 2: Secara otomatis asosiasikan template gambar dengan versi terbaru dari komponen gambar

Jika komponen gambar memiliki beberapa versi, seperti 1.0.1, 1.0.2, dan 1.0.3, Anda dapat menentukan versi fuzzy 1.0.* dalam perintah template untuk secara otomatis mengasosiasikan template dengan versi komponen terbaru, yaitu 1.0.3.

COMPONENT acs:ecs:ap-southeast-1:<ID akun Alibaba Cloud>:imagecomponent/<Nama komponen gambar yang berisi parameter input kustom>/1.0.*