Resources
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 EBS a una instancia de 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 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 CloudFormation crea la instancia, CloudFormation genera y asigna automáticamente un ID físico (como por ejemploi-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 registrosMyPerformanceLogs
. Para obtener más información, consulte Tipo de nombre. Type
-
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. Properties
-
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 Condiciones 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: {}