pengenalan
Dalam siaran ini, saya akan memandu anda melalui proses menggunakan sistem pengesanan pencerobohan pada AWS
NOTA: Projek ini menganggap anda sudah mempunyai akaun AWS yang aktif dan mengkonfigurasikan bukti kelayakan akaun anda (kunci akses) kepada editor kod anda dan projek ini akan menanggung beberapa kos dalam konsol anda
Gambaran Keseluruhan Projek
Objektif
Objektif projek ini adalah seperti berikut:
- Simpan aplikasi dengan Docker
- Tolak imej bekas ke ECR
- Buat VPC, dua subnet peribadi dan dua subnet awam
- Buat titik akhir VPC untuk subnet peribadi untuk mengakses ECR
- Kerahkan Pengimbang Beban Aplikasi dan kumpulan sasaran dalam subnet awam untuk Perkhidmatan ECS
- Buat definisi Tugas untuk perkhidmatan ECS
- Buat kluster ECS dan perkhidmatan ECS dengan jenis pelancaran fargate dalam subnet peribadi.
- Buat zon dihoskan dalam laluan 53 dan arahkannya ke nama DNS ALB
Seni Bina Projek
Kontena aplikasi dengan docker
Bahagian ini akan menunjukkan langkah-langkah yang terlibat dalam mencipta projek ini dari awal
Langkah 1: Dockerize The Flask Application
Buat fail Docker dalam direktori projek untuk membungkus apl kelalang.
FROM python:3.12
#set the working dir
WORKDIR /usr/src/app
#copy the requirements and install dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copy all the files to the container
COPY . .
#Expose the port
EXPOSE 5000
#run the app
CMD ["gunicorn","-b","0.0.0.0:5000", "app:app"]
Salin selepas log masuk
Langkah 2: Bina dan uji Imej Docker
Adalah penting untuk membina dan menguji imej docker secara setempat untuk memastikan ia berfungsi seperti yang dimaksudkan
docker build -t image-name .
docker run -p 5000:5000 image-name
Salin selepas log masuk
Tolak Imej Docker ke ECR
Langkah 1. Buat Repositori Bekas Elastik (ECR)
- Pergi ke konsol AWS ECR dan buat repositori dan catatkan URI (cth., 123456789012.dkr.ecr.region.amazonaws.com/repo-name)
- NOTA: Masukkan repo ECR anda dan pilih arahan tolak lihat untuk melihat arahan untuk menolak imej ke repo ECR anda. Perintah itu yang akan digunakan di sini.
Langkah 2. Sahkan Docker kepada ECR
Jalankan arahan berikut untuk mengesahkan Docker dengan ECR (ganti wilayah-anda dan id-akaun anda):
aws ecr get-login-password --region your-region | docker login --username AWS --password-stdin your-account-id.dkr.ecr.your-region.amazonaws.com
Salin selepas log masuk
Langkah 3. Tag dan Tolak Imej
Tanda imej Docker tempatan anda untuk memadankan repositori ECR, kemudian tolaknya:
NOTA: Pastikan ia adalah rantau dan id akaun akaun anda masing-masing
docker tag image-name:latest your-account-id.dkr.ecr.your-region.amazonaws.com/image-name:latest
docker push your-account-id.dkr.ecr.your-region.amazonaws.com/image-name:latest
Salin selepas log masuk
Repo ECR anda sepatutnya kelihatan seperti ini apabila imej berjaya ditolak
Buat VPC dan Subnetnya
Perhatikan Wilayah, kerana di sinilah semua sumber akan digunakan
Langkah 1: Buat VPC baharu
- Pergi ke konsol VPC dan buat VPC baharu
- Nyatakan blok CIDR (cth. 10.0.0.0/16)
- NOTA: Pastikan tetapan Dayakan nama hos DNS ditanda semasa membuat VPC
Langkah 2: Buat Gerbang Internet (IGW) untuk VPC
Dalam konsol VPC, pilih tab Intergate Gateway dan buat gateway internet. Setelah IGW dibuat, lampirkan pada VPC anda
Langkah 3: Cipta Subnet
- Buat dua subnet dalam satu zon ketersediaan (cth. us-east-1)
- Buat satu lagi set dua subnet dalam zon ketersediaan (AZ) yang berbeza (cth. us-east-2)
- NOTA: Dalam setiap AZ, subnet akan berfungsi sebagai subnet peribadi dan awam.
NOTA: gugusan ECS akan digunakan pada subnet peribadi dan Pengimbang Beban Aplikasi akan berada dalam subnet awam dan akan mengakses gugusan ECS dalam subnet peribadi
Langkah 4: Kemas kini jadual Laluan
- Buat jadual laluan untuk subnet awam dan peribadi dan kaitkan jadual laluan kepada subnet awam dan peribadi masing-masing. (Pastikan VPC yang digunakan dipilih untuk kedua-duanya.)
- Untuk jadual laluan subnet awam, tambahkan pada laluan untuk mengarahkan semua trafik keluar 0.0.0.0/0 melalui Gerbang Internet.
- Subnet peribadi tidak akan menghalakan trafik keluar buat masa ini.
Buat titik akhir VPC untuk ECR
Ini akan membolehkan gugusan ECS mempunyai akses kepada Pendaftaran Bekas Elastik (ECR).
NOTA: Empat Titik Akhir akan dibuat untuk S3, ECR, DOCKER dan CloudWatch.
- pilih Titik Akhir dan klik pada buat titik akhir.
- Namakan titik akhir dan cari titik akhir api ECR di bawah perkhidmatan com.amazonaws.us-east-1.ecr.api
- Pilih VPC yang telah kami gunakan, ini akan memaparkan pilihan subnet di mana zon ketersediaan subnet peribadi kami akan dipilih dan akhirnya pilih subnet peribadi kami dan kumpulan keselamatan lalai.
- Pilih lalai dan biarkan dasar seperti sedia ada dan kemudian buat VPC.
*Sekarang buat Endpoints yang tinggal dengan menukar perkhidmatan untuk docker com.amazonaws.us-east-1.ecr.dkr, untuk CloudWatch logs com.amazonaws.us-east-1.logs dan untuk S3 com.amazonaws. us-east-1.s3 masing-masing dan ikuti semua perkara lain dengan tepat mengharapkan perubahan tersebut.
- NOTA: Untuk titik akhir S3, pilih get laluan. Ini dipanggil Titik Akhir Gerbang S3 dan akan menggesa anda menyambungkannya ke jadual laluan subnet peribadi anda, yang akan mencipta laluan dalam jadual laluan untuknya.
Buat Pengimbang Beban Aplikasi dan Kumpulan Sasaran
Ini adalah langkah yang sangat penting kerana ia adalah ALB yang
akan mengarahkan trafik ke perkhidmatan ECS persendirian.
Pertama sekali, kita perlu membuat kumpulan keselamatan untuk ALB.
- Pergi ke kumpulan keselamatan di sebelah kiri dan pilih buat kumpulan keselamatan. berikan nama dan penerangan kepada keselamatan.
- Tambahkan peraturan masuk pada julat port 80 dan sumber 0.0.0.0/0 dan tambahkan peraturan kedua pada julat port 443 dan sumber 0.0.0.0/24 untuk trafik HTTP dan HTTPS masing-masing
Langkah 1: Buat Kumpulan Sasaran
- Pergi ke konsol EC2 dan di sebelah kiri, di bawah Load Balancing pilih kumpulan sasaran.
- Di bawah konfigurasi asas pilih alamat IP dan namakan kumpulan Sasaran
- Tinggalkan Protokol dan port sebagai HTTP:80
- Pilih VPC yang kami gunakan pengimbang beban dan tatal dan klik seterusnya.
- Di sini alih keluar alamat IP yang ada, semua IP akan ditambah secara automatik. Seterusnya, nyatakan port yang terdedah, Port:5000 dan Cipta kumpulan Sasaran.
Buat Pengimbang Beban Aplikasi
- Di sebelah kiri konsol EC2, pilih pengimbang beban dan pilih buat pengimbang beban.
- Pilih Cipta Pengimbang Beban Aplikasi, ini akan menjadi pengimbang beban yang menghadap ke Internet. beri nama ALB.
- Dalam bahagian pemetaan rangkaian pilih VPC Dibuat dan subnet awam dalam dua zon ketersediaan.
- Dalam bahagian Pendengar dan Penghalaan, pilih kumpulan sasaran yang dibuat. ALB akan mendengar pada port:80 dan ke hadapan kepada kumpulan sasaran.
- Buat ALB.
Buat definisi Tugas
Pergi ke konsol ECS dan pilih takrifan tugas.
Langkah 1:
- Namakan keluarga definisi tugas
- Biarkan keperluan infrastruktur lalai seperti sedia ada, tetapi anda boleh menukar vCPU dan memori berdasarkan penghapusan anda.
Langkah 2: Untuk Bekas 1
Buat kluster dan perkhidmatan Fargate
Buat kumpulan keselamatan untuk perkhidmatan ECS
- Pergi ke kumpulan keselamatan di sebelah kiri dan pilih buat kumpulan keselamatan. berikan nama dan penerangan kepada keselamatan.
- Tambahkan peraturan masuk pada julat port 5000 dan sumbernya ialah kumpulan keselamatan Pengimbang Beban Aplikasi.
Langkah 1: Buat Kluster
- Pergi ke tab kelompok dan pilih buat kelompok, ini akan membawa anda ke halaman konfigurasi kelompok. Namakan kluster dan pastikan hanya AWS Fargate(Serverless) dipilih di bawah tab infrastruktur dan kemudian buat kluster.
Langkah 2: Buat perkhidmatan
- Pilih kluster yang dibuat dan klik pada cipta di bawah perkhidmatan.
Ini akan membawa anda ke halaman baharu di mana anda akan menentukan konfigurasi perkhidmatan Fargate.
- Tatal melepasi bahagian Persekitaran dan beralih ke Konfigurasi Penerapan. Di sini, nyatakan keluarga definisi tugas, yang akan memilih semakan secara automatik juga.
Pilih bilangan Tugasan yang Diingini untuk dilancarkan. Satu ok untuk projek ini.
Tatal ke tab Rangkaian dan pilih VPC yang telah dibuat dan kemudian subnet peribadi
Dalam bahagian Pengimbang beban, pilih jenis pengimbang beban sebagai Pengimbang Beban Aplikasi dan pilih gunakan pengimbang beban sedia ada. Ini akan memaparkan ALB yang telah dibuat dalam bahagian sebelumnya. pilihnya.
Tatal dan anda akan lihat, pendengar. pilih gunakan pendengar sedia ada dan pilih pendengar port 80 yang ada dan di bawah kumpulan sasaran lakukan perkara yang sama, pilih kumpulan sasaran sedia ada yang kami buat.
Seterusnya ialah Penskalaan Auto Perkhidmatan. Ini adalah pilihan tetapi merupakan tambahan yang baik untuk perlu menskalakan ke apl berdasarkan metrik yang ditentukan. Dayakan ini dan tentukan bilangan minimum dan maksimum tugas yang anda mahu jalankan. Seterusnya tambahkan dasar penskalaan. Untuk projek ini dasar penjejakan Sasaran digunakan bersama metrik perkhidmatan ALBrequestCountPerTarget ECS, dengan nilai sasaran 50, tempoh bertenang skala keluar dan tempoh bertenang Skala masuk sebagai 60s
Buat Perkhidmatan.
Setelah Perkhidmatan dibuat, bilangan tugasan yang diingini akan dibuat.
Buat Zon Dihoskan di laluan 53
Jika arahan di atas telah diikuti pada T, anda sepatutnya mempunyai apl web yang berfungsi sepenuhnya, untuk mengaksesnya pergi ke pengimbang beban anda, salin nama DNS dan tampal dalam penyemak imbas anda. Tetapi itu membosankan dan tidak menggunakan amalan terbaik. Sebaik-baiknya, harus ada tembok api aplikasi Web di hadapan ALB atau CloudFront, tetapi untuk kesederhanaan kami hanya akan menggunakan Laluan 53.
NOTA: Bahagian ini memerlukan anda mempunyai nama domain berdaftar sama ada dengan AWS atau mana-mana pembekal lain
Langkah 1: Buat hosted in
- Pergi ke konsol Laluan 53.
- Pada tab sebelah kiri, pilih Zon Dihoskan. anda sepatutnya mempunyai ini.
- Pilih Cipta Zon Dihoskan
- Masukkan nama domain anda dan berikan penerangan. Biarkan jenis sebagai Zon Dihoskan Awam dan pilih buat Zon Dihoskan.
Langkah 2: Tambahkan nama DNS ALB pada rekod zon yang dihoskan
- Pergi ke konsol ALB anda dan salin nama DNSnya.
- Kembali ke zon yang dihoskan dan pilih cipta rekod.
- Jenis rekod lalai yang ada ialah rekod A, yang akan digunakan.
- Togol suis alias
- Di bawah pilih titik akhir, pilih Alias kepada Aplikasi dan Pengimbang Beban Klasik
- Seterusnya, pilih kawasan tempat anda melancarkan Pengimbang Beban anda. Dalam kes ini, ia adalah wilayah us-east-1, Pastikan ia adalah wilayah anda.
- Pilih pengimbang beban anda daripada menu lungsur.
- Buat rekod.
Ini mengandaikan anda mempunyai nama domain anda dengan AWS
TAHNIAH!!
Jika anda mengikuti Langkah ke T, anda seharusnya mempunyai apl web berfungsi penuh yang boleh diakses melalui nama domain anda.
Ini adalah projek yang sangat menarik kerana saya bekerja dengan VPC, subnet peribadi dan awam, titik akhir VPC, perkhidmatan ECS, ECR, Kumpulan sasaran, kumpulan keselamatan dan Pengimbang beban Aplikasi kerana mereka semua berkumpul untuk mencipta web ini- apl.
Atas ialah kandungan terperinci Menggunakan Sistem Pengesan Pencerobohan berasaskan Flask ke AWS ECS dengan CI/CD. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!