Funzioni delle regole - AWS CloudFormation

Questa è la nuova Guida di riferimento ai modelli CloudFormation. Aggiorna i segnalibri e i link. Per informazioni su come iniziare CloudFormation, consulta la Guida AWS CloudFormation per l'utente.

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à.

Funzioni delle regole

Le funzioni delle regole sono funzioni speciali che funzionano solo nella sezione Rules di un modello CloudFormation. Queste funzioni ti consentono di convalidare i valori dei parametri utilizzando una logica personalizzata. Tutte le convalide avvengono prima che CloudFormation crei o aggiorni qualsiasi risorsa.

Le regole sono utili quando i vincoli dei parametri standard sono insufficienti. Ad esempio, quando SSL è abilitato, devono essere forniti sia un certificato che un nome di dominio. Una regola può garantire il rispetto di queste dipendenze.

Nella condizione o nelle asserzioni di una regola, puoi utilizzare le funzioni intrinseche, ad esempio Fn::Equals, Fn::Not e Fn::RefAll. La proprietà della condizione determina se CloudFormation applica le asserzioni. Se la condizione restituisce true, CloudFormation valuta le asserzioni per verificare se un valore di parametro è valido quando si crea o si aggiorna uno stack. Se un valore di parametro non è valido, CloudFormation non crea o aggiorna lo stack. Se la condizione restituisce false, CloudFormation non verifica il valore di parametro e procede con l’operazione di stack.

Se non sai come utilizzare le regole nei tuoi modelli, ti consigliamo di consultare prima l’argomento CloudFormation template Rules syntax nella Guida per l’utente di AWS CloudFormation.

Fn::And

Restituisce true se tutte le condizioni specificate vengono valutate true; restituisce false se una qualsiasi delle condizioni corrisponde a false. Fn::And agisce come operatore AND. Il numero minimo di condizioni che puoi includere è due, il numero massimo è dieci.

Dichiarazione

"Fn::And" : [{condition}, {...}]

Parametri

condition

Una funzione intrinseca specifica delle regole che restituisce true o false.

Esempio

L’esempio seguente restituisce true se il nome del gruppo di sicurezza a cui si fa riferimento è uguale a sg-mysggroup e se il valore di parametro InstanceType è t3.large o t3.small:

"Fn::And": [ { "Fn::Equals": [ "sg-mysggroup", {"Ref": "ASecurityGroup"} ] }, { "Fn::Contains": [ [ "t3.large", "t3.small" ], {"Ref": "InstanceType"} ] } ]

Fn::Contains

Restituisce true se una stringa specificata corrisponde ad almeno un valore in un elenco di stringhe.

Dichiarazione

"Fn::Contains" : [[list_of_strings], string]

Parametri

list_of_strings

Un elenco di stringhe, ad esempio "A", "B", "C".

string

Una stringa, ad esempio "A", che intendi confrontare con un elenco di stringhe.

Esempio

La funzione seguente restituisce true se il valore di parametro InstanceType è incluso nell’elenco (t3.large o t3.small):

"Fn::Contains" : [ ["t3.large", "t3.small"], {"Ref" : "InstanceType"} ]

Fn::EachMemberEquals

Restituisce true se una stringa specificata corrisponde a tutti i valori in un elenco.

Dichiarazione

"Fn::EachMemberEquals" : [[list_of_strings], string]

Parametri

list_of_strings

Un elenco di stringhe, ad esempio "A", "B", "C".

string

Una stringa, ad esempio "A", che intendi confrontare con un elenco di stringhe.

Esempio

La funzione seguente restituisce true se il tag Department per tutti i parametri di tipo AWS::EC2::VPC::Id hanno valore IT:

"Fn::EachMemberEquals" : [ {"Fn::ValueOfAll" : ["AWS::EC2::VPC::Id", "Tags.Department"]}, "IT" ]

Fn::EachMemberIn

Restituisce true se ogni membro in un elenco di stringhe corrisponde ad almeno un valore in un secondo elenco di stringhe.

Dichiarazione

"Fn::EachMemberIn" : [[strings_to_check], [strings_to_match]]

Parametri

strings_to_check

Un elenco di stringhe, ad esempio "A", "B", "C". CloudFormation verifica se ogni membro nel parametro strings_to_check è nel parametro strings_to_match.

strings_to_match

Un elenco di stringhe, ad esempio "A", "B", "C". Ogni membro nel parametro strings_to_match viene confrontato con i membri del parametro strings_to_check.

Esempio

La funzione seguente verifica se gli utenti specificano una sottorete in un Virtual Private Cloud (VPC) valido. Il VPC deve essere nell’account e nella Regione in cui gli utenti utilizzano lo stack. La funzione si applica a tutti i parametri di tipo AWS::EC2::Subnet::Id.

"Fn::EachMemberIn" : [ {"Fn::ValueOfAll" : ["AWS::EC2::Subnet::Id", "VpcId"]}, {"Fn::RefAll" : "AWS::EC2::VPC::Id"} ]

Fn::Equals

Confronta due valori per determinare se sono uguali. Restituisce true se i due valori sono uguali e false se non lo sono.

Dichiarazione

"Fn::Equals" : ["value_1", "value_2"]

