Usa AWS CloudFormation Designer per modificare il modello di uno stack - 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à.

Usa AWS CloudFormation Designer per modificare il modello di uno stack

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.

È possibile utilizzare AWS CloudFormation Designer per modificare il modello di uno stack e quindi inviarlo AWS CloudFormation a per aggiornare lo stack. In genere, quando si modifica uno stack, è necessario ottenere una copia del relativo modello, modificarlo in un editor di testo e quindi utilizzarlo CloudFormation per aggiornare lo stack. Con AWS CloudFormation Designer, puoi ottenere rapidamente una copia di qualsiasi modello dello stack in esecuzione, modificarlo e quindi aggiornare lo stack senza mai uscire dalla console.

In questa procedura guidata inizieremo con uno stack di server Web di base e lo modificheremo in modo che il server Web sia scalabile e durevole.

In questa procedura guidata completeremo le seguenti fasi:

  1. Ottenere un modello di stack.

    Otterremo una copia di un modello di stack in esecuzione; lo stesso stack di server Web di base della procedura guidata seguente: Usa AWS CloudFormation Designer per creare un server web di base.

  2. Modificare il modello.

    Useremo AWS CloudFormation Designer per modificare il modello dello stack in modo che il tuo sito web sia scalabile e durevole sostituendo l'EC2istanza con un gruppo Auto Scaling e un sistema di bilanciamento del carico Elastic Load Balancing.

  3. Aggiornare lo stack.

    Dopo aver salvato le modifiche, aggiorneremo lo stack di server Web di base con il modello modificato.

    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.

  4. Eliminare lo stack.

    Elimineremo lo stack per pulire tutte le risorse.

Prerequisiti

Questa procedura dettagliata presuppone che tu abbia una conoscenza pratica di Amazon Virtual Private Cloud (AmazonVPC), Auto Scaling, Elastic Load Balancing e. CloudFormation Per contesto, ogni procedura fornisce alcune informazioni di base su ogni risorsa.

Si presuppone anche che sia stata completata la seguente procedura guidata: Usa AWS CloudFormation Designer per creare un server web di base. In seguito a quella procedura guidata, si dovrebbe disporre di è uno stack in esecuzione denominato BasicWebServerStack.

Fase 1: ottenere un modello di stack

In questo passaggio, utilizzeremo AWS CloudFormation Designer per ottenere e aprire una copia del modello di uno stack in esecuzione.

Per ottenere una copia di un modello di stack in esecuzione
  1. Apri la CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation/.

  2. Nell'elenco degli stack selezionare BasicWebServerStack.

  3. Scegliere Actions (Operazioni), quindi View/Edit template in Designer (Visualizza/Modifica modello in Designer).

CloudFormation ottiene una copia del modello dello BasicWebServerStack stack e la visualizza in AWS CloudFormation Designer, dove è possibile visualizzare le risorse del modello e le relative relazioni. Nel passaggio successivo, utilizzeremo AWS CloudFormation Designer per modificare il modello.

Fase 2: modificare un modello

Modificheremo il modello di server Web di base utilizzando l' drag-and-dropinterfaccia e l'YAMLeditor integrati JSON di AWS CloudFormation Designer per sostituire la singola EC2 istanza Amazon con un gruppo Auto Scaling e un sistema di bilanciamento del carico per rendere il sito Web scalabile. Se il traffico verso il sito Web aumenta all'improvviso, è possibile utilizzare Auto Scaling per incrementare rapidamente il numero di server Web. Il load balancer distribuirà equamente il traffico tra le istanze.

