All Products
Search
Document Center

Elastic Compute Service:Perintah Image Builder

Last Updated:May 16, 2026

Pelajari sintaks dan penggunaan perintah YAML serta Dockerfile untuk komponen dan templat Image Builder.

Sintaks perintah

Image Builder mendukung dua format perintah: YAML (Linux dan Windows) dan Dockerfile (hanya Linux).

Catatan

Perintah Dockerfile kurang fleksibel dan terbatas pada Linux. Gunakan format YAML bila memungkinkan.

Format YAML dan Dockerfile menggunakan sintaks berikut:

  • YAML: Definisikan bagian Parameters dan Tasks:

    Parameters: # Opsional. Mendefinisikan parameter kustom.
      param1: # Wajib. Nama parameter.
        Type: String # Wajib. Tipe parameter. Nilai yang valid: String, Number, dan Boolean.
        DefaultValue: defaultValue # Opsional. Nilai default parameter. Jika tidak ditentukan, Anda harus secara eksplisit memberikan nilai saat menggunakan komponen gambar dalam templat gambar.
    Tasks: # Wajib. Mendefinisikan daftar tugas untuk komponen gambar. Tugas dijalankan secara berurutan. Setidaknya satu tugas harus disertakan.
      - Name: taskName1 # Wajib. Nama tugas.
        Action: RunShellCommand # Wajib. Aksi untuk tugas. Untuk informasi lebih lanjut, lihat perintah komponen dalam format YAML.
        Properties: # Properti dari aksi. Properti yang tersedia bergantung pada aksi yang ditentukan.
          commandContent: echo {{ param1 }} # Merujuk ke parameter kustom.
      - Name: taskName2
        Action: action2
        Properties:
          action2Property1: {{ taskName1.stdout }} # Merujuk ke output taskName1.
    Catatan

    Rujuk parameter yang telah didefinisikan dalam properti tugas:

    {{taskName1.stdout}}           
  • Dockerfile

    • Setiap baris berisi satu perintah.

    • Satu perintah dapat mencakup beberapa baris. Tambahkan backslash (\) di akhir setiap baris untuk melanjutkan ke baris berikutnya.

Perintah yang didukung

Image Builder mendukung perintah berikut untuk komponen dan templat.

Perintah komponen

Format YAML

Perintah

Sintaks

Deskripsi

Output

RunShellCommand

Name: String
Action: RunShellCommand
Properties:
  commandContent: String # Perintah yang akan dijalankan.
  workingDir: String,optional # Direktori kerja.
  username: String,optional # Pengguna yang menjalankan perintah.
  • Menjalankan skrip shell.

  • Hanya untuk Linux.

stdout: String # Output standar dari perintah.

RunPowerShellCommand

Name: String
Action: RunPowerShellCommand
Properties:
  commandContent: String # Perintah yang akan dijalankan.
  workingDir: String,optional # Direktori kerja.
  username: String,optional # Pengguna yang menjalankan perintah.
  windowsPasswordName: String,optional # Nama kata sandi untuk pengguna yang menjalankan perintah dalam instans Windows.
  • Menjalankan skrip PowerShell.

  • Hanya untuk Windows.

InvokeCommand

Name: String
Action: InvokeCommand
Properties:
 commandId: String # ID perintah.
 username: String,optional # Pengguna yang menjalankan perintah.
 parameters: Json,optional # Pasangan kunci-nilai parameter kustom.

Menjalankan perintah umum.

OSSDownload

Name: String
Action: OSSDownload
Properties:
 bucketName: String # Nama bucket OSS.
 destinationDir: String # Folder tujuan dalam instans.
 objectName: String # Nama objek OSS.
 ossRegion: String,optional # Wilayah bucket OSS.
 validTime: Number,optional # Periode validitas tautan file OSS dalam detik.
  • Mengunduh file dari OSS ke instans.

  • Bucket harus memiliki tag allowImageBuilderAccess:true.

Tidak ada

OSSUpload

