Recursos - AWS CloudFormation

Recursos

A seção Resources necessária declara os recursos da AWS que você deseja incluir na pilha, como uma instância do Amazon EC2 ou um bucket do Amazon S3.

Sintaxe

A seção Resources consiste no nome da chave Resources. O pseudomodelo a seguir descreve a seção Resources:

JSON

"Resources" : { "Logical ID" : { "Type" : "Resource type", "Properties" : { Set of properties } } }

YAML

Resources: Logical ID: Type: Resource type Properties: Set of properties

Campos de recursos

ID lógico

O ID lógico deve ser alfanumérico (A-Z a-z 0-9) e exclusivo no modelo. Use o nome lógico para fazer referência ao recurso em outras partes do modelo. Por exemplo, para mapear um volume do Amazon Elastic Block Store para uma instância do Amazon EC2, você faz referência às IDs lógicas para associar os armazenamentos de blocos à instância.

Além do ID lógico, determinados recursos também têm um ID físico, que é o nome real atribuído a esse recurso, como o ID de uma instância EC2 ou o nome de um bucket do S3. Use os IDs físicos para identificar recursos fora dos modelos do AWS CloudFormation, mas apenas depois que os recursos forem criados. Por exemplo, suponha que você forneça a um recurso de instância do EC2 um ID lógico de MyEC2Instance. Quando o AWS CloudFormation cria a instância, o AWS CloudFormation gera e atribui automaticamente um ID físico (como i-28f9ba55) para a instância. Você pode usar esse ID físico para identificar a instância e visualizar suas propriedades (como o nome DNS) usando o console do Amazon EC2. Para recursos que oferecem suporte a nomes personalizados, você pode atribuir seus próprios nomes (IDs físicos) para ajudar a identificar os recursos rapidamente. Por exemplo, você pode nomear um bucket do S3 que armazena logs como MyPerformanceLogs. Para mais informações, consulte Tipo de nome.

Tipo de recurso

O tipo de recurso identifica o tipo de recurso que você está declarando. Por exemplo, AWS::EC2::Instance declara uma instância EC2. Para obter uma lista de tipos de recursos, consulte Referência de tipos de propriedades e recursos da AWS.

Propriedades de recursos

Propriedades de recursos são opções adicionais que você pode especificar para um recurso. Por exemplo, para cada instância EC2, você deve especificar um ID de Imagem de máquina da Amazon (AMI) para essa instância. Você declara o ID da AMI como uma propriedade da instância, conforme mostrado no exemplo a seguir:

exemplo JSON

"Resources" : { "MyEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : "ami-0ff8a91507f77f867" } } }

exemplo YAML

Resources: MyEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: "ami-0ff8a91507f77f867"

Se um recurso não exigir que sejam declaradas propriedades, omita a seção de propriedades do recurso.

Os valores das propriedades podem ser sequências literais, listas de sequências, booleanos, referências de parâmetros, pseudoreferências ou o valor retornado por uma função. O exemplo a seguir mostra como declarar diferentes tipos de valor de propriedade:

exemplo JSON

"Properties" : { "String" : "one-string-value", "Number" : 123, "LiteralList" : [ "first-value", "second-value" ], "Boolean" : true, "ReferenceForOneValue" : { "Ref" : "MyLogicalResourceName" } , "FunctionResultWithFunctionParams" : { "Fn::Join" : [ "%", [ "Key=", { "Ref" : "MyParameter" } ] ] } }

exemplo YAML

Properties: String: OneStringValue String: A longer string value Number: 123 LiteralList: - "[first]-string-value with a special characters" - "[second]-string-value with a special characters" Boolean: true ReferenceForOneValue: Ref: MyLogicalResourceName ReferenceForOneValueShortCut: !Ref MyLogicalResourceName FunctionResultWithFunctionParams: !Sub | Key=%${MyParameter}

Condicionalmente, você pode criar um recurso associando uma condição a ele. Você deve definir a condição na seção Conditions do modelo.

Exemplos

O exemplo a seguir mostra uma declaração de recurso. Ela define dois recursos. O recurso MyInstance inclui o recurso MyQueue como parte de sua propriedade UserData:

JSON

"Resources" : { "MyInstance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "UserData" : { "Fn::Base64" : { "Fn::Join" : [ "", [ "Queue=", { "Ref" : "MyQueue" } ] ] } }, "AvailabilityZone" : "us-east-1a", "ImageId" : "ami-0ff8a91507f77f867" } }, "MyQueue" : { "Type" : "AWS::SQS::Queue", "Properties" : { } } }

YAML

Resources: MyInstance: Type: "AWS::EC2::Instance" Properties: UserData: "Fn::Base64": !Sub | Queue=${MyQueue} AvailabilityZone: "us-east-1a" ImageId: "ami-0ff8a91507f77f867" MyQueue: Type: "AWS::SQS::Queue" Properties: {}