Menerapkan aplikasi yang dikelompokkan ke Amazon ECS dengan menggunakan AWS Copilot - AWS Prescriptive Guidance

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

Menerapkan aplikasi yang dikelompokkan ke Amazon ECS dengan menggunakan AWS Copilot

Jean-Baptiste Guillois, Mathew George, dan Thomas Scott, Amazon Web Services

Ringkasan

Pola ini menunjukkan cara menerapkan container di kluster Amazon Elastic Container Service (Amazon ECS) dengan dua cara—dengan menggunakan Konsol Manajemen Amazon Web Services (AWS), dan dengan menggunakan AWS Copilot—untuk mendemonstrasikan cara AWS Copilot menyederhanakan tugas penerapan.

Amazon ECS adalah layanan manajemen kontainer yang sangat skalabel dan cepat yang memudahkan untuk menjalankan, menghentikan, dan mengelola kontainer di cluster. kontainer Anda dijelaskan pada ketentuan tugas yang Anda gunakan untuk menjalankan tugas individu atau tugas yang ada dalam layanan. Anda dapat menjalankan tugas dan layanan Anda pada infrastruktur tanpa server yang dikelola oleh AWS Fargate. Atau, untuk kontrol lebih lanjut atas infrastruktur, Anda dapat menjalankan tugas dan layanan Anda di klaster instans Amazon Elastic Compute Cloud (Amazon EC2) yang Anda kelola.

Perintah AWS Copilot command line interface (CLI) menyederhanakan pembuatan, pelepasan, dan pengoperasian aplikasi kontainer siap produksi di Amazon ECS dari lingkungan pengembangan lokal. AWS Copilot CLI selaras dengan alur kerja pengembang yang mendukung praktik terbaik aplikasi modern: mulai dari menggunakan infrastruktur sebagai kode hingga membuat pipeline integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) yang disediakan atas nama pengguna. Anda dapat menggunakan AWS Copilot CLI sebagai bagian dari siklus pengembangan dan pengujian sehari-hari Anda sebagai alternatif untuk AWS Management Console.

Prasyarat dan batasan

Prasyarat

Batasan

  • Docker memberlakukan batas tarik 100 gambar kontainer per 6 jam per alamat IP pada paket gratis.

Arsitektur

Tumpukan teknologi target

  • Lingkungan AWS diatur dengan virtual private cloud (VPC), subnet publik dan pribadi, dan grup keamanan

  • Kluster Amazon ECS

  • Layanan Amazon ECS dan definisi tugas

  • Amazon Elastic Container Registry (Amazon ECR)

  • Amazon DynamoDB

  • Penyeimbang Beban Aplikasi

  • AWS Fargate

  • Amazon Identity and Access Management (IAM)

  • Amazon CloudWatch

  • AWS CloudTrail

Arsitektur target

Saat Anda menerapkan aplikasi sampel untuk pola ini, beberapa tugas dibuat dan diterapkan di Availability Zone terpisah. Setiap tugas menyimpan data di Amazon DynamoDB. Saat Anda mengakses halaman web untuk suatu tugas, Anda dapat melihat data dari semua tugas lainnya.

Arsitektur untuk menyebarkan kontainer dengan AWS Copilot

Alat

Layanan AWS

  • Amazon ECR Amazon Elastic Container Registry (Amazon ECR) adalah layanan registri gambar kontainer terkelola AWS yang aman, terukur, dan andal. Amazon ECR mendukung repositori pribadi dengan izin berbasis sumber daya menggunakan IAM.

  • Amazon ECS — Amazon Elastic Container Service (Amazon ECS) adalah layanan manajemen kontainer yang sangat skalabel dan cepat untuk menjalankan, menghentikan, dan mengelola kontainer di klaster. Anda dapat menjalankan tugas dan layanan Anda pada infrastruktur tanpa server yang dikelola oleh AWS Fargate. Atau, untuk kontrol lebih lanjut atas infrastruktur, Anda dapat menjalankan tugas dan layanan Anda di klaster instans Amazon Elastic Compute Cloud (Amazon EC2) yang Anda kelola.

  • AWS Copilot — AWS Copilot menyediakan antarmuka baris perintah yang membantu Anda meluncurkan dan mengelola aplikasi kontainer di AWS, termasuk mendorong ke registri, membuat definisi tugas, dan membuat klaster.

  • AWS Fargate — AWS Fargate adalah mesin pay-as-you-go komputasi tanpa server yang memungkinkan Anda fokus membangun aplikasi tanpa mengelola server. AWS Fargate kompatibel dengan Amazon ECS dan Amazon Elastic Kubernetes Service (Amazon EKS). Saat menjalankan tugas dan layanan Amazon ECS dengan tipe peluncuran Fargate atau penyedia kapasitas Fargate, Anda mengemas aplikasi dalam wadah, menentukan persyaratan CPU dan memori, menentukan kebijakan jaringan dan IAM, dan meluncurkan aplikasi. Setiap tugas Fargate memiliki batas isolasi sendiri dan tidak berbagi kernel yang mendasarinya, sumber daya CPU, sumber daya memori, atau elastic network interface dengan tugas lain.

  • Amazon DynamoDB - Amazon DynamoDB adalah layanan database NoSQL yang dikelola sepenuhnya yang memberikan kinerja yang cepat dan dapat diprediksi dengan skalabilitas yang mulus.

  • Elastic Load Balancing (ELB) — Elastic Load Balancing secara otomatis mendistribusikan lalu lintas masuk Anda ke beberapa target, EC2 seperti instance, kontainer, dan alamat IP, dalam satu atau beberapa Availability Zone. Ini memantau kesehatan target terdaftarnya, dan mengarahkan lalu lintas hanya ke target yang sehat. Elastic Load Balancing menskalakan load balancer Anda saat lalu lintas masuk Anda berubah seiring waktu. Hal ini dapat secara otomatis menskalakan sebagian besar beban kerja.