Name: String
Action: OSSUpload
Properties:
 bucketName: String # Nama bucket OSS.
 fileToUpload: String # Jalur ke file lokal.
 objectName: String # Nama objek OSS.
 ossRegion: String,optional # Wilayah bucket OSS.
 validTime: Number,optional # Periode validitas tautan file OSS dalam detik.
  • Mengunggah file dari instans ke OSS.

  • Bucket harus memiliki tag allowImageBuilderAccess:true.

WebDownload

Name: String
Action: WebDownload
Properties:
 sourcePath: String # URL file web.
 tokenInfo: String,optional # Token untuk mengunduh file. Properti ini hanya digunakan saat mengunduh file dari GitHub.
 destinationDir: String # Direktori unduhan dalam instans.
 timeout: Number,optional,default=600 # Periode timeout dalam detik.

Mengunduh file dari URL web.

Reboot

Name: String
Action: Reboot
Properties:
 forceStop: Boolean,optional,default=false # Menentukan apakah instans akan direstart secara paksa.

Merestart instans.

Format Dockerfile

Perintah

Sintaks

Deskripsi

RESTART

RESTART

  • Merestart instans.

  • Tidak ada perintah yang diperbolehkan setelah RESTART.

RUN

RUN echo hello;\
echo world;
  • Menjalankan perintah dalam layer baru.

  • Gunakan backslash (\) di akhir baris untuk melanjutkan ke baris berikutnya.

ENV

  • ENV key value

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

  • Mengonfigurasi variabel lingkungan sistem.

  • Menggunakan format pasangan kunci-nilai.

Catatan

