Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Funzioni di condizione

Modalità Focus
Funzioni di condizione - AWS CloudFormation

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

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

Filtro Visualizza

Puoi utilizzare le funzioni intrinseche, come Fn::If, Fn::Equals e Fn::Not, per creare risorse di stack in modo condizionale. Le condizioni vengono valutate in base ai parametri di input dichiarati quando crei o aggiorni uno stack. Dopo aver definito tutte le condizioni, puoi associarle alle risorse o alle relative proprietà nelle sezioni Resources (Risorse) e Outputs (Output) di un modello.

Tutte le condizioni vengono definite nella sezione Conditions (Condizioni) di un modello, ad eccezione delle condizioni Fn::If. Puoi utilizzare la condizione Fn::If nell'attributo di metadati, nell'attributo delle policy di aggiornamento e nei valori di proprietà nelle sezioni Resources (Risorse) e Outputs (Output) di un modello.

Puoi utilizzare le condizioni quando vuoi riutilizzare un modello che può creare risorse in diversi contesti, ad esempio un ambiente di test rispetto a un ambiente di produzione. Nel modello puoi aggiungere un parametro di input EnvironmentType, che accetta prod o test come input. Per l'ambiente di produzione, potresti includere EC2 istanze Amazon con determinate funzionalità; tuttavia, per l'ambiente di test, desideri utilizzare meno funzionalità per risparmiare sui costi. Grazie alle condizioni, puoi definire quali risorse vengono creati e come vengono configurate per ciascun tipo di ambiente.

Per ulteriori informazioni sulla sezione Conditions (Condizioni), consulta CloudFormation modello Conditions sintassi.

Nota

Puoi fare riferimento solo ad altre condizioni e valori inclusi nelle sezioni Parameters (Parametri) e Mapping (Mappatura) di un modello. Ad esempio, è possibile fare riferimento al valore di un parametro di input, ma non all'ID logico di una risorsa in una condizione.

Associazione di una condizione

Per creare risorse, proprietà della risorsa o output in modo condizionale, devi associarvi una condizione. Aggiungi la Condition: chiave e l'ID logico della condizione come attributo per associare una condizione, come mostrato nel frammento seguente. AWS CloudFormation crea la NewVolume risorsa solo quando la CreateProdResources condizione risulta vera.

JSON

