Procedura dettagliata: utilizzare AWS CloudFormation Designer per creare un server Web di base - AWS CloudFormation

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Procedura dettagliata: utilizzare AWS CloudFormation Designer per creare un server Web di base

Application Composer in modalità CloudFormation console è un miglioramento rispetto a AWS CloudFormation Designer. Si consiglia di utilizzare Application Composer anziché Designer ogni volta che è possibile. Per ulteriori informazioni, consulta Utilizzo di Application Composer per creare modelli visivamente.

AWS CloudFormation Designer rappresenta graficamente i tuoi modelli per aiutarti a visualizzare le risorse nel modello e il modo in cui sono collegate. L'editor JSON e YAML integrato semplifica la modifica dei modelli direttamente nella console. AWS CloudFormation Per dimostrare come utilizzare entrambi questi componenti, utilizzeremo AWS CloudFormation Designer per creare un server Web di base in un VPC. Quindi, salveremo il modello e lo useremo per creare uno CloudFormation stack.

Durante la procedura guidata completerai i seguenti passaggi:

  1. Aggiungere e connettere le risorse.

    La prima volta che apri AWS CloudFormation Designer, inizi con un modello vuoto. Useremo AWS CloudFormation Designer per iniziare a compilare il modello trascinando risorse, come un VPC e un'istanza EC2, nel modello. Creeremo inoltre collegamenti tra loro. Ad esempio, utilizzeremo AWS CloudFormation Designer per creare una connessione tra il gateway Internet e il VPC.

  2. Aggiungere parametri, mappature e output del modello.

    Utilizzeremo l'editor integrato di AWS CloudFormation Designer per aggiungere altri componenti del modello per renderlo più utile. Ad esempio, aggiungeremo i parametri al modello in modo che tu possa specificare valori di input al momento della creazione di uno stack. In questo modo non dovrai modificare il modello costantemente per i valori di proprietà che dovresti comunemente cambiare.

  3. Specificare le proprietà delle risorse.

    Utilizzeremo nuovamente editor integrato per specificare le impostazioni di configurazione per le nostre risorse.

  4. Effettuare il provisioning delle risorse

    Nessuna delle risorse del modello sono in esecuzione finché non viene creato uno stack. Utilizzeremo il modello appena creato per avviare uno CloudFormation stack, che fornirà tutte le risorse definite nel modello.

    Nota

    CloudFormation è un servizio gratuito; tuttavia, ti verranno addebitate le AWS risorse che includi negli stack alla tariffa corrente per ciascuna di esse. Per ulteriori informazioni sui prezzi di AWS , visita la pagina dei dettagli per ogni prodotto su http://aws.amazon.com.

Prerequisiti

Questa procedura dettagliata presuppone che tu abbia una conoscenza pratica di Amazon Virtual Private Cloud (Amazon VPC), Amazon Elastic Compute Cloud (Amazon EC2) e. CloudFormation Per contesto, ogni procedura fornisce alcune informazioni di base su ogni risorsa.

Inoltre, prima di iniziare, devi disporre di una coppia di chiavi Amazon EC2 nella Regione in cui stai creando il tuo stack. Per ulteriori informazioni, consulta la sezione relativa alle coppie di chiavi Amazon EC2 nella Guida per l'utente di Amazon EC2.

Fase 1: aggiungere e connettere le risorse

Useremo l' drag-and-drop interfaccia AWS CloudFormation Designer per aggiungere un'istanza Amazon EC2 e risorse di rete, come VPC, sottorete, tabella di routing e gateway Internet. Dopo aver aggiunto tutte le risorse, creeremo le connessioni tra loro. Ad esempio, assoceremo il gateway Internet con un VPC.