Alat

Kode

Kode untuk aplikasi sampel yang digunakan dalam pola ini tersedia di GitHub, di repositori Aplikasi Sampel Cluster. Ikuti petunjuk di bagian selanjutnya untuk menggunakan file sampel.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan
Kloning GitHub repositori.

Kloning repositori kode sampel dengan menggunakan perintah:

git clone https://github.com/aws-samples/cluster-sample-app cluster-sample-app && cd cluster-sample-app
Pengembang aplikasi, AWS DevOps
Buat repositori Amazon ECR Anda.
  1. Masuk ke AWS Management Console dan buka konsol Amazon ECR di https://console.aws.amazon.com/ecr/repositori.

  2. Pilih Buat repositori.

  3. Untuk nama repositori, masukkan. cluster-sample-app

  4. Untuk semua pengaturan lainnya, pertahankan nilai default.

  5. Pilih Buat repositori.

Untuk informasi selengkapnya, lihat Membuat repositori pribadi di dokumentasi Amazon ECR.

Pengembang aplikasi, AWS DevOps
Buat, tag, dan dorong image Docker Anda ke repositori Amazon ECR Anda.
  1. Pilih repositori yang baru saja Anda buat dan pilih Lihat perintah push.

  2. Salin perintah yang ditampilkan dan jalankan secara lokal untuk membangun, menandai, dan mendorong image docker Anda. Perintah ini akan mirip dengan yang berikut ini.

Untuk mengautentikasi klien Docker Anda ke registri:

aws ecr get-login-password --region <YOUR_AWS_REGION> | docker login --username AWS --password-stdin <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com

Untuk membangun image Docker Anda:

docker build -t cluster-sample-app .

Untuk menandai gambar Docker Anda:

docker tag cluster-sample-app:latest <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com/cluster-sample-app:latest

Untuk mendorong image Docker ke repositori Anda:

docker push <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com/cluster-sample-app:latest
Pengembang aplikasi, AWS DevOps
Menyebarkan tumpukan aplikasi.
  1. Buka CloudFormation konsol AWS di https://console.aws.amazon.com/cloudformation/.

  2. Pilih Buat tumpukan.

  3. Di bagian Siapkan templat, pilih Template sudah siap.

  4. Di bagian Tentukan templat, pilih Unggah file templat.

  5. Pilih file lokal cluster-sample-app-stack.yml yang Anda kloning dari GitHub repositori sebagai CloudFormation template, dan kemudian pilih Berikutnya.

  6. Masukkan nama untuk tumpukan Anda, lalu pilih Berikutnya.

  7. Simpan semua opsi default, lalu pilih Berikutnya.

  8. Tinjau semua opsi, akui pembuatan sumber daya IAM, lalu pilih Buat tumpukan.

  9. Ketika tumpukan aplikasi Anda telah digunakan, pilih tab Output, salin URL, dan buka di browser Anda untuk mengakses aplikasi.

Untuk informasi selengkapnya tentang penerapan CloudFormation templat, lihat Membuat tumpukan di CloudFormation dokumentasi AWS.

AWS DevOps, Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan
Kloning GitHub repositori.

Kloning repositori kode sampel dengan menggunakan perintah:

git clone https://github.com/aws-samples/cluster-sample-app cluster-sample-app && cd cluster-sample-app
Pengembang aplikasi, AWS DevOps
Terapkan image container Anda ke AWS dengan menggunakan AWS Copilot CLI.

Terapkan aplikasi dalam satu langkah dengan menggunakan perintah berikut di direktori root proyek Anda:

copilot init --app cluster-sample-app --name demo --type "Load Balanced Web Service" --dockerfile ./Dockerfile --port 8080 --deploy

Anda kemudian harus dapat mengakses aplikasi dengan menggunakan nama DNS yang disediakan sebagai output.

Pengembang aplikasi, AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan
Hapus sumber daya yang dibuat melalui AWS Management Console.

Jika Anda menggunakan opsi 1 (AWS Management Console) untuk menerapkan tumpukan aplikasi, ikuti langkah-langkah berikut saat Anda siap menghapus sumber daya yang Anda buat:

  1. Buka CloudFormation konsol di https://console.aws.amazon.com/cloudformation/.

  2. Pilih tumpukan yang Anda buat, lalu pilih Hapus.

  3. Buka konsol Amazon ECR di https://console.aws.amazon.com/ecr/repositori.

  4. Pilih repositori yang Anda buat, lalu pilih Hapus.

Pengembang aplikasi, AWS DevOps
Hapus sumber daya yang dibuat oleh AWS Copilot.

Jika Anda menggunakan opsi 2 (AWS Copilot CLI) untuk menyebarkan tumpukan aplikasi, jalankan perintah berikut dari direktori root proyek Anda saat Anda siap untuk menghapus sumber daya yang Anda buat:

copilot app delete
Pengembang aplikasi, AWS DevOps

Sumber daya terkait