Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Gunakan AWS CloudFormation Designer untuk memodifikasi template stack
catatan
Infrastructure Composer dalam mode CloudFormation konsol adalah peningkatan dari AWS CloudFormation Designer. Kami menyarankan Anda menggunakan Infrastructure Composer alih-alih Designer bila memungkinkan. Untuk informasi selengkapnya, lihat Buat template secara visual dengan Infrastructure Composer.
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:
-
Kita akan mendapatkan salinan templat tumpukan yang sedang berjalan; tumpukan server web dasar yang sama dalam panduan berikut: Gunakan AWS CloudFormation Designer untuk membuat server web dasar.
-
Kami akan menggunakan AWS CloudFormation Designer untuk memodifikasi template stack sehingga situs web Anda dapat diskalakan dan tahan lama dengan mengganti EC2 instance dengan grup Auto Scaling dan penyeimbang beban Elastic Load Balancing.
-
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
. -
Kami akan menghapus tumpukan untuk membersihkan semua sumber daya.
Prasyarat
Panduan ini mengasumsikan bahwa Anda memiliki pengetahuan tentang Amazon Virtual Private Cloud (AmazonVPC), 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: Gunakan AWS CloudFormation Designer 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
-
Buka CloudFormation konsol di https://console.aws.amazon.com/cloudformation/
. -
Dari daftar tumpukan, pilih
BasicWebServerStack
. -
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 terintegrasi JSON dan YAML editor untuk mengganti EC2 instance Amazon 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
-
Hapus
WebServerInstance
sumber daya.-
Klik kanan
WebServerInstance
sumber daya. -
Dari menu sumber daya, pilih Hapus (ikon tempat sampah).
-
Pilih OKE untuk mengonfirmasi.
-
-
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.
-
Dari panel Jenis sumber daya dalam EC2kategori, tambahkan SecurityGroupsumber daya di mana saja di VPC kecuali di subnet.
Grup keamanan ini akan mengontrol lalu lintas inbound dan outbound penyeimbang beban.
-
Ubah nama sumber daya untuk membuatnya lebih mudah diidentifikasi:
-
Ubah nama menjadi AutoScalingGroup
WebServerFleet
-
Ubah nama menjadi LaunchConfiguration
WebServerLaunchConfig
-
Ubah nama menjadi LoadBalancer
PublicElasticLoadBalancer
-
Ubah nama menjadi SecurityGroup
PublicLoadBalancerSecurityGroup
-
-
Buat asosiasi untuk sumber daya yang ditambahkan.
-
Kaitkan load balancer dan sumber daya grup Auto Scaling dengan subnet publik:
-
Dari
PublicElasticLoadBalancer
sumber daya, seretAWS::EC2::Subnet (Property: Subnets)
koneksi kePublicSubnet
sumber daya. -
Dari
WebServerFleet
sumber daya, seretAWS::EC2::Subnet (Property: VPCZoneIdentifier)
koneksi kePublicSubnet
sumber daya.
-
-
Associate penyeimbang beban dengan grup keamanannya:
-
Dari
PublicElasticLoadBalancer
sumber daya, seretAWS::EC2::SecurityGroup (Property: SecurityGroups)
koneksi kePublicLoadBalancerSecurityGroup
sumber daya.
-
-
Kaitkan grup Auto Scaling dengan penyeimbang beban dan konfigurasi peluncuran:
-
Dari
WebServerFleet
sumber daya, seretAWS::ElasticLoadBalancing::LoadBalancer (Property: LoadBalancerNames)
koneksi kePublicElasticLoadBalancer
sumber daya. -
Dari
WebServerFleet
sumber daya, seretAWS::ElasticLoadBalancing::LaunchConfiguration (Property: LaunchConfigurationName)
koneksi keWebServerLaunchConfig
sumber daya.
-
-
Associate konfigurasi peluncuran dengan grup keamanan:
-
Dari
WebServerLaunchConfig
sumber daya, seretAWS::EC2::SecurityGroup (Property: SecurityGroups)
koneksi keWebServerSecurityGroup
sumber daya.
-
-
Tentukan dependensi untuk grup Auto Scaling ke rute publik:
-
Dari
WebServerFleet
sumber daya, seretDependsOn
koneksi kePublicRoute
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. -
-
-
Tentukan properti untuk sumber daya yang ditambahkan.
-
Pada kanvas AWS CloudFormation Desainer, pilih
PublicElasticLoadBalancer
sumber daya. -
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
propertiListeners
dan. PropertiListeners
menentukan di mana dan apa jenis lalu lintas untuk didengarkan, danHealthCheck
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
-
Ulangi proses ini untuk sumber daya berikut:
WebServerFleet
-
Tambahkan
MaxSize
,MinSize
, danDesiredCapacity
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 HTTP lalu lintas untuk 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 HTTP masuk untuk mengizinkan hanya lalu lintas dari penyeimbang beban.
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
danImageId
menggunakan parameter dan nilai pemetaan yang sudah ditentukan dalam templat. Anda menentukan tipe instans sebagai nilai parameter ketika Anda membuat tumpukan.ImageId
Nilainya 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
-
-
Tambahkan metadata konfigurasi peluncuran ke
WebServerLaunchConfig
sumber daya, yang menginstruksikan skrip pembantu cfn-init untuk memulai server web dan membuat halaman web dasar.-
Pilih
WebServerLaunchConfig
sumber daya, lalu pilih tab Metadata di editor terintegrasi. -
Jika Anda menulis template Anda diJSON: Di dalam
Metadata
kurung kurung gigi ({}
), setelah kurung kurung kurungAWS::CloudFormation::Designer
penutup, tambahkan koma ().,
-
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'
-
-
Tambahkan
WebServerCount
parameter. Parameter ini menentukan berapa banyak instance yang akan dibuat saat CloudFormation membuat grup Auto Scaling.-
Pilih pada area terbuka pada kanvas AWS CloudFormation Designer.
-
Di panel editor terintegrasi, pilih tab Parameter.
-
Tambahkan parameter berikut di editor terintegrasi. Jika Anda membuat template diJSON, 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'
-
-
Ubah output template untuk menunjukkan DNS nama penyeimbang beban.
-
Di panel editor terintegrasi, pilih tab Output.
-
Ubah JSON untuk menggunakan DNS nama penyeimbang beban, seperti yang ditunjukkan pada cuplikan berikut.
JSON
{ "Outputs": { "URL": { "Value": { "Fn::GetAtt": [ "PublicElasticLoadBalancer", "DNSName" ] }, "Description": "Newly created application URL" } } }
Jika Anda menulis template AndaYAML, gunakan cuplikan berikut.
Outputs: URL: Value: !GetAtt - PublicElasticLoadBalancer - DNSName Description: Newly created application URL
-
-
Pada toolbar AWS CloudFormation Designer, pilih Validasi template (ikon kotak centang) 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.
-
Dari toolbar AWS CloudFormation Designer, simpan template secara lokal dengan memilih menu File (ikon file) dan kemudian Simpan.
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
-
Pada toolbar AWS CloudFormation Designer, pilih Create Stack (ikon cloud dengan panah atas).
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. -
CloudFormation secara otomatis mengisi templateURL; pilih Berikutnya.
-
Di bagian Tumpukan, di bagian Nama, verifikasi bahwa nama tumpukan adalah
BasicWebServerStack
. -
Di bagian Parameter, gunakan nilai yang ada; pilih Selanjutnya.
-
Untuk panduan ini, Anda tidak perlu menambahkan tanda atau menentukan pengaturan lanjutan, jadi pilih Selanjutnya.
-
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 Lihat informasi tumpukan dari CloudFormation konsol. Setelah tumpukan diperbarui, lihat output tumpukan dan buka situs web URL untuk memverifikasi bahwa situs web sedang berjalan. Untuk informasi selengkapnya, lihat Lihat informasi tumpukan dari CloudFormation konsol. 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
-
Dari CloudFormation konsol, pilih BasicWebServerStacktumpukan.
-
Pilih Hapus Tumpukan.
-
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.