Per aggiungere risorse a un modello
  1. Apri AWS CloudFormation Designer all'indirizzo https://console.aws.amazon.com/cloudformation/designer.

  2. In editor integrato nella parte inferiore della pagina, scegliere Edit (Modifica)( ).

  3. Cambiare il nome del modello in BasicWebServerInVPC e quindi premere Enter (Invio).

    Al momento, abbiamo un modello vuoto che non è ancora valido. Nelle prossime fasi, aggiungeremo le risorse per renderlo valido.

  4. Nel riquadro Resource types (Tipi di risorse), all'interno della categoria EC2, trascinare un tipo di risorsa VPC nel riquadro Canvas.

    Le risorse sono organizzate per categorie di risorse. Tutte le risorse che aggiungeremo sono nella categoria EC2.

    AWS CloudFormation Designer modifica immediatamente il modello per includere una risorsa VPC, con risultati simili al seguente frammento di codice JSON.

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

    Il frammento YAML è simile a quanto segue.

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

    Dobbiamo ancora specificare le proprietà VPC, come il blocco CIDR del VPC. Lo faremo più tardi. Ciò è valido per tutte le risorse che aggiungeremo.

  5. Rinominare il VPC.

    Nota

    Quando si rinomina una risorsa, si rinomina il relativo ID logico, che è il nome a cui si fa riferimento nel modello (non il nome assegnato al momento della creazione della risorsa). CloudFormation Per ulteriori informazioni, consulta Risorse.

    1. Selezionare la risorsa VPC.

    2. In editor integrato, scegliere l'icona Edit (Modifica) ( ).

    3. Cambiare il nome del modello in VPC e quindi selezionare Enter (Invio).

    Successivamente, aggiungeremo risorse al VPC.

  6. Trascinare un angolo della risorsa VPC per espanderla in modo che sia sufficientemente grande per adattarsi a molte più risorse.

    Abbiamo bisogno di aggiungere una sottorete perché non è possibile aggiungere un'istanza EC2, che ospita il sito Web, direttamente nel VPC; le istanze devono essere situate in una sottorete.

  7. Aggiungere un tipo di risorsa Subnet (Sottorete) all'interno del VPC e rinominarlo PublicSubnet.

    Utilizzeremo la sottorete per allocare un intervallo di indirizzi IP nel VPC da associare ad altre AWS risorse, come un'istanza Amazon EC2.

    Quando si aggiunge la sottorete all'interno del VPC AWS CloudFormation , Designer associa automaticamente la sottorete al VPC. Questa associazione è un modello container, dove le risorse all'interno del container vengono automaticamente associate alla risorsa container.

  8. Aggiungere un tipo di risorsa Instance (Istanza) all'interno della risorsa PublicSubnet e rinominarlo WebServerInstance.

    L'istanza è un ambiente di calcolo virtuale dove è possibile ospitare un sito Web di base. Analogamente al modo in cui questa operazione ha funzionato con la sottorete e il VPC, aggiungere l'istanza nella sottorete associa automaticamente l'istanza alla sottorete.

  9. Aggiungi un tipo di SecurityGrouprisorsa all'interno del VPC e rinominalo. WebServerSecurityGroup

    Il gruppo di sicurezza è un firewall virtuale che controlla il traffico in entrata e in uscita dell'istanza del server Web. È inoltre richiesto per le istanze in un VPC. Dovremo associare l'istanza del server Web a questo gruppo di sicurezza, operazione che eseguiremo in un secondo momento quando specifichiamo le proprietà dell'istanza.

  10. Aggiungi un tipo di InternetGatewayrisorsa ovunque al di fuori del VPC e rinominalo. InternetGateway

    Il gateway Internet consente la comunicazione tra l'istanza che è all'interno del VPC e Internet. Senza il gateway Internet, nessuno può accedere al tuo sito Web.

    Anche se è possibile trascinare il gateway Internet all'interno del VPC, questo non crea un'associazione con il VPC. Il gateway Internet non segue il modello container; invece, è necessario trascinare una connessione dal gateway Internet al VPC, come descritto nella fase successiva.

  11. Creare una connessione tra la risorsa InternetGateway e la risorsa VPC.

    1. Nella risorsa InternetGateway, passare il mouse sul collegamento al gateway Internet (AWS::EC2::VPCGatewayAttachment).

    2. Trascinare una connessione sul VPC.

      Il bordo delle risorse di destinazione valide cambia colore. In questo caso, il VPC è la sola risorsa di destinazione valida. Questa connessione crea una risorsa di collegamento che associa il gateway Internet al VPC.

  12. Quindi, abbiamo bisogno di aggiungere una tabella di routing e instradare per specificare in che modo indirizzare il traffico di rete dall'interno di una sottorete. Aggiungi un file RouteTableall'interno del VPC e rinominalo. PublicRouteTable

    Questa operazione associa una nuova tabella di routing con il VPC.

  13. Per aggiungere una regola di instradamento alla tabella di routing, aggiungere un tipo di risorsa Route all'interno della risorsa PublicRouteTable e rinominarlo PublicRoute.

    Utilizzeremo l'instradamento per specificare dove indirizzare il traffico.

  14. Per l'instradamento pubblico, vogliamo che il gateway Internet sia la destinazione. Usare GatewayId per creare una connessione dalla risorsa PublicRoute al gateway Internet, in modo analogo a come è stata creata una connessione tra il gateway Internet e il VPC.

    CloudFormation non è possibile associare una route a un gateway Internet finché non si associa il gateway Internet al VPC. Questo significa che dobbiamo creare una dipendenza esplicita sul collegamento gateway Internet-VPC, come descritto nella fase successiva. Per ulteriori informazioni, consulta Attributo DependsOn.

  15. Creare una dipendenza esplicita tra la risorsa PublicRoute e il collegamento gateway Internet-VPC.

    1. Sulla PublicRoute risorsa, passa il mouse sopra il DependsOnpunto.

    2. Trascinare una connessione sul collegamento gateway Internet-VPC (AWS::EC2::VPCGatewayAttachment).

      Con DependsOn le connessioni, AWS CloudFormation Designer crea una dipendenza (un DependsOn attributo), in cui la risorsa di origine dipende dalla risorsa di destinazione. In questo caso, AWS CloudFormation Designer aggiunge un DependsOn attributo alla PublicRoute risorsa e specifica l'allegato Gateway-VPC come dipendenza.

  16. Creare un'altra dipendenza dalla risorsa WebServerInstance alla risorsa PublicRoute.

    La risorsa WebServerInstance dipende dall'instradamento pubblico per instradare il traffico su Internet. Senza la route pubblica, l'istanza non può inviare un segnale (utilizzando lo script di supporto cfn-signal) per notificare CloudFormation quando la configurazione dell'istanza e le distribuzioni delle applicazioni sono complete.

  17. Trascinare una connessione dalla risorsa PublicRouteTable alla risorsa PublicSubnet per associare la tabella di instradamento e la sottorete.

    Ora la sottorete pubblica utilizzerà la tabella di routing pubblica per indirizzare il traffico.

  18. Dalla barra degli strumenti di AWS CloudFormation Designer, salvate il modello localmente utilizzando il menu File (l'icona del file).

    AWS CloudFormation Designer salva il modello sul disco rigido. È possibile utilizzare il modello in un secondo tempo per creare uno stack. È consigliabile salvare il modello regolarmente per evitare di perdere le modifiche.

In questa fase, vengono aggiunte sette risorse al modello e gli ID logici vengono rinominati con nomi semplici. Abbiamo inoltre stabilito le connessioni visive con la maggior parte delle risorse per creare associazioni e una dipendenza. Tuttavia, prima di poter creare uno stack con questo modello, è necessario creare qualche connessione in più (ad esempio associando l'istanza al gruppo di sicurezza) e specificare le proprietà per ogni risorsa. Nel passaggio successivo, illustreremo come modificare altri componenti del modello, come i parametri di input, utilizzando l'editor integrato di AWS CloudFormation Designer.

Fase 2: aggiungere parametri, mappature e output

Prima di specificare le proprietà delle risorse, dobbiamo aggiungere altri componenti per facilitare il riutilizzo del modello in più ambienti. In questo passaggio, utilizzeremo l'editor integrato di AWS CloudFormation Designer per aggiungere parametri, mappature e output. Quindi, possiamo fare riferimento a questi parametri e mappature quando specifichiamo le proprietà delle risorse. La procedura guidata fornisce JSON e YAML di esempio da copiare e incollare in editor integrato.

Per aggiungere parametri

I parametri sono valori di input specificati dall'utente al momento della creazione di uno stack. Si tratta di una funzione utile, ad esempio, per trasferire i valori in modo da non avere valori codificati nei modelli. Ad esempio, non è necessario effettuare l'hard coding del tipo di istanza del server Web nel modello, invece, è possibile utilizzare un parametro per specificare il tipo di istanza al momento della creazione di uno stack. In questo modo è possibile utilizzare lo stesso modello per creare più server Web con diversi tipi di istanza. Per ulteriori informazioni, consulta Parametri.

  1. Fate clic su un'area aperta nell'area di disegno di Designer AWS CloudFormation .

    In base alla selezione, editor integrato mostra i componenti a livello di modello o a livello di risorse che è possibile modificare. A livello di modello, è possibile modificare tutte le altre sezioni di un modello, ad esempio i parametri, le mappature e gli output, tranne per la sezione Risorse. A livello di risorse, è possibile modificare le proprietà e gli attributi della risorsa.

    Fare clic su un'area aperta nel canvas consente di modificare i componenti a livello di modello. Per modificare i componenti a livello di risorsa, selezionare una risorsa.

  2. Nel riquadro editor integrato, scegliere la scheda Parameters(Parametri) nella visualizzazione Components (Componenti).

  3. Copiare i parametri nei seguenti frammenti e incollarli in editor integrato.

    Il seguente frammento JSON aggiunge parametri per specificare il tipo di istanza server Web, un nome della coppia di chiavi Amazon EC2 per permettere a SSH l'accesso al server Web e l'intervallo di indirizzi IP che può essere utilizzato per accedere al server Web tramite 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." } } }

    Questo è lo stesso frammento in 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.
Per aggiungere mappature

Le mappature sono un set di chiavi associato a un set di coppie nome/valore. Si tratta di una funzione utile per specificare i valori basati su un valore del parametro di input. Per questa procedura guidata, utilizzeremo una mappatura per specificare un ID istanza AMI per un'istanza EC2 in base al tipo di istanza e alla Regione in cui viene creato lo stack. Per ulteriori informazioni, consulta Mappature.

  1. Nel riquadro editor integrato, scegliere la scheda Mappings (Mappature).

  2. Copiare le seguenti mappature JSON e incollarle in editor integrato.

    { "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"} } } }

    Queste sono le stesse mappature in 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
