すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:イメージビルダーでサポートされているコマンド

最終更新日:Apr 29, 2025

イメージビルダー機能は、イメージテンプレートを使用してイメージコンテンツをカスタマイズします。イメージコンポーネントを指定するか、コマンドを直接指定してイメージテンプレートを作成できます。イメージコンポーネントは、1 つ以上のコマンドで構成されています。コマンドは、イメージテンプレートの最小単位です。このトピックでは、イメージビルダーでサポートされている一般的なコマンドの構文と例を示します。

コマンド構文

イメージビルダーは、Linux および Windows オペレーティングシステム用の YAML Ain't Markup Language (YAML) 形式のコマンドと、Linux オペレーティングシステム専用の DockerFile 形式のコマンドをサポートしています。

説明

DockerFile 形式のコマンドは柔軟性がなく、オペレーティングシステムの制限があります。YAML 形式を使用することをお勧めします。

YAML 形式と DockerFile 形式のコマンドには、次の構文要件があります。

  • YAML: Parameters フィールドと Tasks フィールドを定義する必要があります。構文:

    Parameters: # (オプション) カスタムパラメーターを定義します。
      param1: # (必須) パラメーター名を指定します。
        Type: String # (必須) パラメータータイプを指定します。有効な値: String、Number、Boolean。
        DefaultValue: defaultValue # (オプション) パラメーターのデフォルト値を設定します。パラメーターにデフォルト値がない場合は、パラメーターが含まれているイメージコンポーネントを含むイメージテンプレートにパラメーターを明示的に渡す必要があります。
    Tasks: # イメージコンポーネントのタスクリストを定義します。これには、少なくとも 1 つのタスクが含まれます。タスクリスト内のタスクは順番に実行されます。
      - Name: taskName1 # (必須) タスク名を指定します。
        Action: RunShellCommand # (必須) タスクアクションを指定します。詳細については、YAML 形式のコンポーネントコマンドを参照してください。
        Properties: # アクションのプロパティを指定します。プロパティはアクションによって異なります。
          commandContent: echo {{ param1 }} # カスタムパラメーターを参照します。
      - Name: taskName2
        Action: action2
        Properties:
          action2Property1: {{ taskName1.stdout }} # taskName1 タスクの出力を参照します。
    説明

    前のパラメーターを Tasks フィールドのプロパティとして参照できます。次のサンプルコードは、参照構文を示しています。

    {{taskName1.stdout}}           
  • DockerFile

    • 各行には、1 つのコマンドまたは 1 つのコマンドの一部のみが含まれています。

    • 1 つのコマンドを複数行に分割できます。最後の行を除く各行の末尾にエスケープ文字 (\) を追加する必要があります。

イメージビルダーでサポートされているコマンド

次のセクションでは、[ECS コンソール] でイメージビルダーを使用してイメージコンポーネントを作成する場合、および API オペレーションを呼び出す場合に、イメージコンポーネントでサポートされているコマンド構文について説明します。

コンポーネント コマンド ([ECS コンソール] および API オペレーションでサポート)

(推奨) YAML 形式

コマンド

構文または例

説明

出力

RunShellCommand

Name: String
Action: RunShellCommand
Properties:
  commandContent: String # コマンドコンテンツを指定します。
  workingDir: String,optional # 作業ディレクトリを指定します。
  username: String,optional # コマンドの実行に使用するアカウントのユーザー名を指定します。
  • このコマンドは、シェルスクリプトを実行するために使用されます。

  • このコマンドは、Linux オペレーティングシステムにのみ適用されます。

stdout: String# コマンドの出力を指定します。

RunPowerShellCommand

Name: String
Action: RunPowerShellCommand
Properties:
  commandContent: String # コマンドコンテンツを指定します。
  workingDir: String,optional # 作業ディレクトリを指定します。
  username: String,optional # コマンドの実行に使用するアカウントのユーザー名を指定します。
  windowsPasswordName: String,optional # Windows インスタンスでコマンドを実行するために使用するアカウントのパスワードを指定します。
  • このコマンドは、PowerShell スクリプトを実行するために使用されます。

  • このコマンドは、Windows オペレーティングシステムにのみ適用されます。

InvokeCommand

Name: String
Action: InvokeCommand
Properties:
 commandId: String # コマンド ID を指定します。
 username: String,optional # コマンドの実行に使用するアカウントのユーザー名を指定します。
 parameters: Json,optional # カスタムパラメーターのキーと値のペアを指定します。