Per modificare un modello di stack
  1. Rimuovere la risorsa WebServerInstance.

    1. Fare clic con il pulsante destro del mouse sulla risorsa WebServerInstance.

    2. Dal menu delle risorse, scegli Elimina (icona del cestino).

    3. Seleziona OK per confermare.

  2. Dal riquadro Tipi di risorse, aggiungi le seguenti risorse alla PublicSubnet risorsa: AutoScalingGroupLaunchConfiguration, e LoadBalancer. Prima di aggiungere le risorse, potrebbe essere necessario espandere la sottorete per includere tutte le risorse.

    Le risorse sono organizzate per categorie di risorse. Il gruppo Auto Scaling e la configurazione di avvio rientrano nella AutoScalingcategoria, mentre il sistema di bilanciamento del carico rientra nella categoria. ElasticLoadBalancing

    Nota

    Queste risorse non seguono il modello del contenitore, quindi AWS CloudFormation Designer non le associa automaticamente alla sottorete. Creeremo le connessioni più avanti in questa fase.

  3. Dal riquadro Tipi di risorse della EC2categoria, aggiungete la SecurityGrouprisorsa in qualsiasi punto della sottorete VPC tranne che nella sottorete.

    Questo gruppo di sicurezza controllerà il traffico in entrata e in uscita del load balancer.

  4. Rinominare le risorse per facilitarne l'identificazione:

    • Rinomina AutoScalingGroup in WebServerFleet

    • Rinomina LaunchConfiguration in WebServerLaunchConfig

    • Rinomina LoadBalancer in PublicElasticLoadBalancer

    • Rinomina SecurityGroup in PublicLoadBalancerSecurityGroup

  5. Creare associazioni per le risorse aggiunte.

    1. Associare il load balancer e le risorse del gruppo Auto Scaling con la sottorete pubblica:

      • Dalla risorsa PublicElasticLoadBalancer trascinare la connessione AWS::EC2::Subnet (Property: Subnets) alla risorsa PublicSubnet.

      • Dalla risorsa WebServerFleet trascinare la connessione AWS::EC2::Subnet (Property: VPCZoneIdentifier) alla risorsa PublicSubnet.

    2. Associare il load balancer con il rispettivo gruppo di sicurezza:

      • Dalla risorsa PublicElasticLoadBalancer trascinare la connessione AWS::EC2::SecurityGroup (Property: SecurityGroups) alla risorsa PublicLoadBalancerSecurityGroup.

    3. Associare il gruppo Auto Scaling con la configurazione del load balancer e di avvio:

      • Dalla risorsa WebServerFleet trascinare la connessione AWS::ElasticLoadBalancing::LoadBalancer (Property: LoadBalancerNames) alla risorsa PublicElasticLoadBalancer.

      • Dalla risorsa WebServerFleet trascinare la connessione AWS::ElasticLoadBalancing::LaunchConfiguration (Property: LaunchConfigurationName) alla risorsa WebServerLaunchConfig.

    4. Associare la configurazione di avvio al gruppo di sicurezza:

      • Dalla risorsa WebServerLaunchConfig trascinare la connessione AWS::EC2::SecurityGroup (Property: SecurityGroups) alla risorsa WebServerSecurityGroup.

    5. Definire una dipendenza per il gruppo Auto Scaling nell'instradamento pubblico:

      • Dalla risorsa WebServerFleet trascinare la connessione DependsOn alla risorsa PublicRoute.

      Questa dipendenza significa che CloudFormation non creerà la WebServerFleet risorsa fino al completamento del percorso pubblico. Altrimenti, se la route pubblica non è disponibile all'avvio delle istanze del server Web, non saranno in grado di inviare segnali (utilizzando lo script di supporto cfn-signal) per CloudFormation notificare il completamento delle configurazioni e delle implementazioni delle applicazioni.

  6. Specificare le proprietà per le risorse aggiunte.

    1. Nella tela di Designer, scegliete la risorsa. AWS CloudFormation PublicElasticLoadBalancer

    2. Nel riquadro dell'editor integrato scegliere la scheda Properties (Proprietà), quindi copiare il frammento seguente e incollarlo tra le parentesi graffe di Properties (Proprietà) ({}).

      AWS CloudFormation Designer ha aggiunto automaticamente il gruppo di sicurezza e l'associazione di sottorete, quindi è necessario aggiungere solo le HealthCheck proprietà Listeners and. La proprietà Listeners specifica la posizione e il tipo di traffico di cui restare in ascolto e la proprietà HealthCheck descrive le impostazioni per determinare lo stato del load balancer.

      JSON

      "Listeners": [ { "LoadBalancerPort": "80", "InstancePort": "80", "Protocol": "HTTP" } ], "HealthCheck": { "Target": "HTTP:80/", "HealthyThreshold": "3", "UnhealthyThreshold": "5", "Interval": "90", "Timeout": "60" }, "SecurityGroups": [ { "Ref": "PublicLoadBalancerSecurityGroup" } ], "Subnets": [ { "Ref": "PublicSubnet" } ]

      YAML

      Listeners: - LoadBalancerPort: '80' InstancePort: '80' Protocol: HTTP HealthCheck: Target: 'HTTP:80/' HealthyThreshold: '3' UnhealthyThreshold: '5' Interval: '90' Timeout: '60' SecurityGroups: - !Ref PublicLoadBalancerSecurityGroup Subnets: - !Ref PublicSubnet
    3. Ripetere il processo per le risorse seguenti:

      WebServerFleet

      Aggiungere le proprietà MaxSize, MinSize e DesiredCapacity. Queste proprietà specificano il numero massimo e il numero minimo di istanze che è possibile avviare nel gruppo Auto Scaling e il numero di istanze con cui iniziare. Il valore di capacità desiderato si riferisce a un nuovo parametro, che aggiungeremo più avanti in questa procedura.

      JSON

      "MinSize": "1", "MaxSize": "10", "DesiredCapacity": { "Ref": "WebServerCount" }, "VPCZoneIdentifier": [ { "Ref": "PublicSubnet" } ], "LaunchConfigurationName": { "Ref": "WebServerLaunchConfig" }, "LoadBalancerNames": [ { "Ref": "PublicElasticLoadBalancer" } ]

      YAML

      MinSize: '1' MaxSize: '10' DesiredCapacity: !Ref WebServerCount VPCZoneIdentifier: - !Ref PublicSubnet LaunchConfigurationName: !Ref WebServerLaunchConfig LoadBalancerNames: - !Ref PublicElasticLoadBalancer
      PublicLoadBalancerSecurityGroup

      Aggiungere le seguenti regole in entrata e in uscita che determinano il traffico che può raggiungere e lasciare il load balancer. Le regole consentono a tutto il HTTP traffico di raggiungere e uscire dal sistema di bilanciamento del carico.

      JSON

      "GroupDescription": "Public Elastic Load Balancing security group with HTTP access on port 80 from the Internet", "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": 80, "ToPort": 80, "CidrIp": "0.0.0.0/0" } ], "SecurityGroupEgress": [ { "IpProtocol": "tcp", "FromPort": 80, "ToPort": 80, "CidrIp": "0.0.0.0/0" } ], "VpcId": { "Ref": "VPC" }

      YAML

      GroupDescription: >- Public Elastic Load Balancing security group with HTTP access on port 80 from the Internet SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 SecurityGroupEgress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 VpcId: !Ref VPC
      WebServerSecurityGroup

      Modifica la regola HTTP in entrata per consentire solo il traffico proveniente dal sistema di bilanciamento del carico.

      JSON

      "GroupDescription": "Allow access from load balancer and SSH traffic", "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": 80, "ToPort": 80, "SourceSecurityGroupId": { "Ref": "PublicLoadBalancerSecurityGroup" } }, { "IpProtocol": "tcp", "FromPort": 22, "ToPort": 22, "CidrIp": { "Ref": "SSHLocation" } } ], "VpcId": { "Ref": "VPC" }

      YAML

      VpcId: !Ref VPC GroupDescription: Allow access from load balancer and SSH traffic SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 SourceSecurityGroupId: !Ref PublicLoadBalancerSecurityGroup - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: !Ref SSHLocation
      WebServerLaunchConfig

      La configurazione di avvio presenta una serie di proprietà diverse che è necessario specificare, pertanto ne evidenzieremo solo alcune. Le proprietà InstanceType e ImageId utilizzano i valori di parametri e mappature già specificati nella sezione precedente. Quando si crea uno stack, si specifica il tipo di istanza come valore di parametro. Il valore ImageId è una mappatura basata sulla Regione dello stack e sul tipo di istanza specificati.

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

      JSON

      "InstanceType": { "Ref": "InstanceType" }, "ImageId": { "Fn::FindInMap": [ "AWSRegionArch2AMI", { "Ref": "AWS::Region" }, { "Fn::FindInMap": [ "AWSInstanceType2Arch", { "Ref": "InstanceType" }, "Arch" ] } ] }, "KeyName": { "Ref": "KeyName" }, "AssociatePublicIpAddress": "true", "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 WebServerLaunchConfig ", " --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 WebServerFleet ", " --region ", { "Ref": "AWS::Region" }, "\n" ] ] } }, "SecurityGroups": [ { "Ref": "WebServerSecurityGroup" } ]

      YAML

      InstanceType: !Ref InstanceType ImageId: !FindInMap - AWSRegionArch2AMI - !Ref 'AWS::Region' - !FindInMap - AWSInstanceType2Arch - !Ref InstanceType - Arch KeyName: !Ref KeyName AssociatePublicIpAddress: 'true' 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 WebServerLaunchConfig ' - ' --configsets All ' - ' --region ' - !Ref 'AWS::Region' - |+ - | # Signal the status from cfn-init - '/opt/aws/bin/cfn-signal -e $? ' - ' --stack ' - !Ref 'AWS::StackName' - ' --resource WebServerFleet ' - ' --region ' - !Ref 'AWS::Region' - |+ SecurityGroups: - !Ref WebServerSecurityGroup
  7. Aggiungere i metadati di configurazione di avvio alla risorsa WebServerLaunchConfig, operazione che indica allo script helper cfn-init di avviare il server Web e creare una pagina Web di base.

    1. Scegliere la risorsa WebServerLaunchConfig, quindi selezionare la scheda Metadata (Metadati) nell'editor integrato.

    2. Se stai creando il modello in JSON: Within the Metadata braces ({}), dopo la parentesi quadra di AWS::CloudFormation::Designer chiusura, aggiungi una virgola (). ,

    3. Aggiungere il seguente frammento, operazione che indica allo script helper cfn-init di avviare il server Web e creare una pagina Web di base dopo la proprietà AWS::CloudFormation::Designer.

      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'
  8. Aggiungere il parametro WebServerCount. Questo parametro specifica quante istanze creare quando si CloudFormation crea il gruppo Auto Scaling.

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

    2. Nel riquadro dell'editor integrato scegliere la scheda Parameters (Parametri).

    3. Aggiungere il seguente parametro nell'editor integrato. Se stai creando il modello inJSON, aggiungi una virgola se necessario.

      JSON

      "WebServerCount": { "Description": "Number of Amazon EC2 instances to launch for the WebServer server", "Type": "Number", "Default": "1" }

      YAML

      WebServerCount: Description: Number of Amazon EC2 instances to launch for the WebServer server Type: Number Default: '1'
  9. Modifica l'output del modello per mostrare il DNS nome del load balancer.

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

    2. Modifica il JSON per utilizzare il DNS nome del load balancer, come mostrato nel frammento seguente.

      JSON

      { "Outputs": { "URL": { "Value": { "Fn::GetAtt": [ "PublicElasticLoadBalancer", "DNSName" ] }, "Description": "Newly created application URL" } } }

      Se stai creando il modello inYAML, usa il seguente frammento.

      Outputs: URL: Value: !GetAtt - PublicElasticLoadBalancer - DNSName Description: Newly created application URL
  10. Sulla barra degli strumenti di AWS CloudFormation Designer, scegli 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.

  11. Dalla barra degli strumenti di AWS CloudFormation Designer, salvate il modello localmente scegliendo il menu File (l'icona del file) e quindi Salva.

Ora hai un CloudFormation modello modificato che puoi usare per aggiornare lo stack di base del server web. Nella fase successiva utilizzeremo questo modello per aggiornare lo stack di server Web di base.

Fase 3: aggiornare lo stack

Per implementare le modifiche del modello, è necessario aggiornare lo stack di server Web di base. È possibile avviare CloudFormation Update Stack Wizard direttamente da Designer. AWS CloudFormation

Per aggiornare lo stack
  1. Nella barra degli strumenti di AWS CloudFormation Designer, scegliete Create Stack (icona a forma di nuvola con freccia rivolta verso l'alto).

    AWS CloudFormation Designer salva il modello aperto in un bucket S3 e quindi avvia l'Update Stack Wizard. CloudFormation Poiché abbiamo modificato il modello dello BasicWebServerStack stack, CloudFormation avvia l'Update Stack Wizard per quello stack.

  2. CloudFormation compila automaticamente il modello; scegli Avanti. URL

  3. Nella sezione Stack, nel campo Name (Nome), verificare che il nome dello stack sia BasicWebServerStack.

  4. Nella sezione Parameters (Parametri) utilizzare i valori esistenti e scegliere Next (Avanti).

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

  6. Assicurarsi che il nome dello stack sia corretto, quindi selezionare Update (Aggiorna).

L'aggiornamento dello stack può richiedere diversi minuti. CloudFormation È possibile controllare l'avanzamento negli eventi per lo stack. Per ulteriori informazioni, consulta Visualizza le informazioni sullo stack dalla console CloudFormation . Dopo l'aggiornamento dello stack, visualizza gli output dello stack e accedi al sito Web per URL verificare che il sito Web sia in esecuzione. Per ulteriori informazioni, consulta Visualizza le informazioni sullo stack dalla console CloudFormation . Hai aggiornato con successo un modello e uno stack utilizzando Designer. AWS CloudFormation

Per essere sicuri che non vengano addebitati servizi indesiderati, è possibile eliminare questo stack.

Fase 4: Eliminazione delle risorse

Per essere sicuri che non vengano addebitati servizi indesiderati, eliminare lo stack e le rispettive risorse.

Per eliminare lo stack
  1. Dalla CloudFormation console, scegli lo BasicWebServerStackstack.

  2. Scegliere Delete Stack (Elimina stack).

  3. Nel messaggio di conferma, scegliere Yes, Delete (Sì, elimina).

L'eliminazione dello stack può richiedere diversi minuti. CloudFormation È possibile controllare l'avanzamento negli eventi per lo stack. Una volta eliminato lo stack, vengono eliminate tutte le risorse create. Ora che hai capito come usare AWS CloudFormation Designer, puoi usarlo per creare e modificare i tuoi modelli.