Procédure pas à pas : utilisez AWS CloudFormation Designer pour créer un serveur Web de base - 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.

Procédure pas à pas : utilisez AWS CloudFormation Designer pour créer un serveur Web de base

Application Composer en mode CloudFormation console est une amélioration par rapport à AWS CloudFormation Designer. Nous vous recommandons d'utiliser Application Composer au lieu de Designer dans la mesure du possible. Pour plus d’informations, consultez Utilisation d'Application Composer pour créer des modèles de manière visuelle.

AWS CloudFormation Designer représente graphiquement vos modèles pour vous aider à voir les ressources qu'ils contiennent et comment elles sont connectées. L'éditeur JSON et YAML intégré permet de modifier facilement les modèles directement dans la AWS CloudFormation console. Pour montrer comment utiliser ces deux composants, nous allons utiliser AWS CloudFormation Designer pour créer un serveur Web de base dans un VPC. Ensuite, nous allons enregistrer le modèle et l'utiliser pour créer une CloudFormation pile.

Dans cette procédure, vous effectuerez les étapes suivantes :

  1. Ajout et connexion de ressources

    Lorsque vous ouvrez AWS CloudFormation Designer pour la première fois, vous commencez avec un modèle vierge. Nous utiliserons AWS CloudFormation Designer pour commencer à remplir le modèle en faisant glisser des ressources, telles qu'un VPC et une instance EC2, dans votre modèle. Nous créerons également des liens entre ces ressources. Par exemple, nous utiliserons AWS CloudFormation Designer pour créer une connexion entre la passerelle Internet et le VPC.

  2. Ajout de paramètres de modèle, de mappages et de sorties

    Nous utiliserons l'éditeur intégré AWS CloudFormation Designer pour ajouter d'autres composants du modèle afin de le rendre plus utile. Par exemple, nous allons ajouter des paramètres au modèle afin que vous puissiez spécifier des valeurs d'entrée lorsque vous créerez une pile. De cette façon, vous n'aurez pas besoin de modifier constamment le modèle si les valeurs de propriété changent souvent.

  3. Spécification des propriétés des ressources

    Nous utiliserons à nouveau l'un éditeur intégré pour spécifier les paramètres de configuration de nos ressources.

  4. Allocation des ressources

    Aucune des ressources du modèle n'est opérationnelle tant que vous ne créez pas une pile. Nous utiliserons le modèle que vous venez de créer pour lancer une CloudFormation pile, qui fournira toutes les ressources définies dans votre modèle.

    Note

    CloudFormation est un service gratuit ; toutefois, les AWS ressources que vous incluez dans vos piles vous sont facturées au taux en vigueur pour chacune d'entre elles. Pour plus d'informations sur la tarification AWS , veuillez consulter la page de détails de chaque produit sur http://aws.amazon.com.

Prérequis

Cette procédure pas à pas suppose que vous avez une connaissance pratique d'Amazon Virtual Private Cloud (Amazon VPC), d'Amazon Elastic Compute Cloud (Amazon EC2) et de. CloudFormation Chaque procédure fournit quelques informations contextuelles de base sur chaque ressource.

En outre, avant de commencer, assurez-vous d'avoir une paire de clés Amazon EC2 dans la région dans laquelle vous créerez la pile. Pour plus d'informations, veuillez consulter la rubrique Paires de clés Amazon EC2 dans le Guide de l'utilisateur Amazon EC2.

Étape 1 : Ajout et connexion de ressources

Nous utiliserons l' drag-and-drop interface AWS CloudFormation Designer pour ajouter une instance Amazon EC2 et des ressources réseau, telles qu'un VPC, un sous-réseau, une table de routage et une passerelle Internet. Après avoir ajouté toutes les ressources, nous créerons des connexions entre elles. Par exemple, nous associerons la passerelle Internet à un VPC.

