Ressources - AWS CloudFormation

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Ressources

La Resources section requise déclare les AWS ressources que vous souhaitez inclure dans la pile, telles qu'une instance Amazon EC2 ou un compartiment Amazon S3.

Syntaxe

La section Resources se compose du nom de clé Resources. Le pseudo-modèle suivant illustre la section Resources :

JSON

"Resources" : { "Logical ID" : { "Type" : "Resource type", "Properties" : { Set of properties } } }

YAML

Resources: Logical ID: Type: Resource type Properties: Set of properties

Champs de ressources

ID logique

L'ID logique doit être alphanumérique (A-Za-z0-9) et ne doit correspondre à aucun autre ID logique dans le modèle. Utilisez le nom logique pour faire référence à la ressource dans d'autres parties du modèle. Par exemple, si vous souhaitez mapper un volume Amazon Elastic Block Store sur une instance Amazon EC2, vous référencez les ID logiques pour associer les magasins de blocs à l'instance.

En plus de l'ID logique, certaines ressources ont également un ID physique, qui constitue le nom réel affecté à cette ressource (par exemple, un ID d'instance EC2 ou un nom de compartiment S3). Utilisez les identifiants physiques pour identifier les ressources en dehors des AWS CloudFormation modèles, mais uniquement après leur création. Par exemple, supposons que vous attribuez l'ID logique MyEC2Instance à une ressource d'instance EC2. Lors de la AWS CloudFormation création de l'instance, il génère et attribue AWS CloudFormation automatiquement un identifiant physique (tel quei-28f9ba55) à l'instance. Vous pouvez utiliser cet ID physique pour identifier l'instance et afficher ses propriétés (telles que le nom DNS) via la console Amazon EC2. Pour les ressources qui prennent en charge des noms personnalisés, vous pouvez assigner vos propres noms (ID physiques) afin de faciliter l'identification des ressources. Par exemple, vous pouvez attribuer le nom MyPerformanceLogs à un compartiment S3 qui stocke des journaux. Pour plus d’informations, consultez Type de nom.

Type de ressource

Le type de ressource identifie le type de ressource que vous déclarez. Par exemple, AWS::EC2::Instance déclare une instance EC2. Pour afficher la liste de tous les types de ressources, consultez AWS référence aux types de ressources et de propriétés.

Propriétés de ressource

Les propriétés de ressource sont des options supplémentaires que vous pouvez spécifier pour une ressource. Par exemple, pour chaque instance EC2, vous devez spécifier un ID d'Amazon Machine Image (AMI) pour cette instance. Vous déclarez l'ID d'AMI comme propriété de l'instance, comme l'illustre l'exemple suivant :

Exemple JSON
"Resources" : { "MyEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : "ami-0ff8a91507f77f867" } } }
Exemple YAML
Resources: MyEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: "ami-0ff8a91507f77f867"

Si une ressource ne nécessite pas la déclaration de propriétés, vous pouvez ignorer la section correspondante de cette ressource.

Les valeurs de propriété peuvent être des chaînes littérales, des listes de chaînes, des valeurs booléennes, des références de paramètres, des pseudo-références ou la valeur renvoyée par une fonction. L'exemple suivant présente comment déclarer les types de valeurs de propriété :

Exemple JSON
"Properties" : { "String" : "one-string-value", "Number" : 123, "LiteralList" : [ "first-value", "second-value" ], "Boolean" : true, "ReferenceForOneValue" : { "Ref" : "MyLogicalResourceName" } , "FunctionResultWithFunctionParams" : { "Fn::Join" : [ "%", [ "Key=", { "Ref" : "MyParameter" } ] ] } }
Exemple YAML
Properties: String: OneStringValue String: A longer string value Number: 123 LiteralList: - "[first]-string-value with a special characters" - "[second]-string-value with a special characters" Boolean: true ReferenceForOneValue: Ref: MyLogicalResourceName ReferenceForOneValueShortCut: !Ref MyLogicalResourceName FunctionResultWithFunctionParams: !Sub | Key=%${MyParameter}

Vous pouvez créer une ressource de manière conditionnelle en y associant une condition. Vous devez définir la condition dans la section Conditions du modèle.

Exemples

L'exemple suivant présente une déclaration de ressource. Il définit deux ressources. La ressource MyInstance inclue la ressource MyQueue dans le cadre de sa propriété UserData :

JSON

"Resources" : { "MyInstance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "UserData" : { "Fn::Base64" : { "Fn::Join" : [ "", [ "Queue=", { "Ref" : "MyQueue" } ] ] } }, "AvailabilityZone" : "us-east-1a", "ImageId" : "ami-0ff8a91507f77f867" } }, "MyQueue" : { "Type" : "AWS::SQS::Queue", "Properties" : { } } }

YAML

Resources: MyInstance: Type: "AWS::EC2::Instance" Properties: UserData: "Fn::Base64": !Sub | Queue=${MyQueue} AvailabilityZone: "us-east-1a" ImageId: "ami-0ff8a91507f77f867" MyQueue: Type: "AWS::SQS::Queue" Properties: {}