

# Recursos del módulo de referencia en las plantillas de CloudFormation
<a name="module-ref-resources"></a>

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](resources-section-structure.md#using-cross-resource-references).

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 [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeType.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeType.html). 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
```