Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Sintaxe de Conditions de modelo do CloudFormation

Modo de foco
Sintaxe de Conditions de modelo do CloudFormation - AWS CloudFormation
Filtrar visualização

A seção Conditions opcional contém instruções que definem as circunstâncias nas quais entidades são criadas ou configuradas. Por exemplo, é possível criar uma condição e, depois, associá-la a um recurso ou uma saída para que o CloudFormation apenas crie o recurso ou a saída se essa condição for verdadeira. Da mesma forma, é possível associar a condição a uma propriedade para que o CloudFormation apenas defina a propriedade como um valor específico se essa condição for verdadeira. Se a condição for falsa, o CloudFormation definirá a propriedade para um valor diferente que você especificar.

Você pode usar as condições quando você deseja reutilizar um modelo que pode criar recursos em contextos diferentes, como um ambiente de teste em comparação com um ambiente de produção. No modelo, você pode adicionar um parâmetro de entrada EnvironmentType que aceita prod ou test como entrada. Para o ambiente de produção, você pode incluir instâncias Amazon EC2 com determinados recursos. No entanto, para o ambiente de teste, você deve usar recursos reduzidos para economizar. Com as condições, você pode definir quais recursos são criados e como eles são configurados para cada tipo de ambiente.

As condições são avaliadas com base em pseudoparâmetros definidos previamente ou valores de parâmetros de entrada que você especifica ao criar ou atualizar uma pilha. Em cada condição, você pode fazer referência a outra condição, a um valor de parâmetro ou a um mapeamento. Depois de definir todas as condições, você pode associá-las a recursos e propriedades de recursos nas seções Resources e Outputs de um modelo.

Na criação ou na atualização da pilha, o AWS CloudFormation avalia todas as condições em seu modelo antes de criar qualquer recurso. Recursos associados a uma condição verdadeira são criados. Recursos associados a uma condição falsa são ignorados. O CloudFormation também reavalia essas condições em cada atualização de pilha antes de atualizar qualquer recurso. Recursos ainda associados a uma condição verdadeira são atualizados. Recursos agora associados a uma condição falsa são excluídos.

Importante

Durante uma atualização de pilha, você não pode atualizar as condições por si só. Você pode atualizar condições apenas ao incluir alterações que adicionam, modificam ou excluem recursos.

Como usar condições

Dependendo da entidade que você deseja criar ou configurar condicionalmente, é necessário incluir declarações nas seguintes seções de modelo:

Seção Parameters

Defina as entradas que você deseja avaliar em suas condições. As condições são avaliadas como "True" ou "False" com base nos valores desses parâmetros de entrada. Se quiser que as condições avaliem pseudoparâmetros, não será necessário definir esses pseudoparâmetros nessa seção; pseudoparâmetros são predefinidos pelo CloudFormation. Para obter mais informações sobre pseudoparâmetros, consulte Referência de pseudoparâmetros.

Seção Conditions

Defina as condições usando as funções intrínsecas de condições. Essas condições determinam quando o CloudFormation cria os recursos associados. Consulte exemplos em Exemplos de modelo.

Seções Resources e Outputs

Associe condições aos recursos ou às saídas que você deseja criar condicionalmente. O CloudFormation cria entidades que são associadas a uma condição verdadeira e ignora entidades que são associadas a uma condição falsa. Use a chave Condition e um ID lógico da condição para associá-la a um recurso ou saída. Para especificar uma propriedade condicionalmente, use a função Fn::If. Para ver um exemplo, consulte Associando uma condição.

Sintaxe

A seção Conditions consiste no nome da chave Conditions. Cada declaração de condição inclui um ID lógico e funções intrínsecas que são avaliadas ao criar ou atualizar uma pilha. O pseudomodelo a seguir descreve a seção Conditions:

JSON

"Conditions" : { "ConditionLogicalID" : {Intrinsic function} }

YAML

Conditions: ConditionLogicalID: Intrinsic function

Funções intrínsecas da condição

Você pode usar as seguintes funções intrínsecas para definir condições:

  • Fn::And

  • Fn::Equals

  • Fn::ForEach

  • Fn::If

  • Fn::Not

  • Fn::Or

Consulte a sintaxe e informações sobre cada função de condição em Funções de condição. Consulte a sintaxe e informações sobre Fn::ForEach em Fn::ForEach.

