全部产品
Search
文档中心

Resource Orchestration Service:ALIYUN::ECS::RunCommand

更新时间:Jul 06, 2025

ALIYUN::ECS::RunCommand digunakan untuk menjalankan perintah shell, PowerShell, atau batch pada instance Elastic Compute Service (ECS).

Sintaksis

{
  "Type": "ALIYUN::ECS::RunCommand",
  "Properties": {
    "Parameters": Map,
    "Description": String,
    "Timeout": Integer,
    "ContentEncoding": String,
    "Name": String,
    "WorkingDir": String,
    "CommandContent": String,
    "Type": String,
    "Frequency": String,
    "EnableParameter": Boolean,
    "InstanceIds": List,
    "KeepCommand": Boolean,
    "Sync": Boolean,
    "Tags": List,
    "RunAgainOn": List,
    "WindowsPasswordName": String,
    "RepeatMode": String,
    "ResourceGroupId": String,
    "Launcher": String,
    "ContainerName": String,
    "ContainerId": String,
    "Username": String
  }
}

Properti

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Kendala

Parameters

Map

Tidak

Ya

Pasangan nilai-kunci dari parameter kustom yang diteruskan jika perintah mencakup parameter kustom. Sebagai contoh, jika konten perintah adalah echo {{name}}, Anda dapat menggunakan properti Parameters untuk meneruskan pasangan nilai-kunci {"name":"Jack"}. Nilai variabel name dalam echo {{name}} secara otomatis diganti dengan nilai Jack yang dipasangkan untuk menghasilkan perintah baru. Akibatnya, perintah echo Jack dijalankan.

Anda dapat menentukan hingga 10 parameter kustom.

Kunci parameter kustom dapat memiliki panjang hingga 64 karakter, dan tidak boleh berupa string kosong. Nilai parameter kustom dapat berupa string kosong.

Setelah parameter kustom dan konten perintah asli dikodekan dalam Base64, ukuran total dapat mencapai hingga 16 KB.

Nama parameter kustom yang ditentukan dalam nilai properti Parameters harus disertakan dalam pengaturan parameter kustom yang Anda konfigurasi saat membuat perintah.

Anda dapat menggunakan string kosong untuk mewakili parameter yang tidak ditentukan.

Description

String

Tidak

Tidak

Deskripsi perintah.

Deskripsi mendukung semua set karakter dan dapat memiliki panjang hingga 512 karakter.

Timeout

Integer

Tidak

Ya

Periode timeout untuk menjalankan perintah.

Satuan: detik.

Nilai default: 60.

Kesalahan timeout terjadi jika perintah tidak dapat dijalankan karena proses perintah melambat atau karena modul tertentu atau Cloud Assistant Agent tidak ada. Saat kesalahan timeout terjadi, proses perintah dihentikan secara paksa.

ContentEncoding

String

Tidak

Ya

Mode penyandian konten perintah yang ditentukan oleh CommandContent.

Nilai valid:

  • Base64 (default): menyandikan konten perintah dalam Base64.

  • PlainText: tidak menyandikan konten perintah.

Catatan

Jika Anda menentukan nilai yang tidak valid untuk properti ini, Base64 digunakan untuk menyandikan konten perintah.

Name

String

Tidak

Tidak

Nama perintah.

Nama mendukung semua set karakter dan dapat memiliki panjang hingga 128 karakter.

WorkingDir

String

Tidak

Ya

Direktori kerja perintah pada instance ECS.

Nilai default:

  • Nilai default untuk instance Linux: /root

  • Nilai default untuk instance Windows: C:\Windows\System32\

CommandContent

String

Ya

Ya

Konten perintah. Konten perintah dapat berupa teks biasa atau disandikan dalam Base64.

Setelah konten perintah disandikan dalam Base64, konten tersebut dapat memiliki ukuran hingga 16 KB.

Jika Anda mengatur EnableParameter ke true, fitur parameter kustom diaktifkan. Anda dapat mengonfigurasi parameter kustom berdasarkan aturan berikut: Tentukan parameter kustom dalam format {{}}. Di dalam {{}}, spasi dan baris baru sebelum dan sesudah nama parameter diabaikan.

Anda dapat menentukan hingga 10 parameter kustom. Nama parameter kustom dapat berisi huruf, angka, tanda hubung (-), dan garis bawah (_). Nama parameter kustom dapat memiliki panjang hingga 64 karakter.

Type

String

Ya

Ya

Tipe bahasa perintah.

