Recursos del módulo de referencia en las plantillas de CloudFormation
En las plantillas de CloudFormation, a menudo, es necesario establecer las propiedades de un recurso en función del nombre o la propiedad de otro recurso. Para obtener más información, consulte Recursos de referencia.
Para hacer referencia a un recurso contenido en un módulo de la plantilla de CloudFormation, debe combinar dos nombres lógicos:
-
El nombre lógico que asignó al módulo en sí cuando lo incluyó en la plantilla.
-
El nombre lógico del recurso específico de ese módulo.
Puede combinar estos dos nombres lógicos con o sin usar un punto (.) entre ellos. Por ejemplo, si el nombre lógico del módulo es MyModule
y el nombre lógico del recurso es MyBucket
, puede hacer referencia a ese recurso como MyModule.MyBucket
o MyModuleMyBucket
.
Para encontrar los nombres lógicos de los recursos de un módulo, puede consultar el esquema del módulo, que está disponible en el registro de CloudFormation o mediante la operación DescribeType. El esquema muestra todos los recursos y sus nombres lógicos que forman parte del módulo.
Una vez que tenga el nombre lógico completo, puede usar las funciones de CloudFormation, como GetAtt
y Ref
para acceder a los valores de propiedad en los recursos del módulo.
Por ejemplo, tiene un módulo My::S3::SampleBucket::MODULE
que contiene un recurso AWS::S3::Bucket
con el nombre lógico S3Bucket
. Para hacer referencia al nombre de este bucket mediante la función Ref
, combine el nombre del módulo de la plantilla (MyBucket
) con el nombre lógico del recurso del módulo (S3Bucket
). El nombre lógico completo es MyBucket.S3Bucket
o MyBucketS3Bucket
.
Plantilla de ejemplo
La siguiente plantilla de ejemplo crea un bucket de S3 mediante el módulo My::S3::SampleBucket::MODULE
. También crea una cola de Amazon SQS y establece su nombre para que sea el mismo que el nombre del bucket del módulo. Además, la plantilla devuelve el nombre de recurso de Amazon (ARN) del bucket de S3 creado.
# Template that uses My::S3::SampleBucket::MODULE Parameters: BucketName: Description: Name for your sample bucket Type: String Resources: MyBucket: Type: My::S3::SampleBucket::MODULE Properties: BucketName: !Ref BucketName exampleQueue: Type: AWS::SQS::Queue Properties: QueueName: !Ref MyBucket.S3Bucket Outputs: BucketArn: Value: !GetAtt MyBucket.S3Bucket.Arn