Pour ajouter des ressources à un modèle
  1. Ouvrez AWS CloudFormation Designer à l'adresse https://console.aws.amazon.com/cloudformation/designer.

  2. Dans l'un éditeur intégré, dans la partie inférieure de la page, choisissez Modifier ( ).

  3. Remplacez le nom du modèle par BasicWebServerInVPC, puis appuyez sur Entrée.

    Actuellement, nous avons un modèle vide qui n'est pas valide. Dans les étapes suivantes, nous y ajouterons des ressources afin de pouvoir l'utiliser.

  4. Dans le panneau Resource types (Types de ressources), depuis la catégorie EC2, faites glisser un type de ressource VPC vers le panneau Canvas (Canevas).

    Les ressources sont organisées en catégories. Toutes les ressources que nous allons ajouter sont dans la catégorie EC2.

    AWS CloudFormation Designer modifie immédiatement votre modèle pour inclure une ressource VPC, avec des résultats similaires à ceux de l'extrait de code JSON suivant.

    "Resources": { "VPC431KO": { "Type": "AWS::EC2::VPC", "Properties": {}, "Metadata": { "AWS::CloudFormation::Designer": { "id": "445730ea-0d11-45ba-b6ac-12345EXAMPLE" } } } }

    L'extrait YAML ressemble à ce qui suit.

    Resources: VPC431KO: Type: 'AWS::EC2::VPC' Properties: {} Metadata: 'AWS::CloudFormation::Designer': id: 9430b008-7a03-41ed-b63e-12345EXAMPLE

    Notez que nous devons encore spécifier les propriétés du VPC, telles que son bloc d'adresses CIDR. Nous ferons cela plus tard. Cela s'applique à toutes les ressources que nous ajouterons.

  5. Renommez le VPC.

    Note

    Lorsque vous renommez une ressource, vous renommez son ID logique, qui est le nom référencé dans le modèle (et non le nom attribué lors de la création de la CloudFormation ressource). Pour plus d’informations, consultez Ressources.

    1. Sélectionnez la ressource du VPC.

    2. Dans l'un éditeur intégré, choisissez l'icône Modifier ( ).

    3. Remplacez le nom par VPC, puis appuyez sur Entrée.

    Nous allons ensuite ajouter des ressources au VPC.

  6. Faites glisser un coin de la ressource du VPC pour le développer de sorte qu'il soit suffisamment grand pour accueillir plusieurs ressources supplémentaires.

    Nous devons ajouter un sous-réseau, car vous ne pouvez pas ajouter une instance EC2, qui héberge le site web, directement dans le VPC. Les instances doivent se trouver dans un sous-réseau.

  7. Ajoutez un type de ressource Subnet (Sous-réseau) dans le VPC et remplacez son nom par PublicSubnet.

    Nous utiliserons le sous-réseau pour allouer une plage d'adresses IP dans le VPC que vous pourrez associer à AWS d'autres ressources, telles qu'une instance Amazon EC2.

    Lorsque vous ajoutez le sous-réseau dans le VPC AWS CloudFormation , Designer associe automatiquement le sous-réseau au VPC. Cette association est un modèle de conteneur, où les ressources qui se trouvent dans le conteneur sont automatiquement associées à la ressource de conteneur.

  8. Ajoutez un type de ressource Instance dans la ressource PublicSubnet et remplacez son nom par WebServerInstance.

    L'instance est un environnement informatique virtuel où vous allez héberger un site web de base. Comme avec le sous-réseau et le VPC, l'ajout de l'instance dans le sous-réseau associe automatiquement l'instance au sous-réseau.

  9. Ajoutez un type de SecurityGroupressource dans le VPC et renommez-le. WebServerSecurityGroup

    Le groupe de sécurité est un pare-feu virtuel contrôlant le trafic entrant et sortant de l'instance de serveur web. Il est également nécessaire pour les instances d'un VPC. Nous devrons associer l'instance de serveur web à ce groupe de sécurité, ce que nous ferons plus tard lorsque nous spécifierons les propriétés de l'instance.

  10. Ajoutez un type de InternetGatewayressource n'importe où en dehors du VPC et renommez-le. InternetGateway

    La passerelle Internet permet une communication entre l'instance qui est à l'intérieur du VPC et le réseau Internet. Sans la passerelle Internet, personne ne peut accéder à votre site web.

    Bien que vous puissiez faire glisser la passerelle Internet vers l'intérieur du VPC, cette opération ne crée pas une association au VPC. La passerelle Internet ne suit pas le modèle de conteneur. Vous devez ici tracer une connexion entre la passerelle Internet et le VPC, comme décrit dans l'étape suivante.

  11. Créez une connexion entre les ressources InternetGateway et VPC.

    1. Au niveau de la ressource InternetGateway, passez la souris sur l'association de la passerelle Internet (AWS::EC2::VPCGatewayAttachment).

    2. Faites glisser une connexion vers le VPC.

      La bordure des ressources cibles valides change de couleur. Dans ce cas, le VPC est la seule ressource cible valide. Cette connexion crée une ressource qui associe la passerelle Internet au VPC.

  12. Nous devons ensuite ajouter une table de routage et un routage pour indiquer comment diriger le trafic réseau à partir du sous-réseau. Ajoutez-en un RouteTabledans le VPC et renommez-le. PublicRouteTable

    Cet opération associe une nouvelle table de routage au VPC.

  13. Pour ajouter une règle de routage à la table de routage, ajoutez un type de ressource Route dans la ressource PublicRouteTable et remplacez son nom par PublicRoute.

    Nous utiliserons ce routage pour spécifier où diriger le trafic.

  14. Pour le routage publique, nous voulons que la passerelle Internet soit la cible de destination. Utilisez GatewayId pour créer une connexion de la ressource PublicRoute vers la passerelle Internet, comme vous l'avez fait pour créer une connexion entre la passerelle Internet et le VPC.

    CloudFormation Impossible d'associer un itinéraire à une passerelle Internet tant que vous n'associez pas la passerelle Internet au VPC. Autrement dit, nous devons créer une dépendance explicite au niveau de l'association VPC-passerelle Internet, comme décrit à l'étape suivante. Pour plus d’informations, consultez Attribut DependsOn.

  15. Créez une dépendance explicite entre la ressource PublicRoute et l'association VPC-passerelle Internet.

    1. Sur la PublicRoute ressource, passez le curseur sur le DependsOnpoint.

    2. Faites glisser une connexion vers l'association VPC-passerelle Internet (AWS::EC2::VPCGatewayAttachment).

      Avec DependsOn les connexions, AWS CloudFormation Designer crée une dépendance (un DependsOn attribut), où la ressource d'origine dépend de la ressource cible. Dans ce cas, AWS CloudFormation Designer ajoute un DependsOn attribut à la PublicRoute ressource et spécifie l'attachement Gateway-VPC en tant que dépendance.

  16. Créez une autre dépendance de la ressource WebServerInstance à la ressource PublicRoute.

    La ressource WebServerInstance dépend de l'acheminement du trafic à Internet par le routage public. Sans la route publique, l'instance ne peut pas envoyer de signal (à l'aide du script d'assistance cfn-signal) pour avertir CloudFormation lorsque la configuration de l'instance et les déploiements d'applications sont terminés.

  17. Faites glisser une connexion à partir de la ressource PublicRouteTable vers la ressource PublicSubnet pour associer la table de routage et le sous-réseau.

    Maintenant, le sous-réseau public utilisera la table de routage publique pour diriger le trafic.

  18. Dans la barre d'outils AWS CloudFormation Designer, enregistrez le modèle localement à l'aide du menu Fichier (icône du fichier).

    AWS CloudFormation Designer enregistre votre modèle sur votre disque dur. Vous pourrez utiliser ce modèle ultérieurement pour créer une pile. Nous vous recommandons d'enregistrer le modèle régulièrement pour éviter de perdre des modifications.

