Recursos - AWS CloudFormation

Recursos

La sección Resources requerida declara los recursos de AWS que desea incluir en la pila, como una instancia de Amazon EC2 o un bucket de Amazon S3.

Sintaxis

La sección Resources consta del nombre de clave Resources. La siguiente pseudoplantilla muestra la sección Resources:

JSON

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

YAML

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

Campos de recursos

ID lógico (también denominado nombre lógico)

El ID lógico tiene que ser alfanumérico (A-Za-z0-9) y único dentro de la plantilla. Utilice el nombre lógico para hacer referencia al recurso en otras partes de la plantilla. Por ejemplo, si desea asignar un volumen de Amazon Elastic Block Store a una instancia Amazon EC2, debe hacer referencia a los ID lógicos para asociar los almacenes de bloques con la instancia.

Además de lo IDs lógicos, determinados recursos también tienen un ID físico, que es el nombre asignado real de dicho recurso, como un ID de instancia de EC2 o un nombre de bucket de S3. Utilice los ID físicos para identificar recursos fuera de las plantillas de AWS CloudFormation, pero solo después de que se hayan creado los recursos. Por ejemplo, suponga que da a un recurso de instancia de EC2 un ID lógico de MyEC2Instance. Cuando AWS CloudFormation crea la instancia, AWS CloudFormation genera y asigna automáticamente un ID físico (como por ejemplo i-28f9ba55) a la instancia. Puede utilizar este ID físico para identificar la instancia y ver sus propiedades (como, por ejemplo, el nombre de DNS) a través de la consola de Amazon EC2. En el caso de los recursos que admiten nombres personalizados, puede asignar sus propios nombres (ID físicos) para identificar rápidamente los recursos. Por ejemplo, puede denominar un bucket de S3 que almacena registros MyPerformanceLogs. Para obtener más información, consulte Tipo de nombre.

Tipo de recurso

El tipo de recurso identifica el tipo de recurso que está declarando. Por ejemplo, AWS::EC2::Instance declara una instancia de EC2. Para ver una lista de todos los tipos de recursos, consulte Referencia de tipos de recursos y propiedades de AWS.

Propiedades de recursos

Las propiedades de recursos son opciones adicionales que puede especificar para un recurso. Por ejemplo, para cada instancia de EC2, debe especificar un ID de Imagen de máquina de Amazon (AMI) para dicha instancia. Usted declara el ID de AMI como una propiedad de la instancia, tal y como se muestra en el ejemplo: siguiente:

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

Si un recurso no requiere que se declaren las propiedades, omita la sección de propiedades de dicho recurso.

Los valores de la propiedad pueden ser cadenas literales, listas de cadenas, booleanos, referencias de parámetros, pseudoreferencias o el valor devuelto por una función. El siguiente ejemplo le indica cómo declarar diferentes tipos de valores de propiedades:

ejemplo JSON
"Properties" : { "String" : "one-string-value", "Number" : 123, "LiteralList" : [ "first-value", "second-value" ], "Boolean" : true, "ReferenceForOneValue" : { "Ref" : "MyLogicalResourceName" } , "FunctionResultWithFunctionParams" : { "Fn::Join" : [ "%", [ "Key=", { "Ref" : "MyParameter" } ] ] } }
ejemplo 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}

Puede crear un recurso condicionalmente asociando una condición a dicho recurso. Debe definir la condición en la sección Conditions de la plantilla.

Ejemplos

El siguiente ejemplo muestra una declaración de recursos. Define dos recursos. El recurso MyInstance incluye el recurso MyQueue como parte de su propiedad 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: {}