Nilai valid:

  • RunBatScript: perintah batch. Perintah batch berlaku untuk instance Window.

  • RunPowerShellScript: perintah PowerShell. Perintah PowerShell berlaku untuk instance Window.

  • RunShellScript: perintah shell. Perintah shell berlaku untuk instance Linux.

Frequency

String

Tidak

Tidak

Interval waktu perintah dijalankan.

Tidak ada.

EnableParameter

Boolean

Tidak

Ya

Menentukan apakah akan menyertakan parameter kustom dalam perintah.

Nilai valid:

  • true

  • false (default)

InstanceIds

List

Ya

Ya

ID instance ECS.

Anda dapat menentukan hingga 20 instance ECS. Instance ECS harus dalam keadaan Berjalan.

KeepCommand

Boolean

Tidak

Tidak

Menentukan apakah akan mempertahankan perintah setelah dijalankan.

Nilai valid:

  • true: mempertahankan perintah setelah dijalankan. Anda dapat memanggil operasi InvokeCommand untuk menjalankan perintah lagi. Perintah yang dipertahankan mengonsumsi kuota perintah Cloud Assistant.

  • false (default): tidak mempertahankan perintah setelah dijalankan. Perintah secara otomatis dihapus setelah dijalankan dan tidak mengonsumsi kuota perintah Cloud Assistant.

Sync

Boolean

Tidak

Tidak

Menentukan apakah akan menjalankan perintah dalam mode sinkron.

Nilai valid:

  • true

  • false

Tags

List

Tidak

Ya

Tag.

Anda dapat menambahkan hingga 20 tag. Untuk informasi lebih lanjut, lihat Properti Tags.

RunAgainOn

List

Tidak

Tidak

Tahapan menjalankan perintah lagi.

Tidak ada.

WindowsPasswordName

String

Tidak

Tidak

Nama kata sandi yang ingin Anda gunakan untuk menjalankan perintah pada instance Windows.

Nama dapat memiliki panjang hingga 255 karakter.

Jika Anda tidak ingin menggunakan pengguna System default untuk menjalankan perintah pada instance Windows, tentukan baik WindowsPasswordName maupun Username. Kata sandi dihosting dalam teks biasa di repositori parameter Layanan Orkestrasi CloudOps (OOS) untuk mengurangi risiko kebocoran kata sandi. Hanya nama kata sandi yang diteruskan menggunakan WindowsPasswordName. Untuk informasi lebih lanjut, lihat Parameter terenkripsi dan Jalankan perintah Cloud Assistant sebagai pengguna biasa.

Catatan

Jika Anda menggunakan pengguna root instance Linux atau pengguna System instance Windows untuk menjalankan perintah, Anda dapat membiarkan WindowsPasswordName kosong.

RepeatMode

String

Tidak

Tidak

Mode di mana Anda ingin menjalankan perintah.

Nilai valid:

  • Once: menjalankan perintah segera.

  • Period: menjalankan perintah berdasarkan jadwal. Jika Anda mengatur properti ini ke Period, Anda harus menentukan Frequency.

  • NextRebootOnly: menjalankan perintah saat instance dimulai kembali.

  • EveryReboot: menjalankan perintah setiap kali instance dimulai kembali.

Nilai default:

  • Jika Anda tidak menentukan Frequency, nilai default RepeatMode adalah Once.

  • Jika Anda menentukan Frequency, Period digunakan sebagai nilai RepeatMode terlepas dari apakah RepeatMode diatur ke Period.

Perhatikan hal-hal berikut:

  • Anda dapat memanggil operasi StopInvocation untuk menghentikan eksekusi perintah yang tertunda atau dijadwalkan.

  • Jika Anda mengatur properti ini ke Period atau EveryReboot, Anda dapat memanggil operasi DescribeInvocationResults dan mengatur IncludeHistory ke true untuk menanyakan hasil eksekusi historis perintah yang dijadwalkan.

Launcher

String

Tidak

Tidak

Peluncur untuk eksekusi skrip.

Nilainya dapat memiliki ukuran hingga 1 KB.

ResourceGroupId

String

Tidak

Tidak

ID grup sumber daya tempat eksekusi perintah milik.

Perhatikan hal-hal berikut:

  • Instance ECS yang ditentukan oleh InstanceId harus termasuk dalam grup sumber daya.

  • Setelah perintah dijalankan, Anda dapat memanggil operasi DescribeInvocations atau DescribeInvocationResults dan menentukan ResourceGroupId untuk memfilter hasil eksekusi perintah dalam grup sumber daya tertentu.