Per aggiungere output

Gli output dichiarano i valori che desideri siano disponibili per una chiamata describe stacks API o tramite la scheda Outputs dello stack della CloudFormation console. Per questa procedura guidata, genereremo l'URL del sito Web in modo da poter visualizzare in modo semplice il sito Web dopo la sua creazione. Per ulteriori informazioni, consulta Output.

  1. Nel riquadro editor integrato, scegliere la scheda Outputs (Output).

  2. Copiare il seguente output JSON e incollarlo in editor integrato.

    L'output utilizza una funzione intrinseca Fn::GetAtt per ottenere l'IP pubblico dell'istanza del server Web.

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

    Questo è lo stesso output in YAML.

    Outputs: URL: Value: !Join - '' - - 'http://' - !GetAtt - WebServerInstance - PublicIp Description: Newly created application URL
  3. Salvare il modello di nuovo in modo da non perdere le modifiche. È possibile salvare in modo sicuro le modifiche sullo stesso file creato nella sezione precedente.

Ora che i parametri, le mappature e gli output del modello sono presenti, è possibile specificare le proprietà delle risorse.

Fase 3: specificare le proprietà delle risorse

Molte risorse dispongono di proprietà necessarie che definiscono le loro configurazioni o impostazioni, ad esempio, il tipo di istanza da usare per il server Web. Analogamente a quanto fatto nel passaggio precedente, utilizzeremo l'editor integrato di AWS CloudFormation Designer per specificare le proprietà delle risorse. Forniamo JSON e YAML di esempio da copiare e incollare in editor integrato.