"NewVolume" : { "Type" : "AWS::EC2::Volume", "Condition" : "CreateProdResources", "Properties" : { "Size" : "100", "AvailabilityZone" : { "Fn::GetAtt" : [ "EC2Instance", "AvailabilityZone" ]} }

YAML

NewVolume: Type: "AWS::EC2::Volume" Condition: CreateProdResources Properties: Size: 100 AvailabilityZone: !GetAtt EC2Instance.AvailabilityZone

Fn::If

Per la funzione Fn::If, è sufficiente specificare il nome della condizione. I seguenti frammenti mostrano come usare Fn::If per specificare una proprietà della risorsa in modo condizionale. Se la CreateLargeSize condizione è vera, CloudFormation imposta la dimensione del volume su100. Se la condizione è falsa, CloudFormation imposta la dimensione del volume su10.

JSON

{ "NewVolume": { "Type": "AWS::EC2::Volume", "Properties": { "Size": { "Fn::If": [ "CreateLargeSize", "100", "10" ] }, "AvailabilityZone": { "Fn::GetAtt": [ "Ec2Instance", "AvailabilityZone" ] } }, "DeletionPolicy": "Snapshot" } }

YAML

NewVolume: Type: 'AWS::EC2::Volume' Properties: Size: 'Fn::If': - CreateLargeSize - '100' - '10' AvailabilityZone: 'Fn::GetAtt': - Ec2Instance - AvailabilityZone DeletionPolicy: Snapshot

Condizioni nidificate

Puoi anche utilizzare le condizioni all'interno di altre condizioni. Il seguente frammento è tratto dalla sezione Conditions di un modello. La condizione MyAndCondition include la condizione SomeOtherCondition:

JSON
"MyAndCondition": { "Fn::And": [ {"Fn::Equals": ["sg-mysggroup", {"Ref": "ASecurityGroup"}]}, {"Condition": "SomeOtherCondition"} ] }
YAML
MyAndCondition: !And - !Equals ["sg-mysggroup", !Ref "ASecurityGroup"] - !Condition SomeOtherCondition

Fn::And

Restituisce true se una delle condizioni specificate viene valutata 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 è 2, il numero massimo è 10.

Dichiarazione

JSON

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

YAML

Sintassi per il nome completo della funzione:

Fn::And: [condition]

Sintassi per la forma breve:

!And [condition]

Parametri

condition

Una condizione che corrisponde a true o false.

Esempio

La seguente funzione MyAndCondition viene valutata true se il nome del gruppo di sicurezza a cui si fa riferimento è uguale a sg-mysggroup e se SomeOtherCondition corrisponde a true:

JSON

"MyAndCondition": { "Fn::And": [ {"Fn::Equals": ["sg-mysggroup", {"Ref": "ASecurityGroup"}]}, {"Condition": "SomeOtherCondition"} ] }

YAML

MyAndCondition: !And - !Equals ["sg-mysggroup", !Ref ASecurityGroup] - !Condition SomeOtherCondition

Fn::Equals

Confronta due valori per capire se sono uguali. Restituisce true se i due valori sono uguali o false se non lo sono.

Dichiarazione

JSON

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

YAML

Sintassi per il nome completo della funzione:

Fn::Equals: [value_1, value_2]

Sintassi per la forma breve:

!Equals [value_1, value_2]

Parametri

value

Un valore di qualsiasi tipo che intendi confrontare.

Esempio

La seguente condizione UseProdCondition viene valutata true se il valore per il parametro EnvironmentType è uguale a prod:

JSON

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

YAML

UseProdCondition: !Equals [!Ref EnvironmentType, prod]

Fn::If

Restituisce un valore se la condizione specificata viene valutata true e un altro valore se viene valutata false. Al momento, CloudFormation supporta la funzione intrinseca Fn::If nell'attributo di metadati, nell'attributo delle policy di aggiornamento e nei valori di proprietà nelle sezioni Resources (Risorse) e Outputs (Output) di un modello. Puoi utilizzare lo pseudoparametro AWS::NoValue come valore restituito per rimuovere la proprietà corrispondente.

Dichiarazione

YAML

Sintassi per il nome completo della funzione:

Fn::If: [condition_name, value_if_true, value_if_false]

Sintassi per la forma breve:

!If [condition_name, value_if_true, value_if_false]

Parametri

condition_name

Un riferimento a una condizione nella sezione Conditions (Condizioni). Utilizza il nome della condizione per farvi riferimento.

value_if_true

Un valore da restituire se la condizione specificata viene valutata true.

value_if_false

Un valore da restituire se la condizione specificata viene valutata false.

Esempi

Per altri esempi, consulta Modelli di esempio.

Esempio 1

Il seguente frammento utilizza una Fn::If funzione nella SecurityGroups proprietà per una risorsa Amazon EC2 . Se la CreateNewSecurityGroup condizione risulta vera, CloudFormation utilizza il valore di riferimento di NewSecurityGroup per specificare la SecurityGroups proprietà; in caso contrario, CloudFormation utilizza il valore di riferimento di. ExistingSecurityGroup

JSON
"SecurityGroups" : [{ "Fn::If" : [ "CreateNewSecurityGroup", {"Ref" : "NewSecurityGroup"}, {"Ref" : "ExistingSecurityGroup"} ] }]
YAML
SecurityGroups: - !If [CreateNewSecurityGroup, !Ref NewSecurityGroup, !Ref ExistingSecurityGroup]

Esempio 2

Nella sezione Output di un modello, è possibile utilizzare la funzione Fn::If per restituire le informazioni in modo condizionale. Nel frammento seguente, se la CreateNewSecurityGroup condizione restituisce true, restituisce l'ID del gruppo di CloudFormation sicurezza della risorsa. NewSecurityGroup Se la condizione è falsa, CloudFormation restituisce l'ID del gruppo di sicurezza della risorsa. ExistingSecurityGroup

JSON
"Outputs" : { "SecurityGroupId" : { "Description" : "Group ID of the security group used.", "Value" : { "Fn::If" : [ "CreateNewSecurityGroup", {"Ref" : "NewSecurityGroup"}, {"Ref" : "ExistingSecurityGroup"} ] } } }
YAML
Outputs: SecurityGroupId: Description: Group ID of the security group used. Value: !If [CreateNewSecurityGroup, !Ref NewSecurityGroup, !Ref ExistingSecurityGroup]

Esempio 3

Il seguente frammento utilizza lo AWS::NoValue pseudoparametro in una funzione Fn::If. La condizione utilizza una snapshot per un'istanza database Amazon RDS solo se viene fornito un ID snapshot. Se la UseDBSnapshot condizione risulta vera, CloudFormation utilizza il valore del DBSnapshotName parametro per la DBSnapshotIdentifier proprietà. Se la condizione restituisce false, CloudFormation rimuove la proprietà DBSnapshotIdentifier.

JSON
"MyDB" : { "Type" : "AWS::RDS::DBInstance", "Properties" : { "AllocatedStorage" : "5", "DBInstanceClass" : "db.t2.small", "Engine" : "MySQL", "EngineVersion" : "5.5", "MasterUsername" : { "Ref" : "DBUser" }, "MasterUserPassword" : { "Ref" : "DBPassword" }, "DBParameterGroupName" : { "Ref" : "MyRDSParamGroup" }, "DBSnapshotIdentifier" : { "Fn::If" : [ "UseDBSnapshot", {"Ref" : "DBSnapshotName"}, {"Ref" : "AWS::NoValue"} ] } } }
YAML
MyDB: Type: "AWS::RDS::DBInstance" Properties: AllocatedStorage: 5 DBInstanceClass: db.t2.small Engine: MySQL EngineVersion: 5.5 MasterUsername: !Ref DBUser MasterUserPassword: !Ref DBPassword DBParameterGroupName: !Ref MyRDSParamGroup DBSnapshotIdentifier: !If [UseDBSnapshot, !Ref DBSnapshotName, !Ref "AWS::NoValue"]

Esempio 4

Il seguente frammento fornisce una policy di aggiornamento di dimensionamento automatico solo se la condizione RollingUpdates viene valutata true. Se la condizione risulta falsa, CloudFormation rimuove la politica di AutoScalingRollingUpdate aggiornamento.

JSON
"UpdatePolicy": { "AutoScalingRollingUpdate": { "Fn::If": [ "RollingUpdates", { "MaxBatchSize": "2", "MinInstancesInService": "2", "PauseTime": "PT0M30S" }, { "Ref" : "AWS::NoValue" } ] } }
YAML
UpdatePolicy: AutoScalingRollingUpdate: !If - RollingUpdates - MaxBatchSize: 2 MinInstancesInService: 2 PauseTime: PT0M30S - !Ref "AWS::NoValue"

Fn::Not

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

Dichiarazione

JSON

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

YAML

Sintassi per il nome completo della funzione:

Fn::Not: [condition]

Sintassi per la forma breve:

!Not [condition]

Parametri

condition

Una condizione come Fn::Equals che viene valutata true o false.

Esempio

La seguente condizione EnvCondition viene valutata true se il valore per il parametro EnvironmentType è uguale a prod:

JSON

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

YAML

MyNotCondition: !Not [!Equals [!Ref EnvironmentType, prod]]

Fn::Or

Restituisce true se una qualsiasi delle condizioni specificate viene valutata true; restituisce false se tutte le condizioni vengono valutate false. Fn::Or agisce come operatore OR. Il numero minimo di condizioni che puoi includere è 2, il numero massimo è 10.

Dichiarazione

JSON

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

YAML

Sintassi per il nome completo della funzione:

Fn::Or: [condition, ...]

Sintassi per la forma breve:

!Or [condition, ...]

Parametri

condition

Una condizione che corrisponde a true o false.

Esempio

La seguente funzione MyOrCondition viene valutata true se il nome del gruppo di sicurezza a cui si fa riferimento è uguale a sg-mysggroup o se SomeOtherCondition viene valutata true:

JSON

"MyOrCondition" : { "Fn::Or" : [ {"Fn::Equals" : ["sg-mysggroup", {"Ref" : "ASecurityGroup"}]}, {"Condition" : "SomeOtherCondition"} ] }

YAML

MyOrCondition: !Or [!Equals [sg-mysggroup, !Ref ASecurityGroup], Condition: SomeOtherCondition]

Funzioni supportate

È possibile utilizzare le funzioni seguenti nella condizione Fn::If:

  • Fn::Base64

  • Fn::FindInMap

  • Fn::GetAtt

  • Fn::GetAZs

  • Fn::If

  • Fn::Join

  • Fn::Select

  • Fn::Sub

  • Ref

È possibile utilizzare le seguenti funzioni in tutte le altre funzioni di condizione, ad esempio Fn::Equals e Fn::Or:

  • Fn::FindInMap

  • Ref

  • Altre funzioni di condizione

Argomento successivo:

Modelli di esempio

Argomento precedente:

Fn::Cidr
PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.