ContainerName

String

Tidak

Tidak

Nama kontainer.

Perhatikan hal-hal berikut:

  • Jika properti ini ditentukan, Cloud Assistant menjalankan perintah dalam kontainer tertentu dari instance.

  • Jika properti ini ditentukan, perintah hanya dapat dijalankan pada instance Linux yang Cloud Assistant Agent-nya versi 2.2.3.344 atau lebih baru.

  • Jika properti ini ditentukan, Username dan WorkingDir yang ditentukan tidak berlaku. Anda dapat menjalankan perintah di direktori kerja default kontainer hanya dengan menggunakan pengguna default kontainer. Untuk informasi lebih lanjut, lihat Gunakan Cloud Assistant untuk menjalankan perintah dalam kontainer.

  • Jika properti ini ditentukan, Anda hanya dapat menjalankan skrip shell dalam kontainer Linux. Anda tidak dapat menambahkan perintah dalam format serupa dengan #!/usr/bin/python di awal skrip untuk menentukan penerjemah skrip. Untuk informasi lebih lanjut, lihat Gunakan Cloud Assistant untuk menjalankan perintah dalam kontainer.

ContainerId

String

Tidak

Tidak

ID kontainer.

Hanya string heksadesimal 64-bit yang didukung. Anda dapat menggunakan ID kontainer yang diawali dengan docker://, containerd://, atau cri-o:// untuk menentukan runtime kontainer.

Perhatikan hal-hal berikut:

  • Jika properti ini ditentukan, Cloud Assistant menjalankan perintah dalam kontainer tertentu dari instance.

  • Jika properti ini ditentukan, perintah hanya dapat dijalankan pada instance Linux yang Cloud Assistant Agent-nya versi 2.2.3.344 atau lebih baru.

  • Jika properti ini ditentukan, Username dan WorkingDir yang ditentukan tidak berlaku. Anda dapat menjalankan perintah di direktori kerja default kontainer hanya dengan menggunakan pengguna default kontainer. Untuk informasi lebih lanjut, lihat Gunakan Cloud Assistant untuk menjalankan perintah dalam kontainer.

  • Jika properti ini ditentukan, Anda hanya dapat menjalankan skrip shell dalam kontainer Linux. Anda tidak dapat menambahkan perintah dalam format serupa dengan #!/usr/bin/python di awal skrip untuk menentukan penerjemah skrip. Untuk informasi lebih lanjut, lihat Gunakan Cloud Assistant untuk menjalankan perintah dalam kontainer.

Username

String

Tidak

Ya

Nama pengguna yang ingin Anda gunakan untuk menjalankan perintah pada instance ECS.

Nama pengguna dapat memiliki panjang hingga 255 karakter.

  • Untuk instance ECS Linux, nama pengguna root digunakan secara default.

  • Untuk instance ECS Windows, nama pengguna System digunakan secara default.

Anda juga dapat menentukan nama pengguna lain yang sudah ada pada instance ECS untuk menjalankan perintah. Untuk alasan keamanan, kami merekomendasikan agar Anda menjalankan perintah Cloud Assistant sebagai pengguna biasa. Untuk informasi lebih lanjut, lihat Jalankan perintah Cloud Assistant sebagai pengguna biasa.

Sintaksis Tags

"Tags": [
  {
    "Key": String,
    "Value": String
  }
]

Properti Tags

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Kendala

Key

String

Ya

Tidak

Kunci tag.

Kunci tag harus memiliki panjang 1 hingga 128 karakter, dan tidak boleh mengandung http:// atau https://. Tidak boleh dimulai dengan aliyun atau acs:.

Value

String

Tidak

Tidak

Nilai tag.

Nilai tag dapat memiliki panjang hingga 128 karakter, dan tidak boleh mengandung http:// atau https://. Tidak boleh dimulai dengan aliyun atau acs:.

Nilai kembali

Fn::GetAtt

  • CommandId: ID perintah.

  • InvokeId: ID eksekusi perintah.

  • InvokeInstances: Instance ECS tempat perintah dijalankan.

  • InvokeResults: Hasil eksekusi perintah.

Contoh

Format YAML

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  InstanceId:
    Type: String
    AssociationProperty: ALIYUN::ECS::Instance::InstanceId
Resources:
  RunCommand:
    Type: ALIYUN::ECS::RunCommand
    Properties:
      CommandContent:
        Fn::Sub:
            |
            #!/bin/sh
            yum install -y tree
      Type: RunShellScript
      InstanceIds:
        - Ref: InstanceId
