Walkthrough: Gunakan AWS CloudFormation Desainer untuk memodifikasi templat tumpukan - AWS CloudFormation

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Walkthrough: Gunakan AWS CloudFormation Desainer untuk memodifikasi templat tumpukan

Application Composer dalam mode CloudFormation konsol adalah peningkatan dari AWS CloudFormation Designer. Kami menyarankan Anda menggunakan Application Composer alih-alih Designer bila memungkinkan. Untuk informasi selengkapnya, lihat Menggunakan Application Composer untuk membuat template visual.

Anda dapat menggunakan AWS CloudFormation Designer untuk memodifikasi template tumpukan, dan kemudian mengirimkannya AWS CloudFormation ke untuk memperbarui tumpukan. Biasanya, ketika Anda memodifikasi tumpukan, Anda perlu mendapatkan salinan templatnya, memodifikasi template dalam editor teks, dan kemudian menggunakannya CloudFormation untuk memperbarui tumpukan. Dengan AWS CloudFormation Designer, Anda dapat dengan cepat mendapatkan salinan template tumpukan yang sedang berjalan, memodifikasinya, dan kemudian memperbarui tumpukan tanpa pernah meninggalkan konsol.

Dalam panduan ini, kita akan mulai dengan tumpukan server web dasar, dan kemudian memodifikasinya sehingga web server dapat diskalakan dan mampu tahan lama.

Dalam panduan ini, kami akan menyelesaikan langkah berikut:

  1. Dapatkan template tumpukan.

    Kita akan mendapatkan salinan templat tumpukan yang sedang berjalan; tumpukan server web dasar yang sama dalam panduan berikut: Walkthrough: Gunakan AWS CloudFormation Desainer untuk membuat server web dasar.

  2. Ubah template.

    Kami akan menggunakan AWS CloudFormation Designer untuk memodifikasi template stack sehingga situs web Anda dapat diskalakan dan tahan lama dengan mengganti instans EC2 dengan grup Auto Scaling dan penyeimbang beban Elastic Load Balancing.

  3. Perbarui tumpukan.

    Setelah menyimpan modifikasi, kami akan memperbarui tumpukan server web dasar dengan templat yang dimodifikasi.

    catatan

    CloudFormation adalah layanan gratis; Namun, Anda dikenakan biaya untuk AWS sumber daya yang Anda sertakan dalam tumpukan Anda dengan tarif saat ini untuk masing-masing. Untuk informasi lebih lanjut tentang AWS harga, lihat halaman detail untuk setiap produk di http://aws.amazon.com.

  4. Hapus tumpukan.

    Kami akan menghapus tumpukan untuk membersihkan semua sumber daya.

Prasyarat

Panduan ini mengasumsikan bahwa Anda memiliki pengetahuan tentang Amazon Virtual Private Cloud (Amazon VPC), Auto Scaling, Elastic Load Balancing, dan. CloudFormation Untuk konteks, setiap prosedur memberikan beberapa informasi dasar tentang setiap sumber daya.

Selain itu, panduan tersebut mengasumsikan bahwa Anda menyelesaikan panduan berikut ini: Walkthrough: Gunakan AWS CloudFormation Desainer untuk membuat server web dasar. Dari panduan itu, Anda akan memiliki tumpukan berjalan bernama BasicWebServerStack.

Langkah 1: Dapatkan templats tumpukan

Pada langkah ini, kita akan menggunakan AWS CloudFormation Designer untuk mendapatkan dan membuka salinan template tumpukan yang sedang berjalan.

Untuk mendapatkan salinan dari templat tumpukan yang sedang berjalan
  1. Buka CloudFormation konsol di https://console.aws.amazon.com/cloudformation/.

  2. Dari daftar tumpukan, pilih BasicWebServerStack.

  3. Pilih Tindakan, dan kemudian Lihat/Edit templat di Desainer.

CloudFormation mendapatkan salinan template BasicWebServerStack tumpukan dan menampilkannya di AWS CloudFormation Designer, di mana Anda dapat melihat sumber daya template dan hubungannya. Pada langkah berikut, kita akan menggunakan AWS CloudFormation Designer untuk memodifikasi template.

