イメージビルダー機能は、イメージテンプレートを使用してイメージコンテンツをカスタマイズします。イメージコンポーネントを指定するか、コマンドを直接指定してイメージテンプレートを作成できます。イメージコンポーネントは、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 | |
| |
RunPowerShellCommand | |
| |
InvokeCommand | | このコマンドは、共通コマンドを実行するために使用されます。 | |
OSSDownload | |
| なし。 |
OSSUpload | |
| |
WebDownload | | このコマンドは、ネットワークからファイルをダウンロードするために使用されます。 | |
Reboot | | このコマンドは、ECS インスタンスを再起動するために使用されます。 |
DockerFile 形式
コマンド | 構文または例 | 説明 |
RESTART |
|
|
RUN | |
|
ENV |
|
説明 コマンドの各システム変数の値の前後には、二重引用符 (") が必要です。例: |
WORKDIR |
| このコマンドは、作業ディレクトリを指定するために使用されます。 |
COPY |
| このコマンドは、ファイルをコピーするために使用されます。 説明 ネットワークファイルは |
USER |
| このコマンドは、コマンドの実行に使用するアカウントのユーザー名を指定するために使用されます。 説明
|
LABEL | |
|
CMD |
| このコマンドは、システム起動時に特定のコマンドとパラメーターを実行できるようにするために使用されます。 |
ENTRYPOINT |
| このコマンドは、システム起動時に特定のコマンドとパラメーターを実行できるようにするために使用されます。 説明
|
テンプレートコマンド (DockerFile 形式、API オペレーションでのみサポート)
コマンド | 構文または例 | 説明 |
COMPONENT |
| このコマンドは、イメージコンポーネントを指定するために使用されます。システムコンポーネントまたはカスタムコンポーネントを指定できます。
|
RESTART |
|
|
RUN | |
|
ENV |
|
説明 コマンドの各システム変数の値の前後には、二重引用符 (") が必要です。例: |
WORKDIR |
|
|
COPY |
|
説明 ネットワークファイルは |
USER |
|
説明
|
LABEL | |
|
CMD |
|
|
ENTRYPOINT |
|
説明
|
コマンド例
次のセクションでは、シナリオに基づいたコンポーネントコマンドとテンプレートコマンドの例を示します。
コンポーネントコマンド
例 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.* を指定します