Dans cette étape, nous avons ajouté sept ressources au modèle et avons remplacé leur ID logique par des noms descriptifs. Nous avons aussi établi des connexions visuelles avec la plupart des ressources pour créer les associations et une dépendance. Toutefois, avant de pouvoir créer une pile avec ce modèle, nous devons encore ajouter quelques connexions (telle que l'association de l'instance au groupe de sécurité) et spécifier les propriétés de chaque ressource. À l'étape suivante, nous allons modifier d'autres composants de votre modèle, tels que les paramètres d'entrée, à l'aide de l'éditeur intégré AWS CloudFormation Designer.

Étape 2 : Ajout paramètres de modèle, de mappages et de sorties

Avant de pouvoir spécifier les propriétés des ressources, nous devons ajouter d'autres composants au modèle afin de pouvoir le réutiliser facilement dans plusieurs environnements. Dans cette étape, nous allons utiliser l'éditeur intégré AWS CloudFormation Designer pour ajouter des paramètres, des mappages et des sorties. Nous pourrons ainsi faire référence à ces paramètres et à ces mappages lorsque nous spécifierons les propriétés des ressources. Cette procédure met à votre disposition un exemple de code JSON et YAML que vous pouvez copier et coller dans l'un éditeur intégré.

Pour ajouter des paramètres

Les paramètres sont des valeurs d'entrée que vous spécifiez lorsque vous créez une pile. Ils sont utiles pour transmettre des valeurs, afin d'éviter les valeurs codées en dur dans les modèles. Par exemple, vous n'avez pas besoin de coder en dur le type d'instance de votre serveur web dans le modèle. Au lieu de cela, vous pouvez utiliser un paramètre pour spécifier le type d'instance lorsque vous créez une pile. De cette façon, vous pouvez utiliser le même modèle pour créer plusieurs serveurs web avec différents types d'instances. Pour plus d’informations, consultez Paramètres.

  1. Cliquez sur une zone ouverte dans le canevas AWS CloudFormation Designer.

    En fonction de ce que vous avez sélectionné, l'un éditeur intégré présente les composants que vous pouvez modifier au niveau du modèle ou au niveau des ressources. Au niveau du modèle, vous pouvez modifier toutes les autres sections d'un modèle, telles que les paramètres de modèle, les mappages et les sorties, à l'exception de la section Resources. Au niveau des ressources, vous pouvez modifier les attributs et les propriétés.

    Cliquez sur une zone ouverte du volet Canvas pour modifier le modèle au niveau des composants. Pour modifier les composants au niveau des ressources, sélectionnez une ressource.

  2. Dans le panneau de l'un éditeur intégré, choisissez l'onglet Parameters (Paramètres) dans la vue Components (Composants).

  3. Copiez les paramètres de l'extrait suivant et collez-les dans l'un éditeur intégré.

    L'extrait JSON suivant ajoute des paramètres pour spécifier le type d'instance de votre serveur web, un nom de paire de clés Amazon EC2 pour l'accès SSH au serveur web et la plage d'adresses IP qui peut être utilisée pour accéder au serveur web à l'aide de SSH.

    { "Parameters": { "InstanceType" : { "Description" : "WebServer EC2 instance type", "Type" : "String", "Default" : "t2.small", "AllowedValues" : [ "t1.micro", "t2.nano", "t2.micro", "t2.small", "t2.medium", "t2.large", "m1.small", "m1.medium", "m1.large", "m1.xlarge", "m2.xlarge", "m2.2xlarge", "m2.4xlarge", "m3.medium", "m3.large", "m3.xlarge", "m3.2xlarge", "m4.large", "m4.xlarge", "m4.2xlarge", "m4.4xlarge", "m4.10xlarge", "c1.medium", "c1.xlarge", "c3.large", "c3.xlarge", "c3.2xlarge", "c3.4xlarge", "c3.8xlarge", "c4.large", "c4.xlarge", "c4.2xlarge", "c4.4xlarge", "c4.8xlarge", "g2.2xlarge", "g2.8xlarge", "r3.large", "r3.xlarge", "r3.2xlarge", "r3.4xlarge", "r3.8xlarge", "i2.xlarge", "i2.2xlarge", "i2.4xlarge", "i2.8xlarge", "d2.xlarge", "d2.2xlarge", "d2.4xlarge", "d2.8xlarge", "hi1.4xlarge", "hs1.8xlarge", "cr1.8xlarge", "cc2.8xlarge", "cg1.4xlarge" ], "ConstraintDescription" : "must be a valid EC2 instance type." }, "KeyName": { "Description": "Name of an EC2 KeyPair to enable SSH access to the instance.", "Type": "AWS::EC2::KeyPair::KeyName", "ConstraintDescription": "must be the name of an existing EC2 KeyPair." }, "SSHLocation": { "Description": " The IP address range that can be used to access the web server using SSH.", "Type": "String", "MinLength": "9", "MaxLength": "18", "Default": "0.0.0.0/0", "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." } } }

    Voici le même extrait au format YAML.

    Parameters: InstanceType: Description: WebServer EC2 instance type Type: String Default: t2.small AllowedValues: - t1.micro - t2.nano - t2.micro - t2.small - t2.medium - t2.large - m1.small - m1.medium - m1.large - m1.xlarge - m2.xlarge - m2.2xlarge - m2.4xlarge - m3.medium - m3.large - m3.xlarge - m3.2xlarge - m4.large - m4.xlarge - m4.2xlarge - m4.4xlarge - m4.10xlarge - c1.medium - c1.xlarge - c3.large - c3.xlarge - c3.2xlarge - c3.4xlarge - c3.8xlarge - c4.large - c4.xlarge - c4.2xlarge - c4.4xlarge - c4.8xlarge - g2.2xlarge - g2.8xlarge - r3.large - r3.xlarge - r3.2xlarge - r3.4xlarge - r3.8xlarge - i2.xlarge - i2.2xlarge - i2.4xlarge - i2.8xlarge - d2.xlarge - d2.2xlarge - d2.4xlarge - d2.8xlarge - hi1.4xlarge - hs1.8xlarge - cr1.8xlarge - cc2.8xlarge - cg1.4xlarge ConstraintDescription: must be a valid EC2 instance type. KeyName: Description: Name of an EC2 KeyPair to enable SSH access to the instance. Type: 'AWS::EC2::KeyPair::KeyName' ConstraintDescription: must be the name of an existing EC2 KeyPair. SSHLocation: Description: ' The IP address range that can be used to access the web server using SSH.' Type: String MinLength: '9' MaxLength: '18' Default: 0.0.0.0/0 AllowedPattern: '(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2})' ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.