このコマンドは、共通コマンドを実行するために使用されます。

OSSDownload

Name: String
Action: OSSDownload
Properties:
 bucketName: String # Object Storage Service (OSS) バケットの名前を指定します。
 destinationDir: String # ECS インスタンス上のフォルダーを指定します。
 objectName: String # OSS オブジェクトの名前を指定します。
 ossRegion: String,optional # OSS リージョンを指定します。
 validTime: Number,optional # OSS オブジェクト URL の有効期間を指定します。
  • このコマンドは、OSS バケットから ECS インスタンスにファイルをダウンロードするために使用されます。

  • 使用するバケットには、allowImageBuilderAccess:true タグを追加する必要があります。

なし。

OSSUpload

Name: String
Action: OSSUpload
Properties:
 bucketName: String # OSS バケットの名前を指定します。
 fileToUpload: String # ECS インスタンスからアップロードするファイルのパスを指定します。
 objectName: String # OSS オブジェクトの名前を指定します。
 ossRegion: String,optional # OSS リージョンを指定します。
 validTime: Number,optional # OSS オブジェクト URL の有効期間を指定します。
  • このコマンドは、ECS インスタンスから OSS バケットにファイルをアップロードするために使用されます。

  • 使用する OSS バケットには、allowImageBuilderAccess:true タグを追加する必要があります。

WebDownload

Name: String
Action: WebDownload
Properties:
 sourcePath: String # ネットワークファイルの URL を指定します。
 tokenInfo: String,optional # ファイルのダウンロードに使用するトークンを指定します。このプロパティは、GitHub からファイルをダウンロードする場合にのみ必要です。
 destinationDir: String # ECS インスタンス上のファイルのダウンロード先ディレクトリを指定します。
 timeout: Number,option,default=600 # ダウンロードのタイムアウト時間を指定します。

このコマンドは、ネットワークからファイルをダウンロードするために使用されます。

Reboot

Name: String
Action: Reboot
Properties:
 forceStop: Boolean,optional,default=false # ECS インスタンスを強制的に再起動するかどうかを指定します。

このコマンドは、ECS インスタンスを再起動するために使用されます。

DockerFile 形式

コマンド

構文または例

説明

RESTART

RESTART

  • このコマンドは、ECS インスタンスを再起動するために使用されます。

  • コマンドの後にはコンテンツを追加しないでください。

RUN

RUN echo hello;\
echo world;
// 日本語のコメント
  • このコマンドは、イメージをビルドするために使用されます。

  • このコマンドは複数行に分割できます。最後の行を除く各行の末尾にエスケープ文字 (\) を追加する必要があります。

ENV

  • ENV key value

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

  • このコマンドは、システム変数を構成するために使用されます。

  • このコマンドは、キーと値のペアの形式です。

説明

