Utiliser 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.

Utiliser AWS CloudFormation Designer pour créer un serveur Web de base

Note

Infrastructure Composer en mode CloudFormation console est une amélioration par rapport à AWS CloudFormation Designer. Nous vous recommandons d'utiliser Infrastructure Composer au lieu de Designer dans la mesure du possible. Pour de plus amples informations, veuillez consulter Créez des modèles visuellement avec Infrastructure Composer.

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'YAMLéditeur intégré JSON 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 unVPC. 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'une VPC et une EC2 instance, 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 leVPC.

  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 (AmazonVPC), d'Amazon Elastic Compute Cloud (AmazonEC2) et CloudFormation. Chaque procédure fournit quelques informations contextuelles de base sur chaque ressource.

De plus, avant de commencer, assurez-vous de disposer d'une paire de EC2 clés Amazon dans la région dans laquelle vous créez votre stack. Pour plus d'informations, consultez les paires de EC2 clés Amazon dans le guide de EC2 l'utilisateur Amazon.

Étape 1 : Ajout et connexion de ressources

Nous utiliserons l' drag-and-dropinterface AWS CloudFormation Designer pour ajouter une EC2 instance Amazon et des ressources réseau, telles qu'un sous-réseauVPC, 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 à unVPC.

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

  2. Dans l'éditeur intégré situé dans la partie inférieure de la page, choisissez Modifier (icône en forme de crayon).

  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 volet Types de ressources, depuis la EC2catégorie, faites glisser un type de VPCressource vers le volet Canvas.

    Les ressources sont organisées en catégories. Toutes les ressources que nous ajoutons se trouvent dans EC2cette catégorie.

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

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

    L'YAMLextrait 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 toujours spécifier les VPC propriétés, telles que VPC le CIDR bloc. 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 de plus amples informations, veuillez consulter Resources référence de syntaxe de section pour les CloudFormation modèles.

    1. Choisissez la ressource VPC.

    2. Dans l'éditeur intégré, choisissez l'icône Modifier (icône en forme de crayon).

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

    Ensuite, nous allons ajouter des ressources auVPC.

  6. Faites glisser un coin de la VPC ressource pour l'étendre de manière à ce qu'elle soit suffisamment grande pour contenir plusieurs autres ressources.

    Nous devons ajouter un sous-réseau car vous ne pouvez pas ajouter une EC2 instance hébergeant le site Web directement dans le VPC ; les instances doivent être situées dans un sous-réseau.

  7. Ajoutez un type de ressource de sous-réseau dans le VPC et renommez-le. PublicSubnet

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

    Lorsque vous ajoutez le sous-réseau dans leVPC, 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. De la même manière que cela fonctionnait avec le sous-réseauVPC, 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-leWebServerSecurityGroup.

    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 requis pour les instances dans unVPC. 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 de VPC et renommez-leInternetGateway.

    La passerelle Internet permet la communication entre l'instance qui se trouve à l'intérieur d'Internet VPC et Internet. Sans la passerelle Internet, personne ne peut accéder à votre site web.

    Bien que vous puissiez faire glisser la passerelle Internet à l'intérieur duVPC, cela ne crée pas d'association avec leVPC. La passerelle Internet ne suit pas le modèle du conteneur ; vous devez plutôt faire glisser une connexion de la passerelle Internet vers leVPC, comme décrit à 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 leVPC.

      La bordure des ressources cibles valides change de couleur. Dans ce cas, il s'VPCagit de la seule ressource cible valide. Cette connexion crée une ressource de pièce jointe qui associe la passerelle Internet auVPC.

  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 un RouteTableà l'intérieur du VPC et renommez-lePublicRouteTable.

    Cela associe une nouvelle table de routage auVPC.

  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. GatewayIdÀ utiliser pour créer une connexion entre la PublicRoute ressource et la passerelle Internet, de la même manière que vous avez créé une connexion entre la passerelle Internet et leVPC.

    CloudFormation Impossible d'associer un itinéraire à une passerelle Internet tant que vous n'associez pas la passerelle Internet auVPC. Cela signifie que nous devons créer une dépendance explicite à l'égard de la passerelle VPC Internet, comme décrit à l'étape suivante. Pour de plus amples informations, veuillez consulter Attribut DependsOn.

  15. Créez une dépendance explicite entre la PublicRoute ressource et le VPC rattachement de la passerelle Internet.

    1. Sur la PublicRoute ressource, passez le pointeur de la souris sur le DependsOnpoint.

    2. Faites glisser une connexion vers la passerelle Internet en VPC pièce jointe (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 la passerelle 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 de 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.

Au cours de cette étape, nous avons ajouté sept ressources à votre modèle et renommé leur logique IDs avec des noms conviviaux. 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. La procédure pas à pas fournit un exemple JSON YAML que vous pouvez utiliser pour copier-coller dans l'é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 de plus amples informations, veuillez consulter Parameters référence de syntaxe de section pour les CloudFormation modèles.

  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'JSONextrait suivant ajoute des paramètres pour spécifier le type d'instance de votre serveur Web, un nom de EC2 paire de clés Amazon pour SSH accéder au serveur Web et la plage d'adresses IP pouvant ê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. 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. Pour cette présentation, nous allons utiliser un mappage pour spécifier un AMI identifiant pour une EC2 instance en fonction du type d'instance et de la région dans lesquels vous créez la pile. Pour de plus amples informations, veuillez consulter Mappings référence de syntaxe de section pour les CloudFormation modèles.

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

  2. Copiez les JSON mappages suivants et collez-les dans l'é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 dansYAML.

    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 describe stacks API appel ou via l'onglet Sorties de la pile de CloudFormation consoles. Pour cette présentation, nous publierons le site Web URL afin que vous puissiez facilement le consulter une fois que nous l'avons créé. Pour de plus amples informations, veuillez consulter Outputs référence de syntaxe de section pour les CloudFormation modèles.

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

  2. Copiez le JSON résultat suivant et collez-le dans l'é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 dansYAML.

    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 fournissons un échantillon JSON YAML que vous pouvez copier et coller dans l'é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'JSONextrait suivant et collez-le dans l'éditeur intégré entre les accolades des propriétés (). {}

    Cet extrait de code spécifie DNS les paramètres et le CIDR bloc du. VPC

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

    PourYAML, tapez une nouvelle ligne après Properties: et collez l'extrait suivant.

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

    Pour plus d'efficacité, nous fournissons JSON des YAML extraits 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 de plus amples informations, veuillez consulter Intégré JSON et YAML éditeur.

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

    PublicSubnet

    Ajoutez la propriété de CIDR bloc 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é de CIDR bloc de destination suivante, 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. Les règles autorisent tout HTTP ou partie du SSH trafic, 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 dans JSON : Entre les Metadata accolades ({}) et après les accolades AWS::CloudFormation::Designer fermantes, 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 AWS CloudFormation Designer, choisissez Valider le modèle (icône de case à cocher) 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 unVPC. 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 que celui qu'il crée chaque fois que vous téléchargez des modèles.

  2. CloudFormation remplit automatiquement le modèle URL ; choisissez Next.

  3. Dans la section Spécifier les détails de la pile, entrez le nom de la 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 EC2 clés Amazon 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 EC2 paire de clés Amazon sont corrects, puis choisissez Create.

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 Afficher les informations relatives à la pile depuis la CloudFormation console. Une fois la pile créée, consultez les sorties de la pile et rendez-vous sur le site Web d'exemple URL pour vérifier que le site Web fonctionne. Pour de plus amples informations, veuillez consulter Afficher les informations relatives à la pile depuis la CloudFormation 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 :Utiliser AWS CloudFormation Designer pour modifier le modèle d'une pile, qui modifie le modèle pour créer un serveur Web évolutif.