Pour ajouter des mappages

Les mappages sont un ensemble de clés qui sont associées à un ensemble de paires nom-valeur. Ils sont utiles pour spécifier des valeurs en fonction d'un paramètre d'entrée. Dans cette procédure, nous allons utiliser un mappage pour spécifier un ID d'AMI d'une instance EC2 en fonction du type d'instance et de la région dans laquelle vous créez la pile. Pour plus d’informations, consultez Mappages.

  1. Dans le panneau de l'un éditeur intégré, choisissez l'onglet Mappings (Mappages).

  2. Copiez les mappages JSON suivants et collez-les dans l'un éditeur intégré.

    { "Mappings" : { "AWSInstanceType2Arch" : { "t1.micro" : { "Arch" : "HVM64" }, "t2.nano" : { "Arch" : "HVM64" }, "t2.micro" : { "Arch" : "HVM64" }, "t2.small" : { "Arch" : "HVM64" }, "t2.medium" : { "Arch" : "HVM64" }, "t2.large" : { "Arch" : "HVM64" }, "m1.small" : { "Arch" : "HVM64" }, "m1.medium" : { "Arch" : "HVM64" }, "m1.large" : { "Arch" : "HVM64" }, "m1.xlarge" : { "Arch" : "HVM64" }, "m2.xlarge" : { "Arch" : "HVM64" }, "m2.2xlarge" : { "Arch" : "HVM64" }, "m2.4xlarge" : { "Arch" : "HVM64" }, "m3.medium" : { "Arch" : "HVM64" }, "m3.large" : { "Arch" : "HVM64" }, "m3.xlarge" : { "Arch" : "HVM64" }, "m3.2xlarge" : { "Arch" : "HVM64" }, "m4.large" : { "Arch" : "HVM64" }, "m4.xlarge" : { "Arch" : "HVM64" }, "m4.2xlarge" : { "Arch" : "HVM64" }, "m4.4xlarge" : { "Arch" : "HVM64" }, "m4.10xlarge" : { "Arch" : "HVM64" }, "c1.medium" : { "Arch" : "HVM64" }, "c1.xlarge" : { "Arch" : "HVM64" }, "c3.large" : { "Arch" : "HVM64" }, "c3.xlarge" : { "Arch" : "HVM64" }, "c3.2xlarge" : { "Arch" : "HVM64" }, "c3.4xlarge" : { "Arch" : "HVM64" }, "c3.8xlarge" : { "Arch" : "HVM64" }, "c4.large" : { "Arch" : "HVM64" }, "c4.xlarge" : { "Arch" : "HVM64" }, "c4.2xlarge" : { "Arch" : "HVM64" }, "c4.4xlarge" : { "Arch" : "HVM64" }, "c4.8xlarge" : { "Arch" : "HVM64" }, "g2.2xlarge" : { "Arch" : "HVMG2" }, "g2.8xlarge" : { "Arch" : "HVMG2" }, "r3.large" : { "Arch" : "HVM64" }, "r3.xlarge" : { "Arch" : "HVM64" }, "r3.2xlarge" : { "Arch" : "HVM64" }, "r3.4xlarge" : { "Arch" : "HVM64" }, "r3.8xlarge" : { "Arch" : "HVM64" }, "i2.xlarge" : { "Arch" : "HVM64" }, "i2.2xlarge" : { "Arch" : "HVM64" }, "i2.4xlarge" : { "Arch" : "HVM64" }, "i2.8xlarge" : { "Arch" : "HVM64" }, "d2.xlarge" : { "Arch" : "HVM64" }, "d2.2xlarge" : { "Arch" : "HVM64" }, "d2.4xlarge" : { "Arch" : "HVM64" }, "d2.8xlarge" : { "Arch" : "HVM64" }, "hi1.4xlarge" : { "Arch" : "HVM64" }, "hs1.8xlarge" : { "Arch" : "HVM64" }, "cr1.8xlarge" : { "Arch" : "HVM64" }, "cc2.8xlarge" : { "Arch" : "HVM64" } }, "AWSRegionArch2AMI" : { "us-east-1" : {"HVM64" : "ami-0ff8a91507f77f867", "HVMG2" : "ami-0a584ac55a7631c0c"}, "us-west-2" : {"HVM64" : "ami-a0cfeed8", "HVMG2" : "ami-0e09505bc235aa82d"}, "us-west-1" : {"HVM64" : "ami-0bdb828fd58c52235", "HVMG2" : "ami-066ee5fd4a9ef77f1"}, "eu-west-1" : {"HVM64" : "ami-047bb4163c506cd98", "HVMG2" : "ami-0a7c483d527806435"}, "eu-west-2" : {"HVM64" : "ami-f976839e", "HVMG2" : "NOT_SUPPORTED"}, "eu-west-3" : {"HVM64" : "ami-0ebc281c20e89ba4b", "HVMG2" : "NOT_SUPPORTED"}, "eu-central-1" : {"HVM64" : "ami-0233214e13e500f77", "HVMG2" : "ami-06223d46a6d0661c7"}, "ap-northeast-1" : {"HVM64" : "ami-06cd52961ce9f0d85", "HVMG2" : "ami-053cdd503598e4a9d"}, "ap-northeast-2" : {"HVM64" : "ami-0a10b2721688ce9d2", "HVMG2" : "NOT_SUPPORTED"}, "ap-northeast-3" : {"HVM64" : "ami-0d98120a9fb693f07", "HVMG2" : "NOT_SUPPORTED"}, "ap-southeast-1" : {"HVM64" : "ami-08569b978cc4dfa10", "HVMG2" : "ami-0be9df32ae9f92309"}, "ap-southeast-2" : {"HVM64" : "ami-09b42976632b27e9b", "HVMG2" : "ami-0a9ce9fecc3d1daf8"}, "ap-south-1" : {"HVM64" : "ami-0912f71e06545ad88", "HVMG2" : "ami-097b15e89dbdcfcf4"}, "us-east-2" : {"HVM64" : "ami-0b59bfac6be064b78", "HVMG2" : "NOT_SUPPORTED"}, "ca-central-1" : {"HVM64" : "ami-0b18956f", "HVMG2" : "NOT_SUPPORTED"}, "sa-east-1" : {"HVM64" : "ami-07b14488da8ea02a0", "HVMG2" : "NOT_SUPPORTED"}, "cn-north-1" : {"HVM64" : "ami-0a4eaf6c4454eda75", "HVMG2" : "NOT_SUPPORTED"}, "cn-northwest-1" : {"HVM64" : "ami-6b6a7d09", "HVMG2" : "NOT_SUPPORTED"} } } }

    Voici les mêmes mappages au format YAML.

    Mappings: AWSInstanceType2Arch: t1.micro: Arch: HVM64 t2.nano: Arch: HVM64 t2.micro: Arch: HVM64 t2.small: Arch: HVM64 t2.medium: Arch: HVM64 t2.large: Arch: HVM64 m1.small: Arch: HVM64 m1.medium: Arch: HVM64 m1.large: Arch: HVM64 m1.xlarge: Arch: HVM64 m2.xlarge: Arch: HVM64 m2.2xlarge: Arch: HVM64 m2.4xlarge: Arch: HVM64 m3.medium: Arch: HVM64 m3.large: Arch: HVM64 m3.xlarge: Arch: HVM64 m3.2xlarge: Arch: HVM64 m4.large: Arch: HVM64 m4.xlarge: Arch: HVM64 m4.2xlarge: Arch: HVM64 m4.4xlarge: Arch: HVM64 m4.10xlarge: Arch: HVM64 c1.medium: Arch: HVM64 c1.xlarge: Arch: HVM64 c3.large: Arch: HVM64 c3.xlarge: Arch: HVM64 c3.2xlarge: Arch: HVM64 c3.4xlarge: Arch: HVM64 c3.8xlarge: Arch: HVM64 c4.large: Arch: HVM64 c4.xlarge: Arch: HVM64 c4.2xlarge: Arch: HVM64 c4.4xlarge: Arch: HVM64 c4.8xlarge: Arch: HVM64 g2.2xlarge: Arch: HVMG2 g2.8xlarge: Arch: HVMG2 r3.large: Arch: HVM64 r3.xlarge: Arch: HVM64 r3.2xlarge: Arch: HVM64 r3.4xlarge: Arch: HVM64 r3.8xlarge: Arch: HVM64 i2.xlarge: Arch: HVM64 i2.2xlarge: Arch: HVM64 i2.4xlarge: Arch: HVM64 i2.8xlarge: Arch: HVM64 d2.xlarge: Arch: HVM64 d2.2xlarge: Arch: HVM64 d2.4xlarge: Arch: HVM64 d2.8xlarge: Arch: HVM64 hi1.4xlarge: Arch: HVM64 hs1.8xlarge: Arch: HVM64 cr1.8xlarge: Arch: HVM64 cc2.8xlarge: Arch: HVM64 AWSRegionArch2AMI: us-east-1: HVM64: ami-0ff8a91507f77f867 HVMG2: ami-0a584ac55a7631c0c us-west-2: HVM64: ami-a0cfeed8 HVMG2: ami-0e09505bc235aa82d us-west-1: HVM64: ami-0bdb828fd58c52235 HVMG2: ami-066ee5fd4a9ef77f1 eu-west-1: HVM64: ami-047bb4163c506cd98 HVMG2: ami-0a7c483d527806435 eu-west-2: HVM64: ami-f976839e HVMG2: NOT_SUPPORTED eu-west-3: HVM64: ami-0ebc281c20e89ba4b HVMG2: NOT_SUPPORTED eu-central-1: HVM64: ami-0233214e13e500f77 HVMG2: ami-06223d46a6d0661c7 ap-northeast-1: HVM64: ami-06cd52961ce9f0d85 HVMG2: ami-053cdd503598e4a9d ap-northeast-2: HVM64: ami-0a10b2721688ce9d2 HVMG2: NOT_SUPPORTED ap-northeast-3: HVM64: ami-0d98120a9fb693f07 HVMG2: NOT_SUPPORTED ap-southeast-1: HVM64: ami-08569b978cc4dfa10 HVMG2: ami-0be9df32ae9f92309 ap-southeast-2: HVM64: ami-09b42976632b27e9b HVMG2: ami-0a9ce9fecc3d1daf8 ap-south-1: HVM64: ami-0912f71e06545ad88 HVMG2: ami-097b15e89dbdcfcf4 us-east-2: HVM64: ami-0b59bfac6be064b78 HVMG2: NOT_SUPPORTED ca-central-1: HVM64: ami-0b18956f HVMG2: NOT_SUPPORTED sa-east-1: HVM64: ami-07b14488da8ea02a0 HVMG2: NOT_SUPPORTED cn-north-1: HVM64: ami-0a4eaf6c4454eda75 HVMG2: NOT_SUPPORTED cn-northwest-1: HVM64: ami-6b6a7d09 HVMG2: NOT_SUPPORTED