Per specificare le proprietà delle risorse
  1. Nella tela di AWS CloudFormation Designer, scegli la VPC risorsa.

    editor integrato mostra i componenti a livello di risorse che è possibile modificare, ad esempio le proprietà e gli attributi delle risorse.

  2. Nel riquadro editor integrato, scegliere la scheda Properties (Proprietà).

  3. Copiare il seguente frammento JSON e incollarlo in editor integrato tra le parentesi graffe Properties (Proprietà) ({}).

    Questo frammento specifica le impostazioni DNS e il blocco CIDR del VPC.

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

    Per YAML digitare una nuova riga dopo Properties: e incollare il seguente frammento.

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

    Per efficienza, forniamo i frammenti JSON e YAML che è possibile copiare e incollare. Si noti, tuttavia, che l'editor ha una funzionalità di completamento automatico che è possibile utilizzare per specificare manualmente ogni proprietà. Per ulteriori informazioni, consulta Editor JSON e YAML integrato.

  4. Ripetere il processo per le risorse seguenti:

    PublicSubnet

    Aggiungi la seguente proprietà di blocco CIDR dopo la proprietà ID VPC. AWS CloudFormation Designer ha aggiunto automaticamente la proprietà VPC ID quando si trascina la sottorete all'interno del VPC.

    Nota

    Vedrete alcune altre associazioni che AWS CloudFormation Designer ha creato automaticamente per voi. Aggiungere solo le nuove proprietà, che sono in grassetto.

    JSON

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

    YAML

    VpcId: !Ref VPC CidrBlock: 10.0.0.0/24
    PublicRoute

    Aggiungere la seguente proprietà del blocco CIDR di destinazione, che indirizza tutto il traffico sul gateway 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

    Aggiungi le seguenti regole in entrata che determinano il traffico che è in grado di raggiungere l'istanza del server Web. Le regole consentono tutto il traffico HTTP e parte del traffico SSH e vanno specificate come valore del parametro al momento della creazione di uno stack.

    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

    È necessario specificare un numero di proprietà per l'istanza del server Web, perciò ne evidenzieremo alcune a fini dimostrativi. Le proprietà InstanceType e ImageId utilizzano i valori del parametro e della mappatura specificati nella sezione precedente. Al momento della creazione di uno stack, vengono specificati il tipo di istanza e il valore del parametro. Il valore ImageId è una mappatura basata sulla Regione dello stack e sul tipo di istanza specificati.

    La proprietà NetworkInterfaces specifica le impostazioni di rete per l'istanza del server Web. Questa proprietà consente di associare il gruppo di sicurezza e la sottorete all'istanza. Sebbene AWS CloudFormation Designer abbia utilizzato la SubnetId proprietà per associare l'istanza alla sottorete, dobbiamo utilizzare la NetworkInterfaces proprietà perché è l'unico modo per assegnare al server Web un IP pubblico. E quando viene specificata la proprietà NetworkInterfaces, è necessario specificare la sottorete e il gruppo di sicurezza all'interno di quella proprietà.

    Nella proprietà UserData, specifichiamo gli script di configurazione che vengono eseguiti dopo che l'istanza è in esecuzione. Tutte le informazioni di configurazione vengono definite nei metadati dell'istanza, che aggiungeremo nella fase successiva.

    Sostituire tutte le proprietà con il seguente frammento:

    Importante

    Non aggiungere questo frammento alle proprietà esistenti.

    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. Aggiungere i metadati della configurazione del server Web alla risorsa WebServerInstance.

    1. Scegliere la risorsa WebServerInstance, quindi selezionare la scheda Metadata (Metadati) nel riquadro editor integrato.

    2. Se si crea il modello in formato JSON: tra le parentesi graffe Metadata ({}) e dopo la parentesi graffa di chiusura AWS::CloudFormation::Designer aggiungere una virgola (,).

    3. Dopo la proprietà AWS::CloudFormation::Designer, aggiungere i seguenti frammenti, operazione che indica allo script helper cfn-init di avviare il server Web e creare una pagina Web di 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. Sulla barra degli strumenti di AWS CloudFormation Designer, scegliete Validate template ( ) per verificare la presenza di errori di sintassi nel modello.

    Visualizzare e correggere gli errori nel riquadro Messages (Messaggi), quindi convalidare nuovamente il modello. Se non vengono visualizzati errori, il modello è sintatticamente valido.

  7. Salvare il modello completato per mantenere tutte le modifiche apportate.