Langkah 2: Memodifikasi templat

Kami akan memodifikasi template server web dasar dengan menggunakan drag-and-drop antarmuka AWS CloudFormation Designer dan editor JSON dan YAMAL terintegrasi untuk mengganti instans Amazon EC2 tunggal dengan grup Auto Scaling dan penyeimbang beban untuk membuat situs web dapat diskalakan. Jika lalu lintas ke situs web tiba-tiba meningkat, gunakan Auto Scaling untuk meningkatkan jumlah server web dengan cepat. Penyeimbang beban akan sama-sama mendistribusikan lalu lintas di antara instans.

Untuk mengubah templat tumpukan
  1. Hapus WebServerInstance sumber daya.

    1. Klik kanan WebServerInstance sumber daya.

    2. Dari menu sumber daya, pilih Hapus ( ).

    3. Pilih OKE untuk mengonfirmasi.

  2. Dari panel Jenis sumber daya, tambahkan sumber daya berikut ke sumber PublicSubnet daya: AutoScalingGroup, LaunchConfiguration, dan LoadBalancer. Sebelum menambahkan sumber daya, Anda mungkin perlu memperluas subnet untuk menyertakan semua sumber daya.

    Sumber daya yang diselenggarakan oleh kategori sumber daya. Grup Auto Scaling dan konfigurasi peluncuran ada dalam AutoScalingkategori, dan penyeimbang beban ada dalam kategori. ElasticLoadBalancing

    catatan

    Sumber daya ini tidak mengikuti model container, jadi AWS CloudFormation Designer tidak secara otomatis mengaitkannya dengan subnet. Kami akan membuat koneksi nanti pada langkah ini.

  3. Dari panel Jenis sumber daya dalam kategori EC2, tambahkan SecurityGroupsumber daya di mana saja di VPC kecuali di subnet.

    Grup keamanan ini akan mengontrol lalu lintas inbound dan outbound penyeimbang beban.

  4. Ubah nama sumber daya untuk membuatnya lebih mudah diidentifikasi:

    • Ubah nama menjadi AutoScalingGroupWebServerFleet

    • Ubah nama menjadi LaunchConfigurationWebServerLaunchConfig

    • Ubah nama menjadi LoadBalancerPublicElasticLoadBalancer

    • Ubah nama menjadi SecurityGroupPublicLoadBalancerSecurityGroup

  5. Buat asosiasi untuk sumber daya yang ditambahkan.

    1. Kaitkan load balancer dan sumber daya grup Auto Scaling dengan subnet publik:

      • Dari PublicElasticLoadBalancer sumber daya, seret AWS::EC2::Subnet (Property: Subnets) koneksi ke PublicSubnet sumber daya.

      • Dari WebServerFleet sumber daya, seret AWS::EC2::Subnet (Property: VPCZoneIdentifier) koneksi ke PublicSubnet sumber daya.

    2. Associate penyeimbang beban dengan grup keamanannya:

      • Dari PublicElasticLoadBalancer sumber daya, seret AWS::EC2::SecurityGroup (Property: SecurityGroups) koneksi ke PublicLoadBalancerSecurityGroup sumber daya.

    3. Kaitkan grup Auto Scaling dengan penyeimbang beban dan konfigurasi peluncuran:

      • Dari WebServerFleet sumber daya, seret AWS::ElasticLoadBalancing::LoadBalancer (Property: LoadBalancerNames) koneksi ke PublicElasticLoadBalancer sumber daya.

      • Dari WebServerFleet sumber daya, seret AWS::ElasticLoadBalancing::LaunchConfiguration (Property: LaunchConfigurationName) koneksi ke WebServerLaunchConfig sumber daya.

    4. Associate konfigurasi peluncuran dengan grup keamanan:

      • Dari WebServerLaunchConfig sumber daya, seret AWS::EC2::SecurityGroup (Property: SecurityGroups) koneksi ke WebServerSecurityGroup sumber daya.

    5. Tentukan dependensi untuk grup Auto Scaling ke rute publik:

      • Dari WebServerFleet sumber daya, seret DependsOn koneksi ke PublicRoute sumber daya.

      Ketergantungan ini berarti bahwa CloudFormation tidak akan membuat WebServerFleet sumber daya sampai rute publik selesai. Jika tidak, jika rute publik tidak tersedia saat instance server web dimulai, mereka tidak akan dapat mengirim sinyal (menggunakan skrip pembantu sinyal cfn) untuk memberi tahu CloudFormation kapan konfigurasi dan penerapan aplikasi mereka selesai.

  6. Tentukan properti untuk sumber daya yang ditambahkan.

    1. Pada kanvas AWS CloudFormation Desainer, pilih PublicElasticLoadBalancer sumber daya.

    2. Di panel editor terintegrasi, pilih tab Properties, lalu salin cuplikan berikut dan tempel di antara kawat gigi Properties (). {}

      AWS CloudFormation Desainer secara otomatis menambahkan grup keamanan dan asosiasi subnet, jadi Anda hanya perlu menambahkan HealthCheck properti Listeners dan. Properti Listeners menentukan di mana dan apa jenis lalu lintas untuk didengarkan, dan HealthCheck properti menjelaskan pengaturan untuk menentukan status kondisi penyeimbang beban.

      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. Ulangi proses ini untuk sumber daya berikut:

      WebServerFleet

      Tambahkan MaxSize, MinSize, dan DesiredCapacity properti. Properti ini menentukan jumlah instans maksimum dan minimum yang dapat Anda luncurkan di grup Auto Scaling dan jumlah awal instans untuk memulai. Nilai kapasitas yang diinginkan mengacu pada parameter baru, yang akan kita tambahkan nanti dalam prosedur ini.

      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

      Tambahkan aturan inbound dan outbound berikut yang menentukan lalu lintas yang dapat mencapai dan meninggalkan penyeimbang beban. Aturan memungkinkan semua lalu lintas HTTP mencapai dan meninggalkan penyeimbang beban.

      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

      Ubah aturan inbound HTTP AGAR hanya lalu lintas dari penyeimbang beban yang diizinkan.

      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

      Konfigurasi peluncuran memiliki sejumlah properti berbeda yang perlu Anda tentukan, jadi kami akan menyoroti beberapa di antaranya. Properti InstanceType dan ImageId menggunakan parameter dan nilai pemetaan yang sudah ditentukan dalam templat. Anda menentukan tipe instans sebagai nilai parameter ketika Anda membuat tumpukan. ImageIdNilainya adalah pemetaan yang didasarkan pada wilayah tumpukan Anda dan jenis instance yang Anda tentukan.

      Di UserData properti, kita menentukan skrip konfigurasi yang berjalan setelah instans aktif dan berjalan. Informasi konfigurasi didefinisikan dalam metadata contoh ini. Ia akan kita tambahkan pada langkah berikutnya.

      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. Tambahkan metadata konfigurasi peluncuran ke WebServerLaunchConfig sumber daya, yang menginstruksikan skrip pembantu cfn-init untuk memulai server web dan membuat halaman web dasar.

    1. Pilih WebServerLaunchConfig sumber daya, lalu pilih tab Metadata di editor terintegrasi.

    2. Jika Anda membuat templat di JSON: Di dalam Metadata kurung kurawal ({}), setelah AWS::CloudFormation::Designer kurung kurawal penutup, tambahkan koma (,).

    3. Tambahkan potongan berikut, yang menginstruksikan skrip pembantu cfn-init untuk memulai server web dan membuat halaman web dasar, setelah AWS::CloudFormation::Designer properti.

      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. Tambahkan WebServerCount parameter. Parameter ini menentukan berapa banyak instance yang akan dibuat saat CloudFormation membuat grup Auto Scaling.

    1. Pilih pada area terbuka pada kanvas AWS CloudFormation Designer.

    2. Di panel editor terintegrasi, pilih tab Parameter.

    3. Tambahkan parameter berikut di editor terintegrasi. Jika Anda membuat templat di JSON, tambahkan koma sesuai kebutuhan.

      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. Memodifikasi output templat untuk menampilkan nama DNS penyeimbang beban.

    1. Di panel editor terintegrasi, pilih tab Output.

    2. Modifikasi JSON untuk menggunakan nama DNS penyeimbang beban, seperti yang ditunjukkan dalam potongan berikut.

      JSON

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

      Jika Anda membuat templat di YAML, gunakan cuplikan berikut.

      Outputs: URL: Value: !GetAtt - PublicElasticLoadBalancer - DNSName Description: Newly created application URL
  10. Pada toolbar AWS CloudFormation Designer, pilih Validate template ( ) untuk memeriksa kesalahan sintaks dalam template Anda.

    Tampilkan dan perbaiki kesalahan dalam panel Pesan, dan kemudian validasi templat lagi. Jika Anda tidak melihat kesalahan, templat Anda valid secara sintaksis.

  11. Dari toolbar AWS CloudFormation Designer, simpan template secara lokal dengan memilih File ( ) dan kemudian Save.

