Référence des ressources du module dans les modèles CloudFormation
Dans les modèles CloudFormation, vous devez souvent définir les propriétés d’une ressource en fonction du nom ou des propriétés d’une autre ressource. Pour de plus amples informations, consultez Référencement des ressources.
Pour référencer une ressource contenue dans un module de votre modèle CloudFormation, vous devez combiner deux noms logiques :
-
Le nom logique que vous avez donné au module lui-même lorsque vous l’avez inclus dans votre modèle.
-
Le nom logique de la ressource spécifique de ce module.
Vous pouvez combiner ces deux noms logiques avec ou sans point (.) entre eux. Par exemple, si le nom logique du module est MyModule et que le nom logique de la ressource est MyBucket, vous pouvez faire référence à cette ressource sous le nom MyModule.MyBucket ou MyModuleMyBucket.
Pour trouver les noms logiques des ressources à l’intérieur d’un module, vous pouvez consulter le schéma du module, qui est disponible dans le registre CloudFormation ou à l’aide de l’opération DescribeType. Le schéma répertorie toutes les ressources et leurs noms logiques qui font partie du module.
Une fois que vous disposez du nom logique complet, vous pouvez utiliser les fonctions CloudFormation telles que GetAtt et Ref pour accéder aux valeurs des propriétés des ressources du module.
Par exemple, vous avez un module My::S3::SampleBucket::MODULE qui contient une ressource AWS::S3::Bucket avec le nom logique S3Bucket. Pour faire référence au nom de ce compartiment à l’aide de la fonction Ref, vous combinez le nom du module dans votre modèle (MyBucket) avec le nom logique de la ressource dans le module (S3Bucket). Le nom logique complet est MyBucket.S3Bucket ou MyBucketS3Bucket.
Exemple de modèle
Le modèle suivant crée un compartiment S3 à l’aide du module My::S3::SampleBucket::MODULE. Il crée également une file d’attente Amazon SQS et lui attribue le même nom que le nom du compartiment du module. De plus, le modèle génère l’Amazon Resource Name (ARN) du compartiment S3 créé.
# 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