

# Recursos do módulo de referência nos modelos do CloudFormation
<a name="module-ref-resources"></a>

Nos modelos do CloudFormation, muitas vezes é necessário definir as propriedades em um recurso com base no nome ou na propriedade de outro recurso. Para obter mais informações, consulte [Fazer referência a recursos](resources-section-structure.md#using-cross-resource-references).

Para fazer referência um recurso contido em um módulo em seu modelo do CloudFormation, é necessário combinar dois nomes lógicos:
+ O nome lógico que você atribuiu ao próprio módulo ao incluí-lo em seu modelo.
+ O nome lógico do recurso específico nesse módulo.

É possível combinar esses dois nomes lógicos usando ou não um ponto (.) entre eles. Por exemplo, se o nome lógico do módulo for `MyModule` e o nome lógico do recurso for `MyBucket`, você poderá se referir a esse recurso como `MyModule.MyBucket` ou `MyModuleMyBucket`.

Para encontrar os nomes lógicos dos recursos dentro de um módulo, é possível consultar o esquema do módulo, que está disponível no registro do CloudFormation, ou via operação [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeType.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeType.html). O esquema lista todos os recursos e seus nomes lógicos que fazem parte do módulo.

Depois de ter o nome lógico completo, você pode usar funções do CloudFormation, `GetAtt` como `Ref` e, para acessar valores de propriedade em recursos do módulo. 

Por exemplo, você tem um módulo `My::S3::SampleBucket::MODULE` que contém um recurso `AWS::S3::Bucket` com o nome lógico `S3Bucket`. Para se referir ao nome desse bucket usando a função `Ref`, combine o nome do módulo em seu modelo (`MyBucket`) com o nome lógico do recurso no módulo (`S3Bucket`). O nome lógico completo é `MyBucket.S3Bucket` ou `MyBucketS3Bucket`.

**Exemplo de modelo**  
O modelo de exemplo a seguir cria um bucket do S3 usando o módulo `My::S3::SampleBucket::MODULE`. Ele também cria uma fila do Amazon SQS e define seu nome para ser igual ao nome do bucket do módulo. Além disso, o modelo produz o nome do recurso da Amazon (ARN) do bucket de S3 criado.

```
# 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
```