Anda sekarang memiliki CloudFormation template yang dimodifikasi yang dapat Anda gunakan untuk memperbarui tumpukan server web dasar. Pada langkah berikutnya, kita akan menggunakan templat ini untuk memperbarui tumpukan server web dasar.

Langkah 3: Perbarui tumpukan

Untuk menerapkan perubahan templat Anda, kita perlu memperbarui tumpukan server web dasar. Anda dapat meluncurkan CloudFormation Update Stack Wizard langsung dari AWS CloudFormation Designer.

Untuk memperbarui tumpukan
  1. Pada toolbar AWS CloudFormation Designer, pilih Create Stack ( ).

    AWS CloudFormation Desainer menyimpan template yang dibuka dalam bucket S3 dan kemudian meluncurkan CloudFormation Update Stack Wizard. Karena kami memodifikasi template BasicWebServerStack stack, CloudFormation meluncurkan Update Stack Wizard untuk tumpukan itu.

  2. CloudFormation secara otomatis mengisi URL template; pilih Berikutnya.

  3. Di bagian Tumpukan, di bagian Nama, verifikasi bahwa nama tumpukan adalah BasicWebServerStack.

  4. Di bagian Parameter, gunakan nilai yang ada; pilih Selanjutnya.

  5. Untuk panduan ini, Anda tidak perlu menambahkan tanda atau menentukan pengaturan lanjutan, jadi pilih Selanjutnya.

  6. Pastikan bahwa nama tumpukan benar, dan kemudian pilih Perbarui.