nota

Fn::If só tem suporte no atributo de metadados, no atributo de atualização de política e em valores de propriedade nas seções Resources e Outputs de um modelo.

Exemplos

Condição simples

O exemplo de modelo a seguir inclui um parâmetro de entrada EnvType, onde você pode especificar prod para criar uma pilha para produção ou test para criar uma pilha para teste. Para um ambiente de produção, o CloudFormation cria uma instância do Amazon EC2 e anexa um volume à instância. Em um ambiente de teste, o CloudFormation cria apenas a instância do Amazon EC2.

A condição CreateProdResources será avaliada true se o parâmetro EnvType for igual a prod. No modelo de exemplo, os recursos NewVolume e MountPoint estão associados à condição CreateProdResources. Portanto, os recursos serão criados apenas se o parâmetro EnvType for igual a prod.

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Parameters": { "EnvType": { "Description": "Environment type.", "Default": "test", "Type": "String", "AllowedValues": [ "prod", "test" ], "ConstraintDescription": "must specify prod or test." } }, "Conditions": { "CreateProdResources": { "Fn::Equals": [ { "Ref": "EnvType" }, "prod" ] } }, "Resources": { "EC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": "ami-0ff8a91507f77f867" } }, "MountPoint": { "Type": "AWS::EC2::VolumeAttachment", "Condition": "CreateProdResources", "Properties": { "InstanceId": { "Ref": "EC2Instance" }, "VolumeId": { "Ref": "NewVolume" }, "Device": "/dev/sdh" } }, "NewVolume": { "Type": "AWS::EC2::Volume", "Condition": "CreateProdResources", "Properties": { "Size": 100, "AvailabilityZone": { "Fn::GetAtt": [ "EC2Instance", "AvailabilityZone" ] } } } } }

YAML

AWSTemplateFormatVersion: 2010-09-09 Parameters: EnvType: Description: Environment type. Default: test Type: String AllowedValues: - prod - test ConstraintDescription: must specify prod or test. Conditions: CreateProdResources: !Equals - !Ref EnvType - prod Resources: EC2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: ami-0ff8a91507f77f867 MountPoint: Type: 'AWS::EC2::VolumeAttachment' Condition: CreateProdResources Properties: InstanceId: !Ref EC2Instance VolumeId: !Ref NewVolume Device: /dev/sdh NewVolume: Type: 'AWS::EC2::Volume' Condition: CreateProdResources Properties: Size: 100 AvailabilityZone: !GetAtt - EC2Instance - AvailabilityZone

Condição aninhada

O seguinte modelo de exemplo faz referência a uma condição dentro de outra condição. Você pode criar uma pilha que crie um bucket do s3. Para uma pilha implantada em um ambiente de produção, o CloudFormation cria uma política para o bucket do S3.

JSON
{ "Parameters": { "EnvType": { "Type": "String", "AllowedValues": [ "prod", "test" ] }, "BucketName": { "Default": "", "Type": "String" } }, "Conditions": { "IsProduction": { "Fn::Equals": [ { "Ref": "EnvType" }, "prod" ] }, "CreateBucket": { "Fn::Not": [ { "Fn::Equals": [ { "Ref": "BucketName" }, "" ] } ] }, "CreateBucketPolicy": { "Fn::And": [ { "Condition": "IsProduction" }, { "Condition": "CreateBucket" } ] } }, "Resources": { "Bucket": { "Type": "AWS::S3::Bucket", "Condition": "CreateBucket" }, "Policy": { "Type": "AWS::S3::BucketPolicy", "Condition": "CreateBucketPolicy", "Properties": { "Bucket": { "Ref": "Bucket" }, "PolicyDocument": "..." } } } }
YAML
Parameters: EnvType: Type: String AllowedValues: - prod - test BucketName: Default: '' Type: String Conditions: IsProduction: !Equals - !Ref EnvType - prod CreateBucket: !Not - !Equals - !Ref BucketName - '' CreateBucketPolicy: !And - !Condition IsProduction - !Condition CreateBucket Resources: Bucket: Type: 'AWS::S3::Bucket' Condition: CreateBucket Policy: Type: 'AWS::S3::BucketPolicy' Condition: CreateBucketPolicy Properties: Bucket: !Ref BucketName PolicyDocument: ...

Nesta página

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.