Pour ajouter des sorties

Les sorties déclarent les valeurs que vous souhaitez mettre à disposition lors d'un appel d'describe stacksAPI ou via l'onglet Sorties de la pile de CloudFormation console. Dans cette procédure, nous utiliserons l'URL de site web comme sortie, afin que vous puissiez voir facilement le site web une fois que nous l'aurons créé. Pour plus d’informations, consultez Outputs.

  1. Dans le panneau de l'un éditeur intégré, sélectionnez l'onglet Outputs (Sorties).

  2. Copiez la sortie JSON suivante et collez-la dans l'un éditeur intégré.

    Les données de sortie utilise une fonction intrinsèque Fn::GetAtt pour obtenir l'adresse IP publique de l'instance de serveur web.

    { "Outputs": { "URL": { "Value": { "Fn::Join": [ "", [ "http://", { "Fn::GetAtt": [ "WebServerInstance", "PublicIp" ] } ] ] }, "Description": "Newly created application URL" } } }

    Voici la même sortie au format YAML.

    Outputs: URL: Value: !Join - '' - - 'http://' - !GetAtt - WebServerInstance - PublicIp Description: Newly created application URL
  3. Enregistrez le modèle à nouveau pour ne pas perdre les modifications. Vous pouvez enregistrer en toute sécurité vos modifications dans le même fichier que celui que vous avez créé dans la section précédente.