Diperlukan beberapa menit CloudFormation untuk memperbarui tumpukan Anda. Untuk memantau kemajuan, tampilkan peristiwa tumpukan. Untuk informasi selengkapnya, lihat Melihat data AWS CloudFormation tumpukan dan sumber daya di AWS Management Console. Setelah tumpukan diperbarui, lihat output tumpukan dan masuk ke URL situs web untuk memverifikasi bahwa situs web berjalan. Untuk informasi selengkapnya, lihat Melihat data AWS CloudFormation tumpukan dan sumber daya di AWS Management Console. Anda berhasil memperbarui template dan tumpukan menggunakan AWS CloudFormation Designer.

Untuk memastikan bahwa Anda tidak dikenakan biaya untuk layanan yang tidak diinginkan, Anda dapat menghapus tumpukan ini.

Langkah 4: Bersihkan sumber daya

Untuk memastikan bahwa Anda tidak dikenakan biaya untuk layanan yang tidak diinginkan, hapus tumpukan dan sumber daya tersebut.

Untuk menghapus tumpukan
  1. Dari CloudFormation konsol, pilih BasicWebServerStacktumpukan.

  2. Pilih Hapus Tumpukan.

  3. Pada pesan konfirmasi, pilih Ya, Hapus.

Diperlukan beberapa menit CloudFormation untuk menghapus tumpukan Anda. Untuk memantau kemajuan, tampilkan peristiwa tumpukan. Setelah tumpukan dihapus, semua sumber daya yang Anda buat akan dihapus. Sekarang setelah Anda memahami cara menggunakan AWS CloudFormation Designer, Anda dapat menggunakannya untuk membangun dan memodifikasi template Anda sendiri.