Recursos do módulo de referência nos modelos do CloudFormation
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 ter mais informações, consulte Fazer referência a recursos.
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 DescribeType. 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