Maintenant que les paramètres de modèle, les mappages et les sorties sont en place, nous pouvons spécifier les propriétés des ressources.

Étape 3 : Spécification des propriétés des ressources

De nombreuses ressources incluent des propriétés obligatoires qui définissent leur configuration ou leurs paramètres, tels que le type d'instance à utiliser pour le serveur web. Comme nous l'avons fait à l'étape précédente, nous utiliserons l'éditeur intégré AWS CloudFormation Designer pour spécifier les propriétés des ressources. Nous proposons un exemple de code JSON et YAML que vous pouvez copier et coller dans l'un éditeur intégré.

Pour spécifier les propriétés des ressources
  1. Sur le canevas AWS CloudFormation Designer, choisissez la VPC ressource.

    L'un éditeur intégré présente les composants que vous pouvez modifier au niveau des ressources, tels que les attributs et les propriétés.

  2. Dans le panneau de l'un éditeur intégré, choisissez l'onglet Properties (Propriétés).

  3. Copiez l'extrait JSON suivant et collez-le dans l'un éditeur intégré entre les accolades Properties ({}).

    Cet extrait spécifie les paramètres DNS et le bloc d'adresses CIDR du VPC.

    "EnableDnsSupport": "true", "EnableDnsHostnames": "true", "CidrBlock": "10.0.0.0/16"

    Pour YAML, entrez une nouvelle ligne après Properties: et collez l'extrait suivant.

    EnableDnsSupport: 'true' EnableDnsHostnames: 'true' CidrBlock: 10.0.0.0/16
    Note

    Pour accélérer les choses, nous proposons des extraits JSON et YAML que vous pouvez copier et coller. Cependant, notez que l'éditeur offre une fonctionnalité de remplissage automatique que vous pouvez utiliser pour spécifier manuellement chaque propriété. Pour plus d’informations, consultez un éditeur JSON et YAML intégré.

  4. Répétez ce processus pour les ressources suivantes :

    PublicSubnet

    Ajoutez la propriété de bloc CIDR suivante après la propriété VPC ID. AWS CloudFormation Designer a automatiquement ajouté la propriété VPC ID lorsque vous avez fait glisser le sous-réseau dans le VPC.

    Note

    Vous verrez quelques autres associations que AWS CloudFormation Designer a automatiquement créées pour vous. Ajoutez simplement les nouvelles propriétés, qui figurent en gras.

    JSON

    "VpcId": { "Ref": "VPC" }, "CidrBlock": "10.0.0.0/24"

    YAML

    VpcId: !Ref VPC CidrBlock: 10.0.0.0/24
    PublicRoute

    Ajoutez la propriété suivante du bloc d'adresses CIDR de destination, qui dirige tout le trafic vers la passerelle Internet :

    JSON

    "DestinationCidrBlock": "0.0.0.0/0", "RouteTableId": { "Ref": "PublicRouteTable" }, "GatewayId": { "Ref": "InternetGateway" }

    YAML

    DestinationCidrBlock: 0.0.0.0/0 RouteTableId: !Ref PublicRouteTable GatewayId: !Ref InternetGateway
    WebServerSecurityGroup

    Ajoutez les règles de trafic entrant suivantes, qui déterminent le type de trafic qui peut atteindre l'instance de serveur web. Ces règles autorisent tout le trafic HTTP, ainsi qu'une partie du trafic SSH, que vous spécifiez comme valeur de paramètre lorsque vous créez une pile.

    JSON

    "VpcId": { "Ref": "VPC" }, "GroupDescription" : "Allow access from HTTP and SSH traffic", "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": 80, "ToPort": 80, "CidrIp": "0.0.0.0/0" }, { "IpProtocol": "tcp", "FromPort": 22, "ToPort": 22, "CidrIp": { "Ref": "SSHLocation" } } ]

    YAML

    VpcId: !Ref VPC GroupDescription: Allow access from HTTP and SSH traffic SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: !Ref SSHLocation
    WebServerInstance

    Vous devez spécifier plusieurs propriétés pour l'instance de serveur web. Nous nous intéresserons à quelques-unes d'entre elles afin de vous montrer comment cela fonctionne. Les propriétés InstanceType et ImageId utilisent les valeurs de paramètre et de mappage que nous avons spécifiées dans la section précédente. Lorsque vous créez une pile, vous spécifiez le type d'instance comme valeur de paramètre. La valeur ImageId est un mappage qui s'appuie sur la région de la pile et le type d'instance que vous avez spécifié.

    La propriété NetworkInterfaces spécifie les paramètres réseau de l'instance de serveur web. Cette propriété nous permet d'associer le groupe de sécurité et le sous-réseau à l'instance. Bien que AWS CloudFormation Designer ait utilisé la SubnetId propriété pour associer l'instance au sous-réseau, nous devons utiliser la NetworkInterfaces propriété car c'est le seul moyen de donner une adresse IP publique au serveur Web. Et lorsque vous spécifiez la NetworkInterfaces, vous devez définir le sous-réseau et groupe de sécurité au sein de cette propriété.

    Dans la propriété UserData, nous spécifions des scripts de configuration qui s'exécutent une fois que l'instance est opérationnelle. Toutes les informations de configuration sont définies dans les métadonnées de l'instance, que nous ajouterons à l'étape suivante.

    Remplacez toutes les propriétés par l'extrait suivant :

    Important

    N'ajoutez pas cet extrait à des propriétés existantes.

    JSON

    "InstanceType": { "Ref": "InstanceType" }, "ImageId": { "Fn::FindInMap": [ "AWSRegionArch2AMI", { "Ref": "AWS::Region" }, { "Fn::FindInMap": [ "AWSInstanceType2Arch", { "Ref": "InstanceType" }, "Arch" ] } ] }, "KeyName": { "Ref": "KeyName" }, "NetworkInterfaces": [ { "GroupSet": [ { "Ref": "WebServerSecurityGroup" } ], "AssociatePublicIpAddress": "true", "DeviceIndex": "0", "DeleteOnTermination": "true", "SubnetId": { "Ref": "PublicSubnet" } } ], "UserData": { "Fn::Base64": { "Fn::Join": [ "", [ "#!/bin/bash -xe\n", "yum install -y aws-cfn-bootstrap\n", "# Install the files and packages from the metadata\n", "/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref": "AWS::StackName" }, " --resource WebServerInstance ", " --configsets All ", " --region ", { "Ref": "AWS::Region" }, "\n", "# Signal the status from cfn-init\n", "/opt/aws/bin/cfn-signal -e $? ", " --stack ", { "Ref": "AWS::StackName" }, " --resource WebServerInstance ", " --region ", { "Ref": "AWS::Region" }, "\n" ] ] } }

    YAML

    InstanceType: !Ref InstanceType ImageId: !FindInMap - AWSRegionArch2AMI - !Ref 'AWS::Region' - !FindInMap - AWSInstanceType2Arch - !Ref InstanceType - Arch KeyName: !Ref KeyName NetworkInterfaces: - GroupSet: - !Ref WebServerSecurityGroup AssociatePublicIpAddress: 'true' DeviceIndex: '0' DeleteOnTermination: 'true' SubnetId: !Ref PublicSubnet UserData: !Base64 'Fn::Join': - '' - - | #!/bin/bash -xe - | yum install -y aws-cfn-bootstrap - | # Install the files and packages from the metadata - '/opt/aws/bin/cfn-init -v ' - ' --stack ' - !Ref 'AWS::StackName' - ' --resource WebServerInstance ' - ' --configsets All ' - ' --region ' - !Ref 'AWS::Region' - |+ - | # Signal the status from cfn-init - '/opt/aws/bin/cfn-signal -e $? ' - ' --stack ' - !Ref 'AWS::StackName' - ' --resource WebServerInstance ' - ' --region ' - !Ref 'AWS::Region' - |+
  5. Ajoutez les métadonnées de configuration du serveur web à la ressource WebServerInstance.

    1. Choisissez la ressource WebServerInstance, puis l'onglet Metadata (Métadonnées) dans le panneau de l'un éditeur intégré.

    2. Si vous créez votre modèle au format JSON : entre les accolades Metadata ({}) et après l'accolade de fermeture AWS::CloudFormation::Designer, ajoutez une virgule (,).

    3. Après la propriété AWS::CloudFormation::Designer, ajoutez l'extrait suivant, qui indique au script d'assistant cfn-init de démarrer le serveur web et de créer une page web de base.

      JSON

      "AWS::CloudFormation::Init" : { "configSets" : { "All" : [ "ConfigureSampleApp" ] }, "ConfigureSampleApp" : { "packages" : { "yum" : { "httpd" : [] } }, "files" : { "/var/www/html/index.html" : { "content" : { "Fn::Join" : ["\n", [ "<h1>Congratulations, you have successfully launched the AWS CloudFormation sample.</h1>" ]]}, "mode" : "000644", "owner" : "root", "group" : "root" } }, "services" : { "sysvinit" : { "httpd" : { "enabled" : "true", "ensureRunning" : "true" } } } } }

      YAML

      'AWS::CloudFormation::Init': configSets: All: - ConfigureSampleApp ConfigureSampleApp: packages: yum: httpd: [] files: /var/www/html/index.html: content: !Join - |+ - - >- <h1>Congratulations, you have successfully launched the AWS CloudFormation sample.</h1> mode: '000644' owner: root group: root services: sysvinit: httpd: enabled: 'true' ensureRunning: 'true'
  6. Dans la barre d'outils du AWS CloudFormation concepteur, choisissez Valider le modèle ( ) pour vérifier les erreurs de syntaxe dans votre modèle.

    Affichez et corrigez les erreurs dans le panneau Messages, puis validez le modèle à nouveau. Si vous ne voyez pas d'erreur, le modèle est valide du point de vue syntaxique.

  7. Enregistrez le modèle complet pour enregistrer toutes les modifications apportées.

