テンプレートと同様に、モジュールは UTF-8 でエンコードされた JSON または YAML テキストファイルです。このトピックでは、命名規則、制限、構造など、モジュールに関連する基本的な概念について説明します。
命名規則
モジュールは、次の 4 つの部分からなる命名規則に従います。MODULE::Organization::Service::Usecase。
MODULE: これは固定値です。Organization: 組織の名前。名前は 2 文字以上で、文字と数字を含めることができます。
名前に次の小文字の文字列を含めることはできません。
alicloud、alibaba、またはaliyun。名前は、次の小文字の文字列で始めることはできません。
acs。名前を次の小文字の文字列のいずれかに設定することはできません。
ros、dev、test、またはdebug。
Service: サービスの名前。名前は 2 文字以上で、文字と数字を含めることができます。
Usecase: リソースの名前。名前は 2 文字以上で、文字と数字を含めることができます。
モジュールを作成するときに Organization を SHARE に設定した場合、Service を現在の Alibaba Cloud アカウントの ID に設定する必要があります。たとえば、このシナリオでは MODULE::SHARE::123456789::Usecase を指定できます。
Organization が SHARE に設定されているカスタムモジュールは、共有モジュールと呼ばれます。他のユーザーは共有モジュールを表示および使用できますが、変更または削除することはできません。
制限
モジュールでは
TransformとWorkspaceを指定することはできません。モジュールでは、空の
Rulesのみ指定できます。カスタムモジュールは最大 3 レベルの深さまでネストできます。パブリックモジュールをカスタムモジュールと一緒に使用する場合、カスタムモジュールは 3 レベルの深さのままである必要があります。
次の図は、4 レベルの深さまでネストされたパブリックモジュールのみを示しています。ModuleA はレベル 1 に、ModuleB はレベル 2 に、ModuleC はレベル 3 に、ModuleD はレベル 4 にあります。