Ora hai un CloudFormation modello completo che puoi usare per creare un server web di base in un VPC. Per creare il modello, abbiamo prima aggiunto e connesso le risorse del modello utilizzando il riquadro canvas di AWS CloudFormation Designer. Quindi, abbiamo utilizzato editor integrato per aggiungere altri componenti del modello e specificare le proprietà delle risorse. Nella fase successiva, utilizzeremo questo modello per creare uno stack.

Fase 4: effettuare il provisioning delle risorse

Per creare uno stack, puoi avviare la procedura guidata CloudFormation Create Stack di Designer. AWS CloudFormation Useremo il modello che abbiamo creato nei passaggi precedenti per creare uno stack. CloudFormation Dopo CloudFormation aver fornito tutte le tue risorse, avrai un sito web di base attivo e funzionante.

Per creare lo stack
  1. Nella barra degli strumenti di AWS CloudFormation Designer, scegli Create Stack (l'icona a forma di nuvola).

    AWS CloudFormation Designer salva il modello aperto in un bucket S3, quindi avvia la procedura guidata Create Stack. CloudFormation CloudFormation utilizza lo stesso bucket S3 che crea ogni volta che carichi modelli.

  2. CloudFormation compila automaticamente l'URL del modello; scegli Avanti.

  3. Nella sezione Specify Details (Specifica dettagli), inserire un nome dello stack nel campo Stack name (Nome dello stack) . Per questo esempio, utilizzare BasicWebServerStack.

  4. Nella sezione Parametri, per il KeyNamecampo, inserisci il nome di una coppia di chiavi Amazon EC2 valida nella stessa regione in cui stai creando lo stack.

  5. Mantenere gli altri valori dei parametri predefiniti e scegliere Next (Avanti).

  6. Per questa procedura guidata, non è necessario aggiungere tag o specificare impostazioni avanzate, quindi selezionare Next (Avanti).

  7. Assicurarsi che il nome dello stack e il nome della coppia di chiavi Amazon EC2 siano corretti e quindi selezionare Create (Crea).

La creazione dello stack può richiedere diversi minuti. AWS CloudFormation È possibile controllare l'avanzamento negli eventi per lo stack. Per ulteriori informazioni sulla visualizzazione degli eventi dello stack, consulta Visualizzazione dei dati e delle risorse AWS CloudFormation dello stack su AWS Management Console. Dopo la creazione dello stack, visualizzare gli output dello stack e visitare l'URL del sito Web di esempio per verificare che il sito Web sia operativo. Per ulteriori informazioni, consulta Visualizzazione dei dati e delle risorse AWS CloudFormation dello stack su AWS Management Console.

Ora che avete creato con successo un modello e lanciato uno stack utilizzando AWS CloudFormation Designer, potete utilizzare lo stack nella seguente procedura dettagliata:Procedura dettagliata: usa AWS CloudFormation Designer per modificare il modello di uno stack, che modifica il modello per creare un server Web scalabile.