Vous disposez désormais d'un CloudFormation modèle complet que vous pouvez utiliser pour créer un serveur Web de base dans un VPC. Pour créer le modèle, nous avons tout d'abord ajouté et connecté les ressources du modèle via le volet Canvas d' AWS CloudFormation Designer. Ensuite, nous avons utilisé l'un éditeur intégré pour ajouter d'autres composants de modèle et pour spécifier les propriétés des ressources. A l'étape suivante, nous utiliserons ce modèle pour créer une pile.

Étape 4 : Mise en service des ressources

Pour créer une pile, vous pouvez lancer l'assistant de CloudFormation création de pile de AWS CloudFormation Designer. Nous utiliserons le modèle que nous avons créé lors des étapes précédentes pour créer une CloudFormation pile. Après avoir CloudFormation approvisionné toutes vos ressources, vous aurez un site Web de base opérationnel.

Pour créer la pile
  1. Dans la barre d'outils de AWS CloudFormation Designer, choisissez Create Stack (l'icône du cloud).

    AWS CloudFormation Designer enregistre le modèle ouvert dans un compartiment S3, puis lance l'assistant CloudFormation Create Stack. CloudFormation utilise le même compartiment S3 qu'il crée chaque fois que vous téléchargez des modèles.

  2. CloudFormation renseigne automatiquement l'URL du modèle ; choisissez Next.

  3. Dans la section Spécifier les détails, entrez un nom de pile dans le champ Nom de la pile. Utilisez BasicWebServerStack pour cet exemple.

  4. Dans la section Paramètres, pour le KeyNamechamp, entrez le nom d'une paire de clés Amazon EC2 valide dans la région où vous créez la pile.

  5. Conservez les autres valeurs de paramètre par défaut et choisissez Suivant.

  6. Dans cette procédure détaillée, vous n'avez pas besoin d'ajouter des balises ni de spécifier des paramètres avancés. Dès lors, cliquez sur Suivant.

  7. Assurez-vous que le nom de la pile et le nom de la paire de clés Amazon EC2 sont corrects, puis choisissez Créer.

La création de votre pile peut prendre plusieurs minutes. AWS CloudFormation Pour surveiller la progression, affichez les événements de la pile. Pour plus d'informations sur l'affichage des événements d'une pile, consultez Affichage des données et des ressources de la AWS CloudFormation pile sur AWS Management Console. Une fois que la pile est créée, affichez-en les sorties et accédez à l'URL de l'exemple de site web pour vérifier que le site web fonctionne. Pour plus d’informations, consultez Affichage des données et des ressources de la AWS CloudFormation pile sur AWS Management Console.

Maintenant que vous avez créé un modèle et lancé une pile avec AWS CloudFormation Designer, vous pouvez utiliser la pile dans la procédure pas à pas suivante :Procédure pas à pas : utilisez AWS CloudFormation Designer pour modifier le modèle d'une pile, qui modifie le modèle pour créer un serveur Web évolutif.