Outputs:
  CommandId:
    Description: ID perintah yang dibuat.
    Value:
      Fn::GetAtt:
        - RunCommand
        - CommandId
  InvokeId:
    Description: ID pemanggilan perintah.
    Value:
      Fn::GetAtt:
        - RunCommand
        - InvokeId

Format JSON

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "InstanceId": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::Instance::InstanceId"
    }
  },
  "Resources": {
    "RunCommand": {
      "Type": "ALIYUN::ECS::RunCommand",
      "Properties": {
        "CommandContent": {
          "Fn::Sub": 
            "#!/bin/sh\nyum install -y tree\n"
        },
        "Type": "RunShellScript",
        "InstanceIds": [
          {
            "Ref": "InstanceId"
          }
        ]
      }
    }
  },
  "Outputs": {
    "CommandId": {
      "Description": "ID perintah yang dibuat.",
      "Value": {
        "Fn::GetAtt": [
          "RunCommand",
          "CommandId"
        ]
      }
    },
    "InvokeId": {
      "Description": "ID pemanggilan perintah.",
      "Value": {
        "Fn::GetAtt": [
          "RunCommand",
          "InvokeId"
        ]
      }
    }
  }
}

Ikhtisar UpdatePolicy

Setelah menggunakan ALIYUN::ECS::RunCommand untuk menjalankan perintah pada sekelompok instance ECS, Anda dapat memanfaatkan properti UpdatePolicy untuk memperbarui konfigurasi instance ECS secara batch. Tabel berikut menjelaskan properti UpdatePolicy dan sintaksisnya.

Sintaksis UpdatePolicy

"UpdatePolicy": {
  "RollingUpdate": Map
}

Properti UpdatePolicy

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Kendala

RollingUpdate

Map

Tidak

Ya

Kebijakan pembaruan untuk perintah yang ada.

Untuk informasi lebih lanjut, lihat Properti RollingUpdate.

Sintaksis RollingUpdate

"RollingUpdate": {
  "MaxBatchSize": Integer,
  "PauseTime": Integer
}

Properti RollingUpdate

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Kendala

MaxBatchSize

Integer

Ya

Ya

Jumlah instance ECS tempat Anda ingin menjalankan perintah dalam setiap batch.

Nilai valid: 1 hingga 1000.

PauseTime

Integer

Tidak

Ya

Interval antara dua eksekusi perintah batch. Nilai default: 0. Satuan: detik.

Nilai valid: 0 hingga 3600.

Template sebelum dan sesudah pembaruan

Anda dapat menggunakan template berikut untuk menjalankan perintah yang sama pada tiga instance ECS:

{
    "ROSTemplateFormatVersion": "2015-09-01",
    "Resources": {
        "RunCommand": {
            "Type": "ALIYUN::ECS::RunCommand",
            "Properties": {
                "CommandContent": "xxx",
                "Type": "RunShellScript",
                "Sync": true,
                "InstanceIds": [
                    "i-2zxxxx",
                    "i-2zxxxx",
                    "i-2zxxxx",
                ]
            }
        }
    }
}

Setelah stack yang berisi instance ECS dibuat, Anda dapat menambahkan properti UpdatePolicy ke template untuk memperbarui konfigurasi instance ECS:

{
    "ROSTemplateFormatVersion": "2015-09-01",
    "Resources": {
        "RunCommand": {
            "Type": "ALIYUN::ECS::RunCommand",
            "Properties": {
                "CommandContent": "xxx",
                "Type": "RunShellScript",
                "Sync": true,
                "InstanceIds": [
                    "i-2zxxxx",
                    "i-2zxxxx",
                    "i-2zxxxx",
                    "i-2zxxxx",
                    "i-2zxxxx",
                ]
            },
            "UpdatePolicy": {
                "RollingUpdate": {
                    "MaxBatchSize": 2,
                    "PauseTime": 10
                }
            }
        }
    }
}

Dalam contoh kode di atas, MaxBatchSize diatur menjadi 2. Jumlah instance ECS yang ditunjukkan oleh InstanceIds diperbarui dari 3 menjadi 5. Selama proses pembaruan stack, konfigurasi tiga instance ECS asli diperbarui dalam dua batch dengan urutan tertentu. Setiap batch masing-masing mencakup dua dan satu instance. Perintah dijalankan pada dua instance ECS baru secara bersamaan.