コマンドの各システム変数の値の前後には、二重引用符 (") が必要です。例: ENV key1="value1" key2="value2"

WORKDIR

  • WORKDIR /<path>

  • WORKDIR <path1>/<path2>

このコマンドは、作業ディレクトリを指定するために使用されます。

COPY

  • COPY <Network file address> <On-premises destination directory>

  • COPY <On-premises source file path> <On-premises destination directory>

このコマンドは、ファイルをコピーするために使用されます。

説明

ネットワークファイルは wget ユーティリティを使用してダウンロードする必要があり、URL では クエリ文字列はサポートされていません。また、中間インスタンスはインターネットにアクセスできる必要があります。

USER

USER <username>

このコマンドは、コマンドの実行に使用するアカウントのユーザー名を指定するために使用されます。

説明

<username> 変数を既存のユーザー名に置き換えます。置き換えない場合、コマンド実行後にエラーが報告されます。

LABEL

LABEL user="username"\
date="2020-11-11" key="value"
  • このコマンドは、テンプレートメタデータを定義するために使用されます。

  • このコマンドは複数行に分割できます。最後の行を除く各行の末尾にエスケープ文字 (\) を追加する必要があります。

CMD

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

  • CMD command param1 param2

このコマンドは、システム起動時に特定のコマンドとパラメーターを実行できるようにするために使用されます。

ENTRYPOINT

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

  • CMD command param1 param2

このコマンドは、システム起動時に特定のコマンドとパラメーターを実行できるようにするために使用されます。

説明

CMD コマンドと ENTRYPOINT コマンドは、コンテナーの起動時に特定のコマンドとパラメーターを実行できるようにするために使用されます。これらのコマンドは、異なるユースケースのシナリオと機能を持ち、別々に使用することも、組み合わせて使用してより柔軟な結果を得ることもできます。 CMD コマンドと ENTRYPOINT コマンドの違いについては、「Dockerfile リファレンス」を参照してください。

テンプレートコマンド (DockerFile 形式、API オペレーションでのみサポート)

コマンド

構文または例

説明

COMPONENT

  • COMPONENT ic-bp18hy47cqavewsb****

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

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

    説明

    アスタリスク (*) をワイルドカード文字として使用して、イメージコンポーネントの最新バージョンを指定する <major><minor>、または <patch> 変数を置き換えることができます。

このコマンドは、イメージコンポーネントを指定するために使用されます。システムコンポーネントまたはカスタムコンポーネントを指定できます。

  • このコマンドは、イメージテンプレートにのみ適用されます。

  • イメージテンプレートを作成するときに、このコマンドを実行して、イメージテンプレートに 1 つ以上のイメージコンポーネントを指定できます。

  • このコマンドを使用して、YAML 形式または DockerFile 形式のコンポーネントを呼び出すことができます。

RESTART

RESTART

  • このコマンドは、ECS インスタンスを再起動するために使用されます。

  • コマンドの後にはコンテンツを追加しないでください。

RUN

RUN echo hello;\
echo world;
  • このコマンドは、イメージをビルドするために使用されます。

  • このコマンドは複数行に分割できます。最後の行を除く各行の末尾にエスケープ文字 (\) を追加する必要があります。

  • このコマンドは、Linux オペレーティングシステムにのみ適用されます。

ENV

  • ENV key value

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

  • このコマンドは、システム変数を構成するために使用されます。

  • このコマンドは、キーと値のペアの形式です。

  • このコマンドは、Linux オペレーティングシステムにのみ適用されます。

説明

コマンドの各システム変数の値の前後には、二重引用符 (") が必要です。例: ENV key1="value1" key2="value2"

WORKDIR

  • WORKDIR /<path>

  • WORKDIR <path1>/<path2>

  • このコマンドは、作業ディレクトリを指定するために使用されます。

  • このコマンドは、Linux オペレーティングシステムにのみ適用されます。

COPY

  • COPY <Network file address> <On-premises destination directory>

  • COPY <On-premises source file path> <On-premises destination directory>

  • このコマンドは、ファイルをコピーするために使用されます。

  • このコマンドは、Linux オペレーティングシステムにのみ適用されます。

説明

ネットワークファイルは wget ユーティリティを使用してダウンロードする必要があり、URL では クエリ文字列はサポートされていません。また、中間インスタンスはインターネットにアクセスできる必要があります。

USER

USER <username>

  • このコマンドは、コマンドの実行に使用するアカウントのユーザー名を指定するために使用されます。

  • このコマンドは、Linux オペレーティングシステムにのみ適用されます。

説明

<username> 変数は、システム内の既存のユーザー名に置き換えてください。そうしないと、コマンドの実行時にエラーが報告されます。

LABEL

LABEL user="username"\
date="2020-11-11" key="value"
  • このコマンドは、テンプレートメタデータを定義するために使用されます。

  • このコマンドは複数行に分割できます。最後の行を除く各行の末尾にエスケープ文字 (\) を追加する必要があります。

  • このコマンドは、Linux オペレーティングシステムにのみ適用されます。

CMD

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

  • CMD command param1 param2

  • このコマンドは、システム起動時に特定のコマンドとパラメーターを実行できるようにするために使用されます。

  • このコマンドは、Linux オペレーティングシステムにのみ適用されます。

ENTRYPOINT

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

  • CMD command param1 param2

  • このコマンドは、システム起動時に特定のコマンドとパラメーターを実行できるようにするために使用されます。

  • このコマンドは Linux オペレーティングシステムにのみ適用されます。

説明

CMD コマンドと ENTRYPOINT コマンドは、コンテナーの起動時に特定のコマンドとパラメーターを実行できるようにするために使用されます。これらのコマンドは、それぞれ異なる使用シナリオと機能を持ち、個別に使用することも、組み合わせて使用してより柔軟な結果を得ることもできます。 CMD コマンドと ENTRYPOINT コマンドの違いについては、「Dockerfile リファレンス」をご参照ください。

コマンド例

次のセクションでは、シナリオに基づいたコンポーネントコマンドとテンプレートコマンドの例を示します。

コンポーネントコマンド

例 1:イメージコンポーネントでカスタム入力パラメーターを使用する

この例では、(3x+2y+z)+(3x+2y+z) 関数がイメージコンポーネントに追加されます。コンポーネントを使用してイメージテンプレートを作成するたびに、x、y、および z に異なる値のセットが割り当てられます。次のサンプルコードは、コンポーネントコマンドの例を示しています。対応するテンプレートの例については、このトピックの例 1:カスタム入力パラメーターを含むイメージコンポーネントをイメージテンプレートに関連付け、入力パラメーターに値を割り当てるセクションをご参照ください。

Parameters:
  x:
    Type: String
  y:
    Type: String
  z:
    Type: String
Tasks:
  - Name: count
    Action: RunShellCommand
    Properties:
      commandContent: echo $((3 * {{x}} + 2 * {{y}} + {{z}})) # echo $((3 * {{x}} + 2 * {{y}} + {{z}})) の実行結果を出力します
  - Name: result
    Action: RunShellCommand
    Properties:
      commandContent: echo $(({{count.stdout}}+{{count.stdout}})) # echo $(({{count.stdout}}+{{count.stdout}})) の実行結果を出力します

例 2:イメージコンポーネントで OSS バケットに格納されているスクリプトファイルを指定する

イメージ構築のために、Object Storage Service (OSS) バケットに格納されている Linux スクリプトファイルをイメージコンポーネントで指定します。これにより、企業内の同じイメージから同じ構成を持つ複数の ECS インスタンスを作成することが容易になります。イメージコンポーネントには、OSSDownload アクションと OSSUpload アクションが含まれています。コンポーネントコードで AccessKey ペアをプレーンテキストで指定する必要はありません。

Tasks:
  - Name: ossdownload
    Action: OSSDownload
    Properties:
      bucketName: <OSS バケット名> # OSS バケット名を指定します
      destinationDir: /home # ダウンロード先のディレクトリを指定します
      objectName: <OSS バケットに格納されているスクリプトファイル> # OSS バケットに格納されているスクリプトファイルを指定します
  - Name: setpermissions
    Action: RunShellCommand
    Properties:
      commandContent: sudo chmod +x /home/<OSS バケットに格納されているスクリプトファイル> # スクリプトファイルに実行権限を付与します
  - Name: createfile
    Action: RunShellCommand
    Properties:
      commandContent: sudo touch /home/output.txt # output.txt ファイルを作成します
  - Name: setfilepermissions
    Action: RunShellCommand
    Properties:
      commandContent: sudo chmod 666 /home/output.txt # output.txt ファイルに読み書き権限を付与します
  - Name: result
    Action: RunShellCommand
    Properties:
      commandContent: sudo bash /home/<OSS バケットに格納されているスクリプトファイル> &> /home/output.txt # スクリプトファイルを実行し、結果を output.txt に出力します
  - Name: ossupload
    Action: OSSUpload
    Properties:
      bucketName: <OSS バケット名> # OSS バケット名を指定します
      fileToUpload: /home/output.txt # アップロードするファイルを指定します
      objectName: output.txt # アップロード後のオブジェクト名を指定します

テンプレートコマンド

例 1:カスタム入力パラメーターを含むイメージコンポーネントをイメージテンプレートに関連付け、入力パラメーターに値を割り当てる

例 1:イメージコンポーネントでカスタム入力パラメーターを使用する で作成したイメージコンポーネントの x、y、および z に値を割り当てます。テンプレートコマンドを実行するたびに、x、y、および z に異なる値のセットを割り当てることができます。

COMPONENT i-xxxxxxxxx --x 1 --y 2 --z 3 # イメージコンポーネント i-xxxxxxxxx にパラメーター x=1、y=2、z=3 を指定します

例 2:イメージテンプレートをイメージコンポーネントの最新バージョンに自動的に関連付ける

イメージコンポーネントに 1.0.1、1.0.2、1.0.3 などの複数のバージョンがある場合、テンプレートコマンドで 1.0.* のあいまいなバージョンを指定して、テンプレートを最新のコンポーネントバージョン 1.0.3 に自動的に関連付けることができます。

COMPONENT acs:ecs:ap-southeast-1:<Alibaba Cloud アカウント ID>:imagecomponent/<カスタム入力パラメーターを含むイメージコンポーネント名>/1.0.* # 最新バージョン 1.0.* を指定します