モジュール構造
ROSTemplateFormatVersion: '2015-09-01'
Description: The description of the module. The Description section provides information such as the scenarios, architecture, and method to use the module. # モジュールの説明。説明セクションでは、シナリオ、アーキテクチャ、モジュールの使用方法などの情報を提供します。
Metadata:
# The metadata of the module. The Metadata section provides information such as layouts for visualizations. # モジュールのメタデータ。メタデータセクションでは、視覚化のレイアウトなどの情報を提供します。
Parameters:
# The parameters of the module. When you use a module, you can specify parameter values from the template or module that contains the module. # モジュールのパラメーター。モジュールを使用する場合、モジュールを含むテンプレートまたはモジュールからパラメーター値を指定できます。
Mappings:
# The mappings of the module, which are in a nested structure. # モジュールのマッピング。ネストされた構造になっています。
Conditions:
# The conditions of the module, which specify whether the system can create resources. # モジュールの条件。システムがリソースを作成できるかどうかを指定します。
Resources:
# The details of resources or child modules that are contained in the module. The details include properties and associations. # モジュールに含まれるリソースまたは子モジュールの詳細。詳細には、プロパティと関連付けが含まれます。
Outputs:
# The outputs of the module. The outputs can be used by the template or module that contains the module. # モジュールの出力。出力は、モジュールを含むテンプレートまたはモジュールで使用できます。
(必須) ROSTemplateFormatVersion
モジュールセクションは、テンプレートセクションと同じ要件に準拠しています。詳細については、「(必須) ROSTemplateFormatVersion」をご参照ください。
(オプション) Description
モジュールセクションは、テンプレートセクションと同じ要件に準拠しています。詳細については、「(オプション) Description」をご参照ください。
Description を指定することをお勧めします。Description には複数の言語を指定できます。説明は、ユーザーがモジュールを適切な方法で使用するために役立ちます。モジュール詳細ページの [モジュールコンテンツ] タブに説明が表示されます。次の例は、Description に複数の言語を指定する方法の例を示しています:
Description:
en: |-
This is a demo.(オプション) Metadata
モジュールセクションは、テンプレートセクションと同じ要件に準拠しています。詳細については、「(オプション) Metadata」をご参照ください。
ROS がスタック操作を実行してテンプレートを処理および生成する場合、モジュールの Metadata セクションは無視されます。
モジュールを適切に使用するために、モジュールに Metadata を追加することをお勧めします。モジュールの Metadata セクションは、モジュール詳細ページの [サンプルテンプレート] タブに表示されるサンプルテンプレートに完全にコピーされます。これにより、テンプレートの表示効果が最適化されます。
(オプション) Parameters
モジュールセクションは、テンプレートセクションと同じ要件に準拠しています。詳細については、「(オプション) Parameters」をご参照ください。
モジュールパラメーターは、Type、AllowedValues、AllowedPattern、MaxLength、MinLength、MaxValue、MinValue パラメーターなどの制約の適用をサポートしていません。
モジュールパラメーターが空で、Default でデフォルト値が指定されている場合、ROS がスタック操作を実行してテンプレートを処理および生成するときに、デフォルト値が使用されます。
制限: パラメーター名に ピリオド (.) またはコロン (:) を含めることはできません。
推奨構成:
モジュールを適切に使用するために、テンプレートパラメータープロパティと同じくらい包括的なモジュールパラメータープロパティを構成できます。
モジュール詳細ページの [プロパティ] タブには、モジュールパラメーターと 1 対 1 で対応するすべてのプロパティが表示されます。各プロパティの [タイプ]、[必須]、[説明]、[制約] 列のデータは、モジュールコンテンツで構成されたパラメータープロパティに基づいて生成されます。
モジュール詳細ページの [サンプルテンプレート] タブには、モジュールのサンプルテンプレートが表示されます。テンプレートでは、
Parametersセクションは、モジュールコンテンツで構成されたパラメータープロパティに基づいて生成されます。これにより、パラメーター設定の有効性が確保され、テンプレートの表示効果が最適化されます。
DescriptionやLabelプロパティなど、多言語構成をサポートするプロパティをモジュールパラメーターに構成できます。
(オプション) Mappings
モジュールセクションは、テンプレートセクションと同じ要件に準拠しています。詳細については、「(オプション) Mappings」をご参照ください。
制限: マッピングの完全修飾名を重複させることはできません。完全修飾名の詳細については、「モジュール内の条件の参照」をご参照ください。
(オプション) Conditions
モジュールセクションは、テンプレートセクションと同じ要件に準拠しています。詳細については、「(オプション) Conditions」をご参照ください。
制限:
条件名にアンパサンド (
&) を含めることはできません。条件の完全修飾名を重複させることはできません。完全修飾名の詳細については、「モジュール内の条件の参照」をご参照ください。
(オプション) Resources
モジュールセクションは、テンプレートセクションと同じ要件に準拠しています。詳細については、「(オプション) Resources」をご参照ください。
リソースの DependsOn をアスタリスク (*) に設定できます。この場合、ROS がスタック操作を実行してテンプレートを処理および生成するときに、リソースは DependsOn がアスタリスク (*) に設定されていないすべてのリソースに依存します。
制限:
リソースの論理名にピリオド (
.) を含めることはできません。Resources セクションで
ALIYUN::ROS::Stack、ALIYUN::ROS::StackGroup、ALIYUN::ROS::StackInstancesリソースタイプを使用することはできません。Resources セクションで
Fn::GetStackOutput関数を使用することはできません。子モジュールに
MetadataとCountを指定することはできません。子モジュールに
Versionを指定する必要があります。リソースまたはモジュールの完全修飾論理名を重複させることはできません。完全修飾論理名の詳細については、「モジュール内のリソースの参照」をご参照ください。
共有モジュールでは、パブリックモジュールまたは他の共有モジュールのみ使用できます。
(オプション) Outputs
モジュールセクションは、テンプレートセクションと同じ要件に準拠しています。詳細については、「(オプション) Outputs」をご参照ください。
制限:
出力名にピリオド (
.) を含めることはできません。Outputs セクションで
Fn::GetStackOutput関数を使用することはできません。
推奨構成: 各出力に Description を指定できます。
モジュール詳細ページの [戻り値] タブには、モジュールコンテンツで構成された出力と 1 対 1 で対応するすべての戻り値が表示されます。戻り値の [説明] 列のデータは、モジュールコンテンツの出力に指定された
Descriptionに基づいて生成されます。モジュール詳細ページの [サンプルテンプレート] タブには、モジュールのサンプルテンプレートが表示されます。テンプレートでは、
Outputsセクションは、モジュールコンテンツで構成された出力に基づいて生成されます。これにより、テンプレートの表示効果が最適化されます。