Utilisez la section Rules d'un modèle Resource Orchestration Service (ROS) pour valider les valeurs des paramètres avant de créer ou de mettre à jour une pile. Les règles détectent rapidement les configurations invalides, par exemple lorsque deux paramètres doivent être cohérents, comme l'obligation d'utiliser la facturation à l'utilisation dans un environnement de préproduction.
Syntaxe
Déclarez une ou plusieurs règles nommées dans la section Rules du modèle. Séparez les règles par des virgules (,).
Rules:
Rule Name 1:
RuleCondition: the condition of the rule.
Assertions:
- Assert: the assertion of the rule.
AssertDescription: the description of the assertion.
- Assert: the assertion of the rule.
AssertDescription: the description of the assertion.
Rule Name 2:
Assertions:
- Assert: the assertion of the rule.
(Facultatif)
RuleCondition: condition déterminant quand la règle s'applique.Si omise, les assertions s'appliquent systématiquement.-
Assertions: une ou plusieurs instructions définissant les valeurs acceptables pour un paramètre.RemarqueChaque bloc
Assertionspeut contenir jusqu'à 100 pairesAssertetAssertDescription. Assert: expression d'assertion. Doit être évaluée àtrueoufalse.(Facultatif)
AssertDescription: message affiché en cas d'échec de l'assertion. Utilisez un message explicite indiquant aux utilisateurs la valeur à fournir, par exemple « L'instance ECS doit utiliser la facturation à l'utilisation dans l'environnement de préproduction ».
Vous ne pouvez définir qu'une seule RuleCondition par règle. Les Assertions s'appliquent uniquement si la RuleCondition est omise ou évaluée à true. Lorsque l'Assert est évalué à true, les valeurs des paramètres sont valides et la pile peut passer aux étapes de prévisualisation, de création ou de mise à jour.
Les ressources DataSource ne peuvent pas être référencées dans les conditions ou les assertions de règle.
Exemple
Contraintes de paramètres basées sur l'environnement
L'exemple suivant applique des contraintes spécifiques à l'environnement à l'aide de deux règles :
Dans l'environnement de production (
prod), l'instance ECS doit utiliser un accès intranet uniquement (la bande passante Internet est définie sur0).-
Dans l'environnement de préproduction (
pre), l'instance ECS doit utiliser la facturation à l'utilisation.ROSTemplateFormatVersion: '2015-09-01' Rules: PublicNet: RuleCondition: Fn::Equals: - Ref: Environment - prod Assertions: - Assert: Fn::Equals: - Ref: InternetMaxBandwidthOut - 0 AssertDescription: ECS instance should be intranet when the environment is prod. ChargeType: RuleCondition: Fn::Equals: - Ref: Environment - pre Assertions: - Assert: Fn::Equals: - Ref: InstanceChargeType - PayAsYouGo AssertDescription: ECS instance should be postpaid when the environment is pre. Parameters: Environment: Type: String AllowedValues: - prod - pre InternetMaxBandwidthOut: Type: Number MaxValue: 10 MinValue: 0 InstanceChargeType: Type: String AllowedValues: - PayAsYouGo - Subscription Resources: ECS: Type: ALIYUN::ECS::InstanceGroup Properties: InternetMaxBandwidthOut: Ref: InternetMaxBandwidthOut InstanceChargeType: Ref: InstanceChargeType #Other properties (omitted here): null.
Chaque règle utilise Fn::Equals pour vérifier le paramètre Environment et n'active ses assertions que lorsque la condition est remplie. Si un utilisateur définit Environment sur prod mais spécifie une bande passante non nulle, la création de la pile échoue avec le message AssertDescription.