Recursos - AWS CloudFormation

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Recursos

La sección Resources declara los recursos de AWS que desea incluir en la pila como, por ejemplo, una instancia 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" : { "Type" : "Resource type", "Properties" : { Set of properties } } }

YAML

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

Campos de recursos

ID 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 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 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 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 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: {}