Parametri

value

Un valore di qualsiasi tipo che intendi confrontare con un altro valore.

Esempio

L’esempio seguente restituisce true se il valore per il parametro EnvironmentType è uguale a prod:

"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "prod"]

Fn::Not

Restituisce true per una condizione che viene valutata false e restituisce false per una condizione che viene valutata true. Fn::Not agisce come operatore NOT.

Dichiarazione

"Fn::Not" : [{condition}]

Parametri

condition

Una funzione intrinseca specifica delle regole che restituisce true o false.

Esempio

L’esempio seguente restituisce true se il valore per il parametro EnvironmentType non è uguale a prod:

"Fn::Not" : [{"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "prod"]}]

Fn::Or

Restituisce true se una delle condizioni specificate viene valutata true; restituisce false se tutte le condizioni corrispondono a false. Fn::Or agisce come operatore OR. Il numero minimo di condizioni che puoi includere è due, il numero massimo è dieci.

Dichiarazione

"Fn::Or" : [{condition}, {...}]

Parametri

condition

Una funzione intrinseca specifica delle regole che restituisce true o false.

Esempio

L’esempio seguente restituisce true se il nome del gruppo di sicurezza a cui si fa riferimento è uguale a sg-mysggroup o se il valore di parametro InstanceType è t3.large o t3.small:

"Fn::Or" : [ {"Fn::Equals" : ["sg-mysggroup", {"Ref" : "ASecurityGroup"}]}, {"Fn::Contains" : [["t3.large", "t3.small"], {"Ref" : "InstanceType"}]} ]

Fn::RefAll

Restituisce tutti i valori per un tipo di parametro specificato.

Dichiarazione

"Fn::RefAll" : "parameter_type"

Parametri

parameter_type

Un tipo di parametro specifico di AWS, ad esempio AWS::EC2::SecurityGroup::Id o AWS::EC2::VPC::Id. Per ulteriori informazioni, consulta Supported AWS-specific parameter types nella Guida per l’utente di AWS CloudFormation.

Esempio

La funzione seguente restituisce un elenco di tutti gli ID di VPC per la Regione e l’Account AWS in cui lo stack viene creato o aggiornato:

"Fn::RefAll" : "AWS::EC2::VPC::Id"

Fn::ValueOf

Restituisce un valore di attributo o un elenco di valori per un parametro e un attributo specifici.

Dichiarazione

"Fn::ValueOf" : [ "parameter_logical_id", "attribute" ]

Parametri

attributo

Il nome di un attributo da cui recuperare un valore. Per ulteriori informazioni sugli attributi, consulta Attributi supportati.

parameter_logical_id

Il nome di un parametro da cui recuperare un valore. Il parametro deve essere dichiarato nella sezione Parameters del modello.

Esempi

L’esempio seguente restituisce il valore del tag Department per il VPC specificato dal parametro ElbVpc:

"Fn::ValueOf" : ["ElbVpc", "Tags.Department"]

Se specifichi più valori per un parametro, la funzione Fn::ValueOf può restituire un elenco. Ad esempio, se specifichi più sottoreti e ottieni un elenco di zone di disponibilità in cui ogni membro è la zona di disponibilità di una determinata sottorete:

"Fn::ValueOf" : ["ListOfElbSubnets", "AvailabilityZone"]

Fn::ValueOfAll

Restituisce un elenco di tutti i valori di attributo per un tipo di parametro e un attributo specifici.

Dichiarazione

"Fn::ValueOfAll" : ["parameter_type", "attribute"]

Parametri

attributo

Il nome di un attributo a partire dal quale intendi recuperare un valore. Per ulteriori informazioni sugli attributi, consulta Attributi supportati.

parameter_type

Un tipo di parametro specifico di AWS, ad esempio AWS::EC2::SecurityGroup::Id o AWS::EC2::VPC::Id. Per ulteriori informazioni, consulta Supported AWS-specific parameter types nella Guida per l’utente di AWS CloudFormation.

Esempio

Nell’esempio seguente, la funzione Fn::ValueOfAll restituisce un elenco di valori, dove ogni membro è il valore di tag Department per i VPC con quel tag:

"Fn::ValueOfAll" : ["AWS::EC2::VPC::Id", "Tags.Department"]

Funzioni supportate

Non puoi utilizzare un’altra funzione nelle funzioni Fn::ValueOf e Fn::ValueOfAll. Tuttavia, è consentito utilizzare le seguenti funzioni in tutte le altre funzioni intrinseche specifiche delle regole:

  • Ref

  • Altre funzioni intrinseche specifiche delle regole

Attributi supportati

Il seguente elenco descrive i valori di attributo che è possibile recuperare per determinati tipi di parametro e risorse:

Il tipo di parametro AWS::EC2::VPC::Id o gli ID VPC.
  • DefaultNetworkAcl

  • DefaultSecurityGroup

  • Tag.tag_key

Il tipo di parametro AWS::EC2::Subnet::Id o gli ID sottorete.
  • AvailabilityZone

  • Tag.tag_key

  • VpcId

Il tipo di parametro AWS::EC2::SecurityGroup::Id o gli ID gruppo di sicurezza.
  • Tag.tag_key