Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Regole di vincolo di modello
Le regole che definiscono i vincoli del modello in un AWS Service Catalog portfolio descrivono quando gli utenti finali possono utilizzare il modello e quali valori possono specificare per i parametri dichiarati nel AWS CloudFormation modello utilizzato per creare il prodotto che stanno tentando di utilizzare. Le regole sono utili per impedire agli utenti finali di specificare inavvertitamente un valore non corretto. Ad esempio, è possibile aggiungere una regola per verificare se gli utenti finali hanno specificato una sottorete valida in un determinato VPC o utilizzati tipi di istanze m1.small
per gli ambienti di test. AWS CloudFormation utilizza regole per convalidare i valori dei parametri prima di creare le risorse per il prodotto.
Ogni regola è costituita da due proprietà: una condizione di regola (facoltativa) e asserzioni (obbligatorie). La condizione di regola determina quando una regola viene attivata. Le asserzioni descrivono quali valori gli utenti possono specificare per un particolare parametro. Se non definisci una condizione di regola, le asserzioni della regola sono sempre attivate. Per definire una condizione e asserzioni di regola, devi utilizzare funzioni intrinseche specifiche delle regole, ovvero funzioni che possono essere utilizzate solo nella sezione Rules
di un modello. È possibile nidificare le funzioni, ma il risultato finale di una condizione o di un'asserzione di regola deve essere true o false.
Supponiamo, ad esempio, che hai dichiarato un VPC e un parametro di sottorete nella sezione Parameters
. Puoi creare una regola che verifica che una data sottorete si trova in un determinato VPC. Quindi, quando un utente specifica un VPC, AWS CloudFormation valuta l'asserzione per verificare se il valore del parametro di sottorete è in quel VPC prima di creare o aggiornare lo stack. Se il valore di parametro non è valido, AWS CloudFormation non riesce a creare o ad aggiornare lo stack. Se gli utenti non specificano un VPC, AWS CloudFormation non verifica il valore di parametro della sottorete.
Sintassi
La sezione Rules
di un modello comporta il nome di chiave Rules
, seguito da un segno di due punti. Tutte le dichiarazioni di regola sono racchiuse tra parentesi graffe. Se dichiari più regole, queste sono delimitate da virgole. Per ogni regola, dichiari un nome logico tra virgolette seguito da un segno di due punti e parentesi graffe che racchiudono la condizione e le asserzioni di regola.
Una regola può includere una proprietà RuleCondition
e deve includere una proprietà Assertions
. Per ogni regola, puoi definire una sola condizione di regola nonché una o più asserzioni nella proprietà Assertions
. Per definire una condizione e asserzioni di regola, si utilizzano funzioni intrinseche specifiche delle regole, come mostrato nello pseudo-modello seguente:
"Rules":{
"Rule01":{
"RuleCondition":{
"Rule-specific intrinsic function"
},
"Assertions":[
{
"Assert":{
"Rule-specific intrinsic function"
},
"AssertDescription":"Information about this assert"
},
{
"Assert":{
"Rule-specific intrinsic function"
},
"AssertDescription":"Information about this assert"
}
]
},
"Rule02":{
"Assertions":[
{
"Assert":{
"Rule-specific intrinsic function"
},
"AssertDescription":"Information about this assert"
}
]
}
}
Il pseudomodello mostra una sezione Rules
contenente due regole denominate Rule01
e Rule02
. Rule01
include una condizione di regola e due asserzioni. Se la funzione nella condizione di regola restituisce true, entrambe le funzioni in ogni asserzione vengono valutate e applicate. Se la condizione di regola è falsa, la regola non viene applicata. Rule02
diventa sempre effettiva perché non ha una condizione di regola, il che significa che la singola istruzione Assert viene sempre valutata e applicata.
Esempio: verifica condizionale di un valore di parametro
Le due regole seguenti verificano il valore del parametro InstanceType
. A seconda del valore del parametro Environment (test
o prod
), l'utente deve specificare m1.small
o m1.large
per il parametro InstanceType
. I parametri InstanceType
e Environment
devono essere dichiarati nella sezione Parameters
dello stesso modello.
"Rules" : { "testInstanceType" : { "RuleCondition" : {"Fn::Equals":[{"Ref":"Environment"}, "test"]}, "Assertions" : [ { "Assert" : { "Fn::Contains" : [ ["m1.small"], {"Ref" : "InstanceType"} ] }, "AssertDescription" : "For the test environment, the instance type must be m1.small" } ] }, "prodInstanceType" : { "RuleCondition" : {"Fn::Equals":[{"Ref":"Environment"}, "prod"]}, "Assertions" : [ { "Assert" : { "Fn::Contains" : [ ["m1.large"], {"Ref" : "InstanceType"} ] }, "AssertDescription" : "For the prod environment, the instance type must be m1.large" } ] } }