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.
Resources référence de syntaxe de section pour les CloudFormation modèles
La Resources
section est une section de niveau supérieur obligatoire dans un CloudFormation modèle. Il déclare les AWS ressources que vous souhaitez CloudFormation provisionner et configurer dans le cadre de votre stack.
Syntaxe
La Resources
section utilise la syntaxe suivante :
JSON
"Resources" : { "
LogicalResourceName1
" : { "Type" : "AWS::ServiceName::ResourceType
", "Properties" : {"PropertyName1" : "PropertyValue1"
,...
} }, "LogicalResourceName2
" : { "Type" : "AWS::ServiceName::ResourceType
", "Properties" : {"PropertyName1" : "PropertyValue1"
,...
} } }
YAML
Resources:
LogicalResourceName1
: Type: AWS::ServiceName::ResourceType
Properties:PropertyName1: PropertyValue1
...
LogicalResourceName2
: Type: AWS::ServiceName::ResourceType
Properties:PropertyName1: PropertyValue1
...
ID logique (également appelé nom logique)
Dans un CloudFormation modèle, les ressources sont identifiées par leurs noms de ressources logiques. Ces noms doivent être alphanumériques (a-Za-Z0-9) et uniques dans le modèle. Les noms logiques sont utilisés pour référencer les ressources d'autres sections du modèle.
Type de ressource
Chaque ressource doit avoir un Type
attribut qui définit le type de AWS
ressource dont il s'agit. L'Type
attribut possède le formatAWS::
. Par exemple, l'ServiceName
::ResourceType
Type
attribut d'un compartiment Amazon S3 estAWS::S3::Bucket
.
Pour obtenir la liste complète des types de ressources pris en charge, consultez leAWS référence aux types de ressources et de propriétés.
Propriétés de ressource
Les propriétés des ressources sont des options supplémentaires que vous pouvez spécifier pour définir les détails de configuration pour le type de ressource spécifique. Certaines propriétés sont obligatoires, tandis que d'autres sont facultatives. Certaines propriétés ont des valeurs par défaut. La spécification de ces propriétés est donc facultative.
Pour plus de détails sur les propriétés prises en charge pour chaque type de ressource, consultez les rubriques dansAWS référence aux types de ressources et de propriétés.
Les valeurs de propriété peuvent être des chaînes littérales, des listes de chaînes, des booléens, des références dynamiques, des références de paramètres, des pseudo-références ou la valeur renvoyée par une fonction. Les exemples suivants vous montrent comment déclarer différents types de valeur de propriété :
JSON
"Properties" : { "
String
" : "A string value
", "Number
" :123
, "LiteralList
" : [ "first-value
", "second-value
" ], "Boolean
" :true
}
YAML
Properties:
String
:A string value
Number
:123
LiteralList
: -first-value
-second-value
Boolean
:true
Identifiant physique
Outre l'identifiant logique, certaines ressources possèdent également un identifiant physique, qui est le nom réellement attribué à cette ressource, tel qu'un identifiant d'EC2instance ou un nom de compartiment S3. Utilisez le physique IDs pour identifier les ressources en dehors des CloudFormation modèles, mais uniquement après leur création. Supposons, par exemple, que vous donniez à une ressource d'EC2instance un ID logique deMyEC2Instance
. Lors de la CloudFormation création de l'instance, il génère et attribue CloudFormation automatiquement un identifiant physique (tel quei-1234567890abcdef0
) à l'instance. Vous pouvez utiliser cet identifiant physique pour identifier l'instance et consulter ses propriétés (telles que le DNS nom) à l'aide de la EC2 console Amazon.
Pour les compartiments Amazon S3 et de nombreuses autres ressources, génère CloudFormation automatiquement un nom physique unique pour la ressource si vous ne le spécifiez pas explicitement. Ce nom physique est basé sur une combinaison du nom de la CloudFormation pile, du nom logique de la ressource spécifié dans le CloudFormation modèle et d'un identifiant unique. Par exemple, si vous avez un compartiment Amazon S3 dont le nom logique figure MyBucket
dans une pile nomméeMyStack
, vous CloudFormation pouvez le nommer avec le nom physique suivantMyStack-MyBucket-abcdefghijk1
.
Pour les ressources qui prennent en charge les noms personnalisés, vous pouvez attribuer vos propres noms physiques pour vous aider à identifier rapidement les ressources. Par exemple, vous pouvez attribuer le nom MyPerformanceLogs
à un compartiment S3 qui stocke des journaux. Pour de plus amples informations, veuillez consulter Type de nom.
Ressources de référencement
Il est souvent nécessaire de définir les propriétés d'une ressource en fonction du nom ou de la propriété d'une autre ressource. Par exemple, vous pouvez créer une EC2 instance qui utilise des groupes de EC2 sécurité ou une CloudFront distribution basée sur un compartiment S3. Toutes ces ressources peuvent être créées dans le même CloudFormation modèle.
CloudFormation fournit des fonctions intrinsèques que vous pouvez utiliser pour faire référence à d'autres ressources et à leurs propriétés. Ces fonctions vous permettent de créer des dépendances entre les ressources et de transmettre des valeurs d'une ressource à une autre.
La fonction Ref
La Ref
fonction est couramment utilisée pour récupérer une propriété d'identification des ressources définies dans le même CloudFormation modèle. Ce qu'il renvoie dépend du type de ressource. Pour la plupart des ressources, il renvoie le nom physique de la ressource. Toutefois, pour certains types de ressources, il peut renvoyer une valeur différente, telle qu'une adresse IP pour une AWS::EC2::EIP
ressource ou un nom de ressource Amazon (ARN) pour un SNS sujet Amazon.
Les exemples suivants montrent comment utiliser la Ref
fonction dans les propriétés. Dans chacun de ces exemples, la Ref
fonction renverra le nom réel de la LogicalResourceName
ressource déclarée ailleurs dans le modèle. L'exemple de !Ref
syntaxe présenté dans YAML cet exemple n'est qu'une manière plus courte d'écrire la Ref
fonction.
JSON
"Properties" : { "
PropertyName
" : { "Ref" : "LogicalResourceName
" } }
YAML
Properties:
PropertyName1
: Ref:LogicalResourceName
PropertyName2
: !RefLogicalResourceName
Pour des informations plus détaillées sur la Ref
fonction, voir Fonction Ref.
La fonction Fn::GetAtt
La Ref
fonction est utile si le paramètre ou la valeur renvoyé pour une ressource correspond exactement à ce que vous souhaitez. Cependant, il se peut que vous ayez besoin d'autres attributs d'une ressource. Par exemple, si vous souhaitez créer une CloudFront distribution avec une origine S3, vous devez spécifier l'emplacement du compartiment à l'aide d'une adresse de DNS type -style. Plusieurs ressources possèdent des attributs supplémentaires dont vous pouvez utiliser les valeurs dans le modèle. Pour obtenir ces attributs, vous devez utiliser la Fn::GetAtt
fonction.
Les exemples suivants montrent comment utiliser la GetAtt
fonction dans les propriétés. La Fn::GetAtt
fonction prend deux paramètres, le nom logique de la ressource et le nom de l'attribut à récupérer. L'exemple de !GetAtt
syntaxe présenté dans YAML cet exemple n'est qu'une manière plus courte d'écrire la GetAtt
fonction.
JSON
"Properties" : { "
PropertyName
" : { "Fn::GetAtt" : [ "LogicalResourceName
", "AttributeName
" ] } }
YAML
Properties:
PropertyName1
: Fn::GetAtt: -LogicalResourceName
-AttributeName
PropertyName2
: !GetAttLogicalResourceName
.AttributeName
Pour des informations plus détaillées sur la GetAtt
fonction, voir Fn : : GetAtt.
Exemples
Les exemples suivants montrent comment déclarer des ressources et comment les CloudFormation modèles peuvent faire référence à d'autres ressources définies dans le même modèle et dans AWS des ressources existantes.
Rubriques
Déclarer une ressource unique avec un nom personnalisé
L'exemple suivant déclare une ressource unique de type AWS::S3::Bucket
portant le nom logiqueMyBucket
. La BucketName
propriété est définie sur amzn-s3-demo-bucket
, qui doit être remplacé par le nom souhaité pour votre compartiment S3.
Si vous utilisez cette déclaration de ressource pour créer une pile, vous CloudFormation créerez un compartiment Amazon S3 avec les paramètres par défaut. Pour d'autres ressources, telles qu'une EC2 instance Amazon ou un groupe Auto Scaling, des CloudFormation informations supplémentaires sont nécessaires.
JSON
{ "Resources": { "MyBucket": { "Type": "AWS::S3::Bucket", "Properties": { "BucketName": "
amzn-s3-demo-bucket
" } } } }
YAML
Resources: MyBucket: Type: 'AWS::S3::Bucket' Properties: BucketName:
amzn-s3-demo-bucket
Référencement d'autres ressources à l'aide de la fonction Ref
Les exemples suivants présentent une déclaration de ressource qui définit une EC2 instance et un groupe de sécurité. La Ec2Instance
ressource fait référence à la InstanceSecurityGroup
ressource dans le cadre de sa SecurityGroupIds
propriété à l'aide de la Ref
fonction. Il inclut également un groupe de sécurité existant (sg-12a4c434
) qui n'est pas déclaré dans le modèle. Les chaînes littérales permettent de faire référence à des ressources AWS
existantes.
JSON
{ "Resources": { "Ec2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "SecurityGroupIds": [ { "Ref": "InstanceSecurityGroup" }, "sg-12a4c434" ], "KeyName": "MyKey", "ImageId": "ami-1234567890abcdef0" } }, "InstanceSecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "Enable SSH access via port 22", "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": 22, "ToPort": 22, "CidrIp": "0.0.0.0/0" } ] } } } }
YAML
Resources: Ec2Instance: Type: 'AWS::EC2::Instance' Properties: SecurityGroupIds: - !Ref InstanceSecurityGroup - sg-12a4c434 KeyName: MyKey ImageId: ami-1234567890abcdef0 InstanceSecurityGroup: Type: 'AWS::EC2::SecurityGroup' Properties: GroupDescription: Enable SSH access via port 22 SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 0.0.0.0/0
Référencement des attributs de ressources à l'aide de la fonction Fn::GetAtt
Les exemples suivants présentent une déclaration de ressource qui définit une ressource CloudFront de distribution et un compartiment S3. La MyDistribution
ressource spécifie le DNS nom de la MyBucket
ressource à l'aide de la Fn::GetAtt
fonction pour obtenir l'DomainName
attribut du compartiment. Vous remarquerez que la Fn::GetAtt
fonction répertorie ses deux paramètres dans un tableau. Pour les fonctions qui acceptent plusieurs paramètres, un tableau permet de spécifier ces derniers.
JSON
{ "Resources": { "MyBucket": { "Type": "AWS::S3::Bucket" }, "MyDistribution": { "Type": "AWS::CloudFront::Distribution", "Properties": { "DistributionConfig": { "Origins": [ { "DomainName": { "Fn::GetAtt": [ "MyBucket", "DomainName" ] }, "Id": "MyS3Origin", "S3OriginConfig": {} } ], "Enabled": "true", "DefaultCacheBehavior": { "TargetOriginId": "MyS3Origin", "ForwardedValues": { "QueryString": "false" }, "ViewerProtocolPolicy": "allow-all" } } } } } }
YAML
Resources: MyBucket: Type: 'AWS::S3::Bucket' MyDistribution: Type: 'AWS::CloudFront::Distribution' Properties: DistributionConfig: Origins: - DomainName: !GetAtt - MyBucket - DomainName Id: MyS3Origin S3OriginConfig: {} Enabled: 'true' DefaultCacheBehavior: TargetOriginId: MyS3Origin ForwardedValues: QueryString: 'false' ViewerProtocolPolicy: allow-all