Dalam format ENV key1="value1" key2="value2", jangan menghilangkan tanda kutip ganda (").

WORKDIR

  • WORKDIR /<path>

  • WORKDIR <path1>/<path2>

Menetapkan direktori kerja.

COPY

  • COPY <source_web_file_URL> <destination_directory>

  • COPY <source_local_file_path> <destination_directory>

Menyalin file.

Catatan

File jaringan diunduh dengan wget, yang tidak mendukung query string. Instansi perantara harus memiliki akses jaringan publik.

USER

USER <username>

Menetapkan pengguna untuk perintah RUN, CMD, dan ENTRYPOINT berikutnya.

Catatan

<username> harus merupakan pengguna OS yang sudah ada. Jika tidak, perintah akan gagal.

LABEL

LABEL user="username"\
date="2020-11-11" key="value"
  • Menambahkan metadata ke gambar.

  • Gunakan backslash (\) di akhir baris untuk melanjutkan ke baris berikutnya.

CMD

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

  • CMD command param1 param2

Menentukan perintah yang dijalankan saat startup.

ENTRYPOINT

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

  • CMD command param1 param2

Menentukan perintah yang dijalankan saat startup.

Catatan

CMD dan ENTRYPOINT sama-sama menentukan perintah startup tetapi berbeda dalam kasus penggunaan. Keduanya dapat digunakan secara terpisah atau dikombinasikan. Lihat referensi Dockerfile.

Templat perintah

Perintah

Sintaks

Deskripsi

COMPONENT

  • COMPONENT ic-bp18hy47cqavewsb****

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

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

    Catatan

    Gunakan wildcard (*) untuk bagian mana pun dari nomor versi (<major>, <minor>, atau <patch>) untuk memilih versi terbaru yang sesuai.

Menentukan komponen gambar sistem atau kustom.

  • Hanya berlaku untuk templat gambar.

  • Gunakan perintah ini untuk menggabungkan satu atau beberapa komponen gambar dalam templat.

  • Mendukung komponen dalam format YAML maupun Dockerfile.

RESTART

RESTART

  • Merestart instans.

  • Tidak ada perintah yang diperbolehkan setelah RESTART.

RUN

RUN echo hello;\
echo world;
  • Menjalankan perintah dalam layer baru.

  • Gunakan backslash (\) di akhir baris untuk melanjutkan ke baris berikutnya.

  • Hanya untuk Linux.

ENV

  • ENV key value

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

  • Mengonfigurasi variabel lingkungan sistem.

  • Menggunakan format pasangan kunci-nilai.

  • Hanya untuk Linux.

Catatan

Dalam format ENV key1="value1" key2="value2", jangan menghilangkan tanda kutip ganda (").

WORKDIR

  • WORKDIR /<path>

  • WORKDIR <path1>/<path2>

  • Menetapkan direktori kerja.

  • Hanya untuk Linux.

COPY

  • COPY <source_web_file_URL> <destination_directory>

  • COPY <source_local_file_path> <destination_directory>

  • Menyalin file.

  • Hanya untuk Linux.

Catatan

File jaringan diunduh dengan wget, dan query string tidak didukung. Instansi perantara harus memiliki akses jaringan publik.

USER

USER <username>

  • Menetapkan pengguna untuk perintah RUN, CMD, dan ENTRYPOINT berikutnya.

  • Hanya untuk Linux.

Catatan

<username> harus merupakan pengguna OS yang sudah ada. Jika tidak, perintah akan gagal.

LABEL

LABEL user="username"\
date="2020-11-11" key="value"
  • Menambahkan metadata ke gambar.

  • Gunakan backslash (\) di akhir baris untuk melanjutkan ke baris berikutnya.

  • Hanya untuk Linux.

CMD

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

  • CMD command param1 param2

  • Menentukan perintah yang dijalankan saat startup.

  • Hanya untuk Linux.

ENTRYPOINT

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

  • CMD command param1 param2

  • Menentukan perintah yang dijalankan saat startup.

  • Hanya untuk Linux.

Catatan

CMD dan ENTRYPOINT sama-sama menentukan perintah startup tetapi berbeda dalam kasus penggunaan. Keduanya dapat digunakan secara terpisah atau dikombinasikan. Lihat referensi Dockerfile.

Contoh perintah

Contoh berikut menunjukkan perintah komponen dan templat untuk kasus penggunaan umum.

Komponen perintah

Contoh 1: Gunakan parameter kustom

Komponen ini menghitung (3x+2y+z)+(3x+2y+z) dengan parameter kustom x, y, dan z. Lihat Contoh 1: Asosiasikan templat dengan komponen dan berikan nilai ke parameter kustomnya untuk perintah templat yang sesuai.

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

Contoh 2: Konfigurasikan skrip dari OSS

Buat gambar dari skrip Linux di OSS untuk membuat instans ECS dengan konfigurasi identik. Aksi OSSDownload dan OSSUpload menghilangkan kebutuhan untuk menyematkan Pasangan Kunci Akses secara langsung.

Tasks:
  - Name: ossdownload
    Action: OSSDownload
    Properties:
      bucketName: <your_oss_bucket_name>
      destinationDir: /home
      objectName: <your_script_object_name>
  - Name: setpermissions
    Action: RunShellCommand
    Properties:
      commandContent: sudo chmod +x /home/<your_script_object_name>
  - Name: createfile
    Action: RunShellCommand
    Properties:
      commandContent: sudo touch /home/output.txt
  - Name: setfilepermissions
    Action: RunShellCommand
    Properties:
      commandContent: sudo chmod 666 /home/output.txt
  - Name: result
    Action: RunShellCommand
    Properties:
      commandContent: sudo bash /home/<your_script_object_name> &> /home/output.txt
  - Name: ossupload
    Action: OSSUpload
    Properties:
      bucketName: <your_oss_bucket_name>
      fileToUpload: /home/output.txt
      objectName: output.txt

Templat perintah

Contoh 1: Asosiasikan komponen dan berikan parameter

Berikan nilai ke parameter x, y, dan z dari Contoh 1: Gunakan parameter kustom dalam komponen.

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

Contoh 2: Gunakan versi komponen terbaru

Untuk komponen dengan versi 1.0.1, 1.0.2, dan 1.0.3, tentukan 1.0.* untuk menggunakan versi terbaru yang sesuai (1.0.3).

COMPONENT acs:ecs:cn-hangzhou:<alibaba_cloud_account_id>:imagecomponent/<your_component_name>/1.0.*