Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tumpukan berbasis bootstrap Windows CloudFormation
Topik ini menjelaskan cara mem-bootstrap Windows tumpukan dan memecahkan masalah pembuatan tumpukan.
Topik
Data pengguna dalam EC2 contoh
Data pengguna adalah EC2 fitur Amazon yang memungkinkan Anda meneruskan skrip atau informasi konfigurasi ke EC2 instance saat diluncurkan.
Untuk Windows EC2 contoh:
-
Anda dapat menggunakan skrip batch (menggunakan
<script>
tag) atau PowerShell skrip (menggunakan<powershell>
tag). -
Eksekusi skrip ditangani olehEC2Launch.
penting
Jika Anda membuat Windows AMI sendiri untuk digunakan CloudFormation, pastikan EC2Launch v2 dikonfigurasi dengan benar. EC2Launchv2 diperlukan untuk alat CloudFormation bootstrap untuk menginisialisasi dan mengonfigurasi Windows instance dengan benar selama pembuatan tumpukan. Untuk informasi selengkapnya, lihat Menggunakan agen EC2Launch v2 untuk melakukan tugas selama peluncuran instans EC2 Windows di Panduan EC2 Pengguna Amazon.
Untuk selengkapnya AWS Windows AMIs, lihat Referensi AWSWindows AMI.
CloudFormation skrip pembantu
Skrip pembantu adalah utilitas untuk mengkonfigurasi instance selama proses bootstrap. Digunakan dengan data EC2 pengguna Amazon, mereka menyediakan opsi konfigurasi yang kuat.
CloudFormation menyediakan skrip pembantu Python berikut yang dapat Anda gunakan untuk menginstal perangkat lunak dan memulai layanan pada EC2 instance Amazon yang Anda buat sebagai bagian dari tumpukan Anda:
-
cfn-init
— Gunakan untuk mengambil dan menafsirkan metadata sumber daya, menginstal paket, membuat file, dan memulai layanan. -
cfn-signal
— Gunakan untuk memberi sinyal denganCreationPolicy
, sehingga Anda dapat menyinkronkan sumber daya lain di tumpukan saat sumber daya atau aplikasi prasyarat siap. -
cfn-get-metadata
— Gunakan untuk mengambil metadata untuk sumber daya atau jalur ke kunci tertentu. -
cfn-hup
— Gunakan untuk memeriksa pembaruan metadata dan menjalankan kait khusus saat perubahan terdeteksi.
Anda memanggil skrip langsung dari templat Anda. Skrip bekerja bersama dengan metadata sumber daya yang didefinisikan dalam templat yang sama. Skrip berjalan di EC2 instance Amazon selama proses pembuatan tumpukan.
Untuk informasi selengkapnya, lihat referensi skrip CloudFormation pembantu di Panduan Referensi AWS CloudFormation Template.
Contoh bootstrap tumpukan Windows
Mari kita periksa contoh cuplikan dari Windows Server template yang melakukan tindakan berikut:
-
Meluncurkan EC2 instance bernama
TestInstance
dari AMI Windows Server 2022. -
Membuat file uji sederhana untuk memverifikasi
cfn-init
berfungsi. -
Mengkonfigurasi
cfn-hup
untuk manajemen konfigurasi yang sedang berlangsung. -
Menggunakan a
CreationPolicy
untuk memastikan sinyal instance berhasil diselesaikan.
Skrip cfn-init
pembantu digunakan untuk melakukan setiap tindakan ini berdasarkan informasi dalam AWS::CloudFormation::Init
sumber daya dalam template.
AWS::CloudFormation::Init
Bagian ini diberi nama TestInstance
dan dimulai dengan deklarasi berikut.
TestInstance: Type: AWS::EC2::Instance Metadata: AWS::CloudFormation::Init: configSets: default: - create_files - start_services
Setelah ini, files
bagian dari AWS::CloudFormation::Init
dideklarasikan.
create_files: files: c:\cfn\test.txt: content: !Sub | Hello from ${AWS::StackName} c:\cfn\cfn-hup.conf: content: !Sub | [main] stack=${AWS::StackName} region=${AWS::Region} interval=2 c:\cfn\hooks.d\cfn-auto-reloader.conf: content: !Sub | [cfn-auto-reloader-hook] triggers=post.update path=Resources.TestInstance.Metadata.AWS::CloudFormation::Init action=cfn-init.exe -v -s ${AWS::StackName} -r TestInstance -c default --region ${AWS::Region}
Tiga file dibuat di sini dan ditempatkan di C:\cfn
direktori pada instance server:
-
test.txt
, file uji sederhana yang memverifikasicfn-init
berfungsi dengan benar dan dapat membuat file dengan konten dinamis. -
cfn-hup.conf
, file konfigurasi untukcfn-hup
dengan interval pemeriksaan 2 menit. -
cfn-auto-reloader.conf
, file konfigurasi untuk hook yang digunakan olehcfn-hup
untuk memulai pembaruan (panggilancfn-init
) saat metadata berubah.AWS::CloudFormation::Init
Berikutnya adalah start_services
bagian, yang mengkonfigurasi Windows layanan.
start_services: services: windows: cfn-hup: enabled: true ensureRunning: true files: - c:\cfn\cfn-hup.conf - c:\cfn\hooks.d\cfn-auto-reloader.conf
Bagian ini memastikan bahwa cfn-hup
layanan dimulai dan akan secara otomatis restart jika file konfigurasi dimodifikasi. Layanan memantau perubahan CloudFormation metadata dan berjalan kembali cfn-init
saat pembaruan terdeteksi.
Selanjutnya adalah Properties
bagian.
TestInstance: Type: AWS::EC2::Instance CreationPolicy: ResourceSignal: Timeout: PT20M Metadata: AWS::CloudFormation::Init: # ... metadata configuration ... Properties: InstanceType: t2.large ImageId: '{{resolve:ssm:/aws/service/ami-windows-latest/Windows_Server-2022-English-Full-Base}}' SecurityGroupIds: - !Ref InstanceSecurityGroup KeyName: !Ref KeyPairName UserData: Fn::Base64: !Sub | <powershell> cfn-init.exe -v -s ${AWS::StackName} -r TestInstance -c default --region ${AWS::Region} cfn-signal.exe -e $lastexitcode --stack ${AWS::StackName} --resource TestInstance --region ${AWS::Region} </powershell>
Di bagian ini, UserData
properti berisi PowerShell skrip yang akan dieksekusi olehEC2Launch, dikelilingi oleh <powershell>
tag. Skrip berjalan cfn-init
dengan default
ConfigSet, kemudian cfn-signal
digunakan untuk melaporkan kode keluar kembali ke. CloudFormation CreationPolicy
Ini digunakan untuk memastikan instance dikonfigurasi dengan benar sebelum pembuatan tumpukan dianggap selesai.
ImageId
Properti menggunakan parameter publik Systems Manager Parameter Store untuk secara otomatis mengambil ID AMI Windows Server 2022 terbaru. Pendekatan ini menghilangkan kebutuhan untuk pemetaan AMI khusus wilayah dan memastikan Anda selalu mendapatkan AMI terbaru. Menggunakan parameter Systems Manager untuk AMI IDs adalah praktik terbaik untuk mempertahankan referensi AMI saat ini. Jika Anda berencana untuk terhubung ke instans Anda, pastikan SecurityGroupIds
properti mereferensikan grup keamanan yang memungkinkan akses RDP.
CreationPolicy
Ini dideklarasikan sebagai bagian dari properti sumber daya dan menentukan periode batas waktu. cfn-signal
Perintah dalam sinyal data pengguna saat konfigurasi instance selesai:
TestInstance: Type: AWS::EC2::Instance CreationPolicy: ResourceSignal: Timeout: PT20M Properties: # ... other properties ...
Karena proses bootstrap minimal dan hanya membuat file dan memulai layanan, CreationPolicy
menunggu 20 menit (PT20M) sebelum waktu habis. Batas waktu ditentukan menggunakan format durasi ISO 8601. Perhatikan bahwa Windows instance umumnya membutuhkan waktu lebih lama untuk diluncurkan daripada instance Linux, jadi uji secara menyeluruh untuk menentukan nilai batas waktu terbaik untuk kebutuhan Anda.
Jika semuanya berjalan dengan baik, CreationPolicy
selesai berhasil dan Anda dapat mengakses Windows Server instance menggunakan alamat IP publiknya. Setelah pembuatan tumpukan selesai, ID instance dan alamat IP publik akan ditampilkan di tab Output CloudFormation konsol.
Outputs: InstanceId: Value: !Ref TestInstance Description: Instance ID of the Windows Server PublicIP: Value: !GetAtt TestInstance.PublicIp Description: Public IP address of the Windows Server
Anda juga dapat memverifikasi secara manual bahwa bootstrap bekerja dengan benar dengan menghubungkan ke instance melalui RDP dan memeriksa apakah file tersebut C:\cfn\test.txt
ada dan berisi konten yang diharapkan. Untuk informasi selengkapnya tentang menghubungkan ke Windows instans, lihat Connect ke Windows instans menggunakan RDP di Panduan Pengguna Amazon EC2 .
Melarikan diri dari garis miring terbalik di jalur file Windows
Saat mereferensikan Windows jalur dalam CloudFormation template, selalu ingat untuk menghindari garis miring terbalik (\
) dengan benar sesuai dengan format templat yang Anda gunakan.
-
Untuk template JSON, Anda harus menggunakan garis miring terbalik ganda di jalur Windows file karena JSON memperlakukan garis miring terbalik sebagai karakter pelarian. Garis miring terbalik pertama lolos dari garis miring kedua, menghasilkan interpretasi garis miring terbalik tunggal.
"commands" : { "1-extract" : { "command" : "C:\\SharePoint\\SharePointFoundation2010.exe /extract:C:\\SharePoint\\SPF2010 /quiet /log:C:\\SharePoint\\SharePointFoundation2010-extract.log" } }
-
Untuk template YAMAL, garis miring terbalik tunggal biasanya cukup.
commands: 1-extract: command: C:\SharePoint\SharePointFoundation2010.exe /extract:C:\SharePoint\SPF2010 /quiet /log:C:\SharePoint\SharePointFoundation2010-extract.log
Kelola Windows layanan
Anda mengelola Windows layanan dengan cara yang sama seperti layanan Linux, kecuali bahwa Anda menggunakan windows
kunci, bukansysvinit
. Contoh berikut memulai cfn-hup
layanan, menyetelnya ke Otomatis, dan memulai ulang layanan jika cfn-init
memodifikasi c:\cfn\cfn-hup.conf
atau file c:\cfn\hooks.d\cfn-auto-reloader.conf
konfigurasi.
services: windows: cfn-hup: enabled: true ensureRunning: true files: - c:\cfn\cfn-hup.conf - c:\cfn\hooks.d\cfn-auto-reloader.conf
Anda dapat mengelola Windows layanan lain dengan cara yang sama dengan menggunakan nama, bukan nama tampilan, untuk mereferensikan layanan.
Memecahkan masalah pembuatan tumpukan
Jika tumpukan Anda gagal selama pembuatan, perilaku defaultnya adalah mengembalikan kegagalan. Meskipun ini biasanya merupakan default yang baik karena menghindari biaya yang tidak perlu, ini menyulitkan untuk men-debug mengapa pembuatan tumpukan Anda gagal.
Untuk menonaktifkan perilaku ini saat membuat atau memperbarui tumpukan Anda dengan CloudFormation konsol, pilih opsi Pertahankan sumber daya yang berhasil disediakan di bawah opsi Kegagalan tumpukan. Untuk informasi selengkapnya, lihat Pilih cara menangani kegagalan saat menyediakan sumber daya. Ini memungkinkan Anda untuk masuk ke instance Anda dan melihat file log untuk menentukan masalah yang dihadapi saat menjalankan skrip startup Anda.
Log penting yang perlu dilihat adalah:
-
Log EC2 konfigurasi di
%ProgramData%\Amazon\EC2Launch\log\agent.log
-
cfn-initLog di
C:\cfn\log\cfn-init.log
(periksa kode keluar dan pesan kesalahan untuk titik kegagalan tertentu)
Untuk log lainnya, lihat topik berikut di Panduan EC2 Pengguna Amazon:
Untuk informasi selengkapnya tentang pemecahan masalah bootstrap, lihat Bagaimana cara memecahkan masalah skrip pembantu yang tidak akan di-bootstrap dalam tumpukan dengan instance? CloudFormation Windows