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à.
Usa AWS CloudFormation Designer per creare un server web di base
Nota
Infrastructure Composer in modalità CloudFormation console è un miglioramento rispetto a AWS CloudFormation Designer. Si consiglia di utilizzare Infrastructure Composer anziché Designer ogni volta che è possibile. Per ulteriori informazioni, consulta Crea modelli visivamente con Infrastructure Composer.
AWS CloudFormation Designer rappresenta graficamente i modelli per aiutarti a visualizzare le risorse contenute nel modello e il modo in cui sono collegate. L'YAMLeditor integrato JSON semplifica la modifica dei modelli direttamente nella AWS CloudFormation console. Per dimostrare come utilizzare entrambi questi componenti, utilizzeremo AWS CloudFormation Designer per creare un server web di base in unVPC. Quindi, salveremo il modello e lo useremo per creare uno CloudFormation stack.
Durante la procedura guidata completerai i seguenti passaggi:
-
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, ad esempio un'istanza VPC e un'EC2istanza, all'interno del modello. Creeremo inoltre collegamenti tra loro. Ad esempio, utilizzeremo AWS CloudFormation Designer per creare una connessione tra il gateway Internet e il. VPC
-
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.
-
Specificare le proprietà delle risorse.
Utilizzeremo nuovamente editor integrato per specificare le impostazioni di configurazione per le nostre risorse.
-
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 (AmazonEC2) e. CloudFormation Per contesto, ogni procedura fornisce alcune informazioni di base su ogni risorsa.
Inoltre, prima di iniziare, assicurati di disporre di una coppia di EC2 chiavi Amazon nella regione in cui stai creando lo stack. Per ulteriori informazioni, consulta le coppie di EC2 chiavi Amazon nella Amazon EC2 User Guide.
Fase 1: aggiungere e connettere le risorse
Useremo l' drag-and-dropinterfaccia AWS CloudFormation Designer per aggiungere un'EC2istanza Amazon e risorse di rete, come una subnetVPC, una tabella di routing e un gateway Internet. Dopo aver aggiunto tutte le risorse, creeremo le connessioni tra loro. Ad esempio, assoceremo il gateway Internet a unVPC.
Per aggiungere risorse a un modello
-
Apri AWS CloudFormation Designer presso https://console.aws.amazon.com/cloudformation/designer
. -
Nell'editor integrato nella metà inferiore della pagina, scegli Modifica (icona a forma di matita).
-
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.
-
Nel riquadro Tipi di risorse, dall'interno della EC2categoria, trascina un tipo di VPCrisorsa sul riquadro Canvas.
Le risorse sono organizzate per categorie di risorse. Tutte le risorse che stiamo aggiungendo sono incluse nella EC2categoria.
AWS CloudFormation Designer modifica immediatamente il modello per includere una VPC risorsa, con risultati simili al JSON frammento seguente.
"Resources": { "VPC431KO": { "Type": "AWS::EC2::VPC", "Properties": {}, "Metadata": { "AWS::CloudFormation::Designer": { "id": "445730ea-0d11-45ba-b6ac-12345EXAMPLE" } } } }
Lo YAML snippet è simile al seguente.
Resources: VPC431KO: Type: 'AWS::EC2::VPC' Properties: {} Metadata: 'AWS::CloudFormation::Designer': id: 9430b008-7a03-41ed-b63e-12345EXAMPLE
Nota che dobbiamo comunque specificare le VPC proprietà, come il blocco VPC'sCIDR. Lo faremo più tardi. Ciò è valido per tutte le risorse che aggiungeremo.
-
Rinomina 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 CloudFormation creazione della risorsa). Per ulteriori informazioni, consulta Resources riferimento alla sintassi della sezione per i modelli CloudFormation .
-
Seleziona la risorsa VPC.
-
Nell'editor integrato, scegli l'icona Modifica (icona a forma di matita).
-
Cambiare il nome del modello in
VPC
e quindi selezionare Enter (Invio).
Successivamente, aggiungeremo risorse aVPC.
-
-
Trascina un angolo della VPC risorsa per espanderla in modo che sia sufficientemente grande da contenere molte altre risorse.
È necessario aggiungere una sottorete perché non è possibile aggiungere un'EC2istanza, che ospita il sito Web, direttamente nellaVPC; le istanze devono trovarsi in una sottorete.
-
Aggiungi un tipo di risorsa Subnet all'interno di e rinominalo. VPC
PublicSubnet
Utilizzeremo la sottorete per allocare un intervallo di indirizzi IP da associare ad altre AWS risorse, come un'istanza AmazonEC2. VPC
Quando aggiungi la sottorete all'interno diVPC, AWS CloudFormation Designer associa automaticamente la sottorete a. VPC Questa associazione è un modello container, dove le risorse all'interno del container vengono automaticamente associate alla risorsa container.
-
Aggiungere un tipo di risorsa Instance (Istanza) all'interno della risorsa
PublicSubnet
e rinominarloWebServerInstance
.L'istanza è un ambiente di calcolo virtuale dove è possibile ospitare un sito Web di base. Analogamente al modo in cui ha funzionato con la sottoreteVPC, l'aggiunta dell'istanza nella sottorete associa automaticamente l'istanza alla sottorete.
-
Aggiungi un tipo di SecurityGrouprisorsa all'interno di e rinominaloVPC.
WebServerSecurityGroup
Il gruppo di sicurezza è un firewall virtuale che controlla il traffico in entrata e in uscita dell'istanza del server Web. È necessario anche per le istanze in a. 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.
-
Aggiungi un tipo di InternetGatewayrisorsa in un punto qualsiasi al di fuori di VPC e rinominalo.
InternetGateway
Il gateway Internet consente la comunicazione tra l'istanza che si trova all'interno di VPC e Internet. Senza il gateway Internet, nessuno può accedere al tuo sito Web.
Sebbene sia possibile trascinare il gateway Internet all'interno diVPC, ciò non crea un'associazione conVPC. Il gateway Internet non segue il modello del contenitore; è invece necessario trascinare una connessione dal gateway Internet alVPC, come descritto nel passaggio successivo.
-
Creare una connessione tra la risorsa
InternetGateway
e la risorsaVPC
.-
Nella risorsa
InternetGateway
, passare il mouse sul collegamento al gateway Internet (AWS::EC2::VPCGatewayAttachment
). -
Trascina una connessione aVPC.
Il bordo delle risorse di destinazione valide cambia colore. In questo caso, VPC è l'unica risorsa di destinazione valida. Questa connessione crea una risorsa di allegati che associa il gateway Internet a. VPC
-
-
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. Aggiungete un file RouteTableinterno VPC e rinominatelo.
PublicRouteTable
Ciò associa una nuova tabella di rotte a. VPC
-
Per aggiungere una regola di instradamento alla tabella di routing, aggiungere un tipo di risorsa Route all'interno della risorsa
PublicRouteTable
e rinominarloPublicRoute
.Utilizzeremo l'instradamento per specificare dove indirizzare il traffico.
-
Per l'instradamento pubblico, vogliamo che il gateway Internet sia la destinazione. Da utilizzare
GatewayId
per creare una connessione dallaPublicRoute
risorsa al gateway Internet, in modo analogo al modo in cui è stata creata una connessione tra il gateway Internet e ilVPC.CloudFormation non è possibile associare una route a un gateway Internet finché non si associa il gateway Internet aVPC. Ciò significa che dobbiamo creare una dipendenza esplicita dall'VPCallegato del gateway Internet, come descritto nel passaggio successivo. Per ulteriori informazioni, consulta Attributo DependsOn.
-
Creare una dipendenza esplicita tra la
PublicRoute
risorsa e l'allegato del gateway Internet. VPC-
Sulla
PublicRoute
risorsa, passa il mouse sopra il punto. DependsOn -
Trascinate una connessione al gateway Internet- VPC attachment (
AWS::EC2::VPCGatewayAttachment
).Con
DependsOn
le connessioni, AWS CloudFormation Designer crea una dipendenza (unDependsOn
attributo), in cui la risorsa di origine dipende dalla risorsa di destinazione. In questo caso, AWS CloudFormation Designer aggiunge unDependsOn
attributo allaPublicRoute
risorsa e specifica l'VPCallegato gateway come dipendenza.
-
-
Creare un'altra dipendenza dalla risorsa
WebServerInstance
alla risorsaPublicRoute
.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. -
Trascinare una connessione dalla risorsa
PublicRouteTable
alla risorsaPublicSubnet
per associare la tabella di instradamento e la sottorete.Ora la sottorete pubblica utilizzerà la tabella di routing pubblica per indirizzare il traffico.
-
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 questo passaggio, abbiamo aggiunto sette risorse al modello e ne abbiamo rinominato la logica IDs con nomi descrittivi. 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 la modifica di 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 dettagliata fornisce esempi JSON YAML che è possibile utilizzare per copiare e incollare nell'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 Parameters riferimento alla sintassi della sezione per i modelli CloudFormation .
-
Fate clic su un'area aperta nell'area di disegno di AWS CloudFormation Designer.
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.
-
Nel riquadro editor integrato, scegliere la scheda Parameters(Parametri) nella visualizzazione Components (Componenti).
-
Copiare i parametri nei seguenti frammenti e incollarli in editor integrato.
Il seguente JSON frammento aggiunge parametri per specificare il tipo di istanza del server Web, un nome di EC2 coppia di chiavi Amazon per SSH l'accesso al server Web e l'intervallo di indirizzi IP che può essere utilizzato per accedere al server Web utilizzando. 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." } } }
Ecco lo stesso frammento di codice 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 dettagliata, utilizzeremo una mappatura per specificare un AMI ID per un'EC2istanza in base al tipo di istanza e alla regione in cui crei lo stack. Per ulteriori informazioni, consulta Mappings riferimento alla sintassi della sezione per i modelli CloudFormation .
-
Nel riquadro editor integrato, scegliere la scheda Mappings (Mappature).
-
Copia le seguenti JSON mappature e incollale nell'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"} } } }
Ecco 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 describe stacks
API chiamata o tramite la scheda Outputs dello stack della CloudFormation console. Per questa procedura dettagliata, mostreremo il sito Web in URL modo che possiate visualizzarlo facilmente dopo averlo creato. Per ulteriori informazioni, consulta Outputs riferimento alla sintassi della sezione per i modelli CloudFormation .
-
Nel riquadro editor integrato, scegliere la scheda Outputs (Output).
-
Copia il seguente JSON output e incollalo nell'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" } } }
Ecco lo stesso risultato inYAML.
Outputs: URL: Value: !Join - '' - - 'http://' - !GetAtt - WebServerInstance - PublicIp Description: Newly created application URL
-
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 un esempio JSON YAML che puoi copiare e incollare nell'editor integrato.
Per specificare le proprietà delle risorse
-
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.
-
Nel riquadro editor integrato, scegliere la scheda Properties (Proprietà).
-
Copiate il seguente JSON frammento e incollatelo nell'editor integrato tra le parentesi quadre Properties ().
{}
Questo frammento specifica le DNS impostazioni e il blocco di. CIDR VPC
"EnableDnsSupport": "true", "EnableDnsHostnames": "true", "CidrBlock": "10.0.0.0/16"
PerYAML, digita una nuova riga dopo
Properties:
e incolla il seguente frammento.EnableDnsSupport: 'true' EnableDnsHostnames: 'true' CidrBlock: 10.0.0.0/16
Nota
Per una maggiore efficienza, forniamo YAML frammenti che puoi copiare JSON 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 Integrato ed editor JSON YAML.
-
Ripetere il processo per le risorse seguenti:
PublicSubnet
-
Aggiungi la seguente proprietà di CIDR blocco dopo la proprietà VPC ID. AWS CloudFormation Designer ha aggiunto automaticamente la proprietà VPC ID quando si trascina la sottorete all'interno di. 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
-
Aggiungete la seguente proprietà del CIDR blocco di destinazione, che indirizza tutto il traffico verso il 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 HTTP il SSH traffico specifico, che viene specificato come valore del parametro quando si crea 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
eImageId
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 valoreImageId
è 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 laSubnetId
proprietà per associare l'istanza alla sottorete, dobbiamo utilizzare laNetworkInterfaces
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' - |+
-
Aggiungere i metadati della configurazione del server Web alla risorsa
WebServerInstance
.-
Scegliere la risorsa
WebServerInstance
, quindi selezionare la scheda Metadata (Metadati) nel riquadro editor integrato. -
Se state creando il modello in JSON: Within the
Metadata
braces ({}
) e dopo la parentesi quadra diAWS::CloudFormation::Designer
chiusura, aggiungete una virgola ().,
-
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'
-
-
Sulla barra degli strumenti di AWS CloudFormation Designer, scegliete Convalida modello (icona della casella di controllo) 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.
-
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 CloudFormation Create Stack Wizard 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
-
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.
-
CloudFormation compila automaticamente il modelloURL; scegli Avanti.
-
Nella sezione Specificare i dettagli dello stack, inserisci un nome per lo stack nel campo Nome dello stack. Per questo esempio, utilizzare
BasicWebServerStack
. -
Nella sezione Parametri, per il KeyNamecampo, inserisci il nome di una coppia di EC2 chiavi Amazon valida nella stessa regione in cui stai creando lo stack.
-
Mantenere gli altri valori dei parametri predefiniti e scegliere Next (Avanti).
-
Per questa procedura guidata, non è necessario aggiungere tag o specificare impostazioni avanzate, quindi selezionare Next (Avanti).
-
Assicurati che il nome dello stack e il nome della EC2 coppia di chiavi Amazon siano corretti, quindi scegli Create.
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 Visualizza le informazioni sullo stack dalla console CloudFormation . Dopo aver creato lo stack, visualizza gli output dello stack e vai al sito Web di esempio per URL verificare che il sito Web sia in esecuzione. Per ulteriori informazioni, consulta Visualizza le informazioni sullo stack dalla console CloudFormation .
Ora che avete creato con successo un modello e lanciato uno stack utilizzando AWS CloudFormation Designer, potete utilizzare lo stack nella seguente procedura dettagliata:Usa AWS CloudFormation Designer per modificare il modello di uno stack, che modifica il modello per creare un server Web scalabile.