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 membuat server web dasar
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.
AWS CloudFormation Desainer secara grafis mewakili template Anda untuk membantu Anda melihat sumber daya dalam template dan bagaimana mereka terhubung. Integrasi JSON dan YAML editor memudahkan untuk memodifikasi template langsung di AWS CloudFormation konsol. Untuk mendemonstrasikan cara menggunakan kedua komponen ini, kita akan menggunakan AWS CloudFormation Designer untuk membangun server web dasar di fileVPC. Kemudian, kita akan menyimpan template dan menggunakannya untuk membuat CloudFormation tumpukan.
Dalam panduan ini, Anda akan menyelesaikan langkah berikut:
-
Tambahkan dan hubungkan sumber daya.
Ketika Anda pertama kali membuka AWS CloudFormation Designer, Anda mulai dengan template kosong. Kami akan menggunakan AWS CloudFormation Designer untuk mulai mengisi template dengan menyeret sumber daya, seperti VPC dan EC2 instance ke dalam template Anda. Kita juga akan membuat tautan di antaranya. Sebagai contoh, kita akan menggunakan AWS CloudFormation Designer untuk membuat koneksi antara gateway Internet danVPC.
-
Tambahkan parameter template, pemetaan, dan output.
Kita akan menggunakan editor terintegrasi AWS CloudFormation Designer untuk menambahkan komponen template lain untuk membuat template lebih berguna. Sebagai contoh, kita akan menambahkan parameter ke templat sehingga Anda dapat menentukan nilai input ketika membuat tumpukan. Dengan begitu, Anda tidak perlu terus-menerus mengedit templat untuk nilai properti yang mungkin sering Anda ubah.
-
Tentukan properti sumber daya.
Kami akan menggunakan editor terintegrasi lagi untuk menentukan pengaturan konfigurasi untuk sumber daya kami.
-
Tidak ada sumber daya templat Anda yang aktif dan berjalan hingga Anda membuat tumpukan. Kami akan menggunakan template yang baru saja Anda buat untuk meluncurkan CloudFormation tumpukan, yang akan menyediakan semua sumber daya yang ditentukan dalam template Anda.
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
.
Prasyarat
Panduan ini mengasumsikan bahwa Anda memiliki pengetahuan tentang Amazon Virtual Private Cloud (Amazon)VPC, Amazon Elastic Compute Cloud (AmazonEC2), dan. CloudFormation Untuk konteks, setiap prosedur memberikan beberapa informasi dasar tentang setiap sumber daya.
Juga, sebelum Anda mulai, pastikan Anda memiliki EC2 key pair Amazon di wilayah tempat Anda membuat tumpukan Anda. Untuk informasi selengkapnya, lihat pasangan EC2 kunci Amazon di Panduan EC2 Pengguna Amazon.
Langkah 1: Menambahkan dan menghubungkan sumber daya
Kita akan menggunakan drag-and-drop antarmuka AWS CloudFormation Designer untuk menambahkan EC2 instance Amazon dan sumber daya jaringan, seperti subnet, tabel rute, dan gateway Internet. VPC Setelah menambahkan semua sumber daya, kita akan membuat koneksi di antaranya. Misalnya, kita akan mengaitkan gateway Internet dengan aVPC.
Untuk menambahkan sumber daya ke templat
-
Buka AWS CloudFormation Desainer dan https://console.aws.amazon.com/cloudformation/desainer
. -
Di editor terintegrasi di bagian bawah halaman, pilih Edit (ikon pensil).
-
Ganti nama templat menjadi
BasicWebServerInVPC
kemudian tekan Enter.Saat ini, kita memiliki templat kosong yang tidak valid. Di langkah selanjutnya, kami akan menambahkan sumber daya untuk membuatnya valid.
-
Di panel Jenis sumber daya, dari dalam EC2kategori, seret jenis VPCsumber daya ke panel Canvas.
Sumber daya yang diatur berdasarkan kategori sumber daya. Semua sumber daya yang kami tambahkan ada dalam EC2kategori.
AWS CloudFormation Desainer segera memodifikasi template Anda untuk menyertakan VPC sumber daya, dengan hasilnya terlihat mirip dengan JSON cuplikan berikut.
"Resources": { "VPC431KO": { "Type": "AWS::EC2::VPC", "Properties": {}, "Metadata": { "AWS::CloudFormation::Designer": { "id": "445730ea-0d11-45ba-b6ac-12345EXAMPLE" } } } }
YAMLCuplikan terlihat mirip dengan yang berikut ini.
Resources: VPC431KO: Type: 'AWS::EC2::VPC' Properties: {} Metadata: 'AWS::CloudFormation::Designer': id: 9430b008-7a03-41ed-b63e-12345EXAMPLE
Perhatikan bahwa kita masih perlu menentukan VPC properti, seperti CIDR blok VPC's. Kita akan melakukannya nanti. Hal ini berlaku untuk semua sumber daya yang akan kita tambahkan.
-
Ganti nama. VPC
catatan
Saat mengganti nama sumber daya, Anda mengganti nama ID logisnya, yang merupakan nama yang direferensikan dalam templat (bukan nama yang ditetapkan saat CloudFormation membuat sumber daya). Untuk informasi selengkapnya, lihat CloudFormation Template Resources sintaksis.
-
Pilih sumber VPC daya.
-
Di editor terintegrasi, pilih ikon Edit (ikon pensil).
-
Ganti nama menjadi
VPC
, lalu pilih Enter.
Selanjutnya, kita akan menambahkan sumber daya ke fileVPC.
-
-
Seret sudut VPC sumber daya untuk mengembangkannya sehingga cukup besar untuk memuat beberapa sumber daya lainnya.
Kita perlu menambahkan subnet karena Anda tidak dapat menambahkan EC2 instance, yang meng-host situs web, langsung keVPC; instance harus terletak di subnet.
-
Tambahkan jenis sumber daya Subnet di dalam VPC dan ganti namanya.
PublicSubnet
Kami akan menggunakan subnet untuk mengalokasikan berbagai alamat IP VPC yang dapat Anda kaitkan dengan AWS sumber daya lain, seperti instance AmazonEC2.
Ketika Anda menambahkan subnet di dalamVPC, AWS CloudFormation Designer secara otomatis mengaitkan subnet dengan. VPC Asosiasi ini adalah model kontainer, di mana sumber daya di dalam kontainer secara otomatis terkait dengan sumber daya kontainer.
-
Tambahkan jenis sumber daya Instans di dalam sumber daya
PublicSubnet
dan ganti namaWebServerInstance
.Instans adalah lingkungan komputasi virtual tempat Anda akan menghosting situs web dasar. Mirip dengan cara ini bekerja dengan subnet danVPC, menambahkan instance di subnet secara otomatis mengaitkan instance dengan subnet.
-
Tambahkan jenis SecurityGroupsumber daya di dalam VPC dan ganti namanya.
WebServerSecurityGroup
Grup keamanan adalah firewall virtual yang mengendalikan lalu lintas masuk dan keluar dari instans server web. Ini juga diperlukan untuk contoh di aVPC. Kita perlu mengaitkan instans server web dengan grup keamanan ini, yang akan kita lakukan nanti saat menentukan properti instans.
-
Tambahkan jenis InternetGatewaysumber daya di mana saja di luar VPC dan ganti namanya.
InternetGateway
Gateway Internet memungkinkan komunikasi antara instance yang ada di dalam VPC dan Internet. Tanpa gateway Internet, tidak ada yang dapat mengakses situs web Anda.
Meskipun, Anda dapat menyeret gateway Internet di dalamVPC, ini tidak membuat asosiasi denganVPC. Gateway Internet tidak mengikuti model kontainer; sebagai gantinya, Anda harus menyeret koneksi dari gateway Internet keVPC, seperti yang dijelaskan pada langkah berikutnya.
-
Buat koneksi antara sumber daya
InternetGateway
dan sumber dayaVPC
.-
Di sumber daya
InternetGateway
, arahkan kursor ke lampiran gateway Internet (AWS::EC2::VPCGatewayAttachment
). -
Seret koneksi ke fileVPC.
Batas sumber daya target yang valid berubah warna. Dalam hal ini, VPC satu-satunya sumber daya target yang valid. Koneksi ini menciptakan sumber daya lampiran yang mengaitkan gateway Internet dengan file. VPC
-
-
Selanjutnya, kita perlu menambahkan tabel rute dan rute untuk menentukan cara mengarahkan lalu lintas jaringan dari dalam subnet. Tambahkan di RouteTabledalam VPC dan ganti namanya.
PublicRouteTable
Ini mengaitkan tabel rute baru dengan. VPC
-
Untuk menambahkan aturan perutean ke tabel rute, tambahkan jenis sumber daya Rute di dalam sumber daya
PublicRouteTable
dan ganti namaPublicRoute
.Kita akan menggunakan rute untuk menentukan ke mana mengarahkan lalu lintas.
-
Untuk rute publik, kami ingin gateway Internet menjadi target tujuan. Gunakan
GatewayId
untuk membuat koneksi dariPublicRoute
sumber daya ke gateway Internet, mirip dengan cara Anda membuat koneksi antara gateway Internet danVPC.CloudFormation tidak dapat mengaitkan rute dengan gateway Internet sampai Anda mengaitkan gateway Internet denganVPC. Ini berarti kita perlu membuat ketergantungan eksplisit pada VPC lampiran gateway Internet, seperti yang dijelaskan pada langkah berikutnya. Untuk informasi selengkapnya, lihat DependsOnatribut.
-
Buat ketergantungan eksplisit antara
PublicRoute
sumber daya dan lampiran gateway Internet. VPC-
Pada
PublicRoute
sumber daya, arahkan kursor ke DependsOntitik. -
Seret koneksi ke gateway Internet- VPC attachment (
AWS::EC2::VPCGatewayAttachment
).Dengan
DependsOn
koneksi, AWS CloudFormation Designer membuat dependensi (DependsOn
atribut), di mana sumber daya asal bergantung pada sumber daya target. Dalam hal ini, AWS CloudFormation Designer menambahkanDependsOn
atribut kePublicRoute
sumber daya dan menentukan gateway- VPC attachment sebagai dependensi.
-
-
Buat dependensi lain dari sumber daya
WebServerInstance
ke sumber dayaPublicRoute
.Sumber daya
WebServerInstance
tergantung pada rute publik untuk rute lalu lintas ke Internet. Tanpa rute publik, instance tidak dapat mengirim sinyal (menggunakan skrip pembantu sinyal cfn) untuk memberi tahu CloudFormation kapan konfigurasi instance dan penerapan aplikasi selesai. -
Seret koneksi dari sumber daya
PublicRouteTable
ke sumber dayaPublicSubnet
untuk mengaitkan tabel rute dan subnet.Sekarang subnet publik akan menggunakan tabel rute publik untuk mengarahkan lalu lintas.
-
Dari toolbar AWS CloudFormation Designer, simpan template secara lokal dengan menggunakan menu File (ikon file).
AWS CloudFormation Desainer menyimpan template Anda pada hard drive Anda. Anda dapat menggunakan templat nanti untuk membuat tumpukan. Kami menyarankan Anda untuk menyimpan templat secara rutin untuk menghindari kehilangan perubahan.
Pada langkah ini, kami menambahkan tujuh sumber daya ke template Anda dan mengganti nama logisnya IDs dengan nama yang ramah. Kita juga membangun koneksi visual dengan sebagian besar sumber daya untuk membuat asosiasi dan dependensi. Namun, sebelum kita dapat membuat tumpukan dengan templat ini, kita perlu membuat beberapa koneksi lagi (seperti mengaitkan instans dengan grup keamanan) dan untuk menentukan properti untuk setiap sumber daya. Pada langkah berikutnya, kita akan berjalan melalui memodifikasi komponen lain dari template Anda, seperti parameter input, dengan menggunakan editor terintegrasi AWS CloudFormation Designer.
Langkah 2: Menambahkan parameter, pemetaan, dan output
Sebelum kita menentukan properti sumber daya, kita perlu menambahkan komponen templat lain untuk membuat penggunaan kembali templat di beberapa lingkungan lebih mudah. Pada langkah ini, kita akan menggunakan editor terintegrasi AWS CloudFormation Designer untuk menambahkan parameter, pemetaan, dan output. Kemudian, kita dapat mereferensikan ke parameter dan pemetaan ini ketika kita menentukan properti sumber daya. Panduan ini menyediakan sampel JSON dan YAML yang dapat Anda gunakan untuk menyalin dan menempel ke editor terintegrasi.
Untuk menambahkan parameter
Parameter adalah nilai input yang Anda tentukan saat Anda membuat tumpukan. Parameter berguna untuk meneruskan nilai sehingga Anda tidak memiliki nilai hard-coded di templat. Sebagai contoh, Anda tidak perlu menerapkan hard-coded pada jenis instans server web dalam templat; alih-alih, Anda dapat menggunakan parameter untuk menentukan tipe instans ketika Anda membuat tumpukan. Dengan begitu, Anda dapat menggunakan templat yang sama untuk membuat beberapa server web dengan jenis intans yang berbeda. Untuk informasi selengkapnya, lihat CloudFormation template Parameters sintaksis.
-
Klik pada area terbuka di kanvas AWS CloudFormation Designer.
Bergantung pada apa yang telah Anda pilih, editor terintegrasi menampilkan komponen tingkat templat atau tingkat sumber daya yang dapat Anda edit. Di tingkat templat, Anda dapat mengedit semua bagian lain dari templat, seperti parameter templat, pemetaan, dan output, kecuali untuk bagian Sumber Daya. Di tingkat sumber daya, Anda dapat mengedit properti dan atribut sumber daya.
Mengeklik area terbuka di kanvas memungkinkan Anda mengedit komponen tingkat templat. Untuk mengedit komponen tingkat sumber daya, pilih sumber daya.
-
Di panel editor terintegrasi, pilih tab Parameter di tampilan Komponen.
-
Salin parameter dalam cuplikan berikut dan tempel ke editor terintegrasi.
JSONCuplikan berikut menambahkan parameter untuk menentukan jenis instans server web Anda, nama EC2 pasangan kunci Amazon untuk SSH akses ke server web, dan rentang alamat IP yang dapat digunakan untuk mengakses server web menggunakan. 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." } } }
Berikut adalah cuplikan yang sama di. 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.
Untuk menambahkan pemetaan
Pemetaan adalah satu set kunci yang terkait dengan satu set pasangan nama-nilai. Pemetaan berguna untuk menentukan nilai berdasarkan nilai parameter input. Untuk panduan ini, kita akan menggunakan pemetaan untuk menentukan AMI ID untuk EC2 instance berdasarkan jenis instance dan wilayah tempat Anda membuat tumpukan. Untuk informasi selengkapnya, lihat CloudFormation Template Mappings sintaksis.
-
Di panel editor terintegrasi, pilih tab Pemetaan.
-
Salin JSON pemetaan berikut dan tempelkan ke editor terintegrasi.
{ "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"} } } }
Berikut adalah pemetaan yang sama di. 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
Untuk menambahkan output
Output mendeklarasikan nilai yang Anda inginkan tersedia untuk describe stacks
API panggilan atau melalui tab Output tumpukan CloudFormation konsol. Untuk panduan ini, kami akan menampilkan situs web URL sehingga Anda dapat dengan mudah melihat situs web setelah kami membuatnya. Untuk informasi selengkapnya, lihat CloudFormation Template Outputs sintaksis.
-
Di panel editor terintegrasi, pilih tab Output.
-
Salin JSON output berikut dan tempel ke editor terintegrasi.
Output menggunakan fungsi intrinsik
Fn::GetAtt
untuk mendapatkan IP publik dari instans server web.{ "Outputs": { "URL": { "Value": { "Fn::Join": [ "", [ "http://", { "Fn::GetAtt": [ "WebServerInstance", "PublicIp" ] } ] ] }, "Description": "Newly created application URL" } } }
Berikut adalah output yang sama diYAML.
Outputs: URL: Value: !Join - '' - - 'http://' - !GetAtt - WebServerInstance - PublicIp Description: Newly created application URL
-
Simpan templat lagi sehingga agar perubahan Anda tidak hilang. Anda dapat dengan aman menyimpan perubahan Anda ke file yang sama yang Anda buat di bagian sebelumnya.
Sekarang setelah parameter templat, pemetaan, dan output berada di tempatnya, kita dapat menentukan properti sumber daya.
Langkah 3: Menentukan properti sumber daya
Banyak sumber daya memiliki properti yang diperlukan yang menentukan konfigurasi atau pengaturannya, seperti tipe instans mana yang akan digunakan untuk server web. Mirip dengan apa yang kita lakukan pada langkah sebelumnya, kita akan menggunakan editor terintegrasi AWS CloudFormation Designer untuk menentukan properti sumber daya. Kami menyediakan sampel JSON dan YAML Anda dapat menyalin dan menempel ke editor terintegrasi.
Untuk menentukan properti sumber daya
-
Pada kanvas AWS CloudFormation Desainer, pilih
VPC
sumber daya.Editor terintegrasi menunjukkan komponen tingkat sumber daya yang dapat Anda edit, seperti properti dan atribut sumber daya.
-
Di panel editor terintegrasi, pilih tab Properties.
-
Salin JSON cuplikan berikut dan tempel ke editor terintegrasi antara kawat gigi Properties ().
{}
Cuplikan ini menentukan DNS pengaturan dan CIDR blok. VPC
"EnableDnsSupport": "true", "EnableDnsHostnames": "true", "CidrBlock": "10.0.0.0/16"
UntukYAML, ketik baris baru setelahnya
Properties:
dan tempel cuplikan berikut.EnableDnsSupport: 'true' EnableDnsHostnames: 'true' CidrBlock: 10.0.0.0/16
catatan
Untuk efisiensi, kami menyediakan JSON dan YAML cuplikan yang dapat Anda salin dan tempel. Namun, perlu diingat, editor memiliki fitur selesai otomatis yang dapat Anda gunakan untuk menentukan setiap properti secara manual. Untuk informasi selengkapnya, lihat Terintegrasi JSON dan YAML editor.
-
Ulangi proses ini untuk sumber daya berikut:
PublicSubnet
-
Tambahkan properti CIDR blok berikut setelah properti VPC ID. AWS CloudFormation Designer secara otomatis menambahkan properti VPC ID ketika Anda menyeret subnet di dalam. VPC
catatan
Anda akan melihat beberapa asosiasi lain yang secara otomatis dibuat oleh AWS CloudFormation Designer untuk Anda. Tambahkan hanya properti baru, yang dicetak tebal.
JSON
"VpcId": { "Ref": "VPC" }, "CidrBlock": "10.0.0.0/24"
YAML
VpcId: !Ref VPC CidrBlock: 10.0.0.0/24
PublicRoute
-
Tambahkan properti CIDR blok tujuan berikut, yang mengarahkan semua lalu lintas ke 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
-
Tambahkan aturan masuk berikut yang menentukan lalu lintas apa yang dapat mencapai instans server web. Aturan memungkinkan semua HTTP dan SSH lalu lintas tertentu, yang Anda tentukan sebagai nilai parameter saat Anda membuat tumpukan.
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
-
Anda perlu menentukan sejumlah properti untuk instans server web, jadi kami akan menyoroti hanya beberapa untuk tujuan demonstrasi. Properti
InstanceType
danImageId
menggunakan parameter dan nilai pemetaan yang kita tentukan di bagian sebelumnya. Saat Anda membuat tumpukan, Anda menentukan tipe instans sebagai nilai parameter. NilaiImageId
adalah pemetaan yang didasarkan pada wilayah tumpukan dan tipe instans yang Anda tentukan.Properti
NetworkInterfaces
menentukan pengaturan jaringan untuk instans server web. Properti ini memungkinkan kita untuk mengaitkan grup keamanan dan subnet dengan instans. Meskipun AWS CloudFormation Designer menggunakanSubnetId
properti untuk mengaitkan instance dengan subnet, kita perlu menggunakanNetworkInterfaces
properti karena itulah satu-satunya cara untuk memberikan server web IP publik. Ketika Anda menentukan propertiNetworkInterfaces
, Anda diminta untuk menentukan subnet dan grup keamanan dalam properti tersebut.Di properti
UserData
, kita menentukan skrip konfigurasi yang berjalan setelah instans aktif dan berjalan. Semua informasi konfigurasi didefinisikan dalam metadata instans, yang akan kita tambahkan di langkah berikutnya.Ganti semua properti dengan snippet berikut:
penting
Jangan menambahkan snippet ini ke properti yang sudah ada.
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' - |+
-
Tambahkan metadata konfigurasi server web ke sumber daya
WebServerInstance
.-
Pilih
WebServerInstance
sumber daya, lalu pilih tab Metadata di panel editor terintegrasi. -
Jika Anda menulis template Anda diJSON: Di dalam
Metadata
kurung kurung gigi ({}
) dan setelah kurung kurung kurungAWS::CloudFormation::Designer
penutup, tambahkan koma ().,
-
Setelah properti
AWS::CloudFormation::Designer
, tambahkan snippet berikut, yang menginstruksikan skrip pembantu cfn-init untuk memulai server web dan membuat halaman web dasar.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'
-
-
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.
-
Simpan templat Anda yang sudah selesai untuk menyimpan semua perubahan yang Anda buat.
Anda sekarang memiliki CloudFormation template lengkap yang dapat Anda gunakan untuk membuat server web dasar di fileVPC. Untuk membuat template, pertama-tama kita menambahkan dan menghubungkan sumber daya template dengan menggunakan panel kanvas AWS CloudFormation Designer. Kemudian, kami menggunakan editor terintegrasi untuk menambahkan komponen template lainnya dan untuk menentukan properti sumber daya. Di langkah berikutnya, kita akan menggunakan templat ini untuk membuat tumpukan.
Langkah 4: Penyediaan sumber daya
Untuk membuat tumpukan, Anda dapat meluncurkan CloudFormation Create Stack Wizard dari AWS CloudFormation Designer. Kita akan menggunakan templat yang kita buat di langkah sebelumnya untuk membuat tumpukan CloudFormation . Setelah CloudFormation menyediakan semua sumber daya Anda, Anda akan memiliki situs web dasar yang aktif dan berjalan.
Untuk membuat tumpukan
-
Pada toolbar AWS CloudFormation Designer, pilih Create Stack (ikon cloud).
AWS CloudFormation Desainer menyimpan template terbuka dalam bucket S3, dan kemudian meluncurkan CloudFormation Create Stack Wizard. CloudFormation menggunakan bucket S3 yang sama yang dibuatnya setiap kali Anda mengunggah template.
-
CloudFormation secara otomatis mengisi templateURL; pilih Berikutnya.
-
Di bagian Tentukan detail tumpukan, masukkan nama tumpukan di bidang Nama tumpukan. Untuk contoh ini, gunakan
BasicWebServerStack
. -
Di bagian Parameter, untuk KeyNamebidang, masukkan nama EC2 key pair Amazon yang valid di wilayah yang sama saat Anda membuat tumpukan.
-
Pertahankan nilai parameter default lainnya dan pilih Selanjutnya.
-
Untuk panduan ini, Anda tidak perlu menambahkan tanda atau menentukan pengaturan lanjutan, jadi pilih Selanjutnya.
-
Pastikan nama tumpukan dan nama EC2 pasangan kunci Amazon sudah benar, lalu pilih Buat.
Diperlukan beberapa menit AWS CloudFormation untuk membuat tumpukan Anda. Untuk memantau kemajuan, tampilkan peristiwa tumpukan. Untuk informasi selengkapnya tentang melihat peristiwa tumpukan, lihat Lihat informasi tumpukan dari CloudFormation konsol. Setelah tumpukan dibuat, lihat output tumpukan dan buka situs web sampel URL untuk memverifikasi bahwa situs web sedang berjalan. Untuk informasi selengkapnya, lihat Lihat informasi tumpukan dari CloudFormation konsol.
Sekarang setelah Anda berhasil membuat template dan meluncurkan tumpukan menggunakan AWS CloudFormation Designer, Anda dapat menggunakan tumpukan dalam panduan berikut:Gunakan AWS CloudFormation Designer untuk memodifikasi template stack, yang memodifikasi template untuk membuat server web yang dapat diskalakan.