Jalankan wadah API Docker web ASP.NET Core pada instance Amazon Linux EC2 - AWS Prescriptive Guidance

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

Jalankan wadah API Docker web ASP.NET Core pada instance Amazon Linux EC2

Vijai Anand Ramalingam dan Sreelaxmi Pai, Amazon Web Services

Ringkasan

Pola ini diperuntukkan bagi orang-orang yang mulai mengkontainerisasi aplikasi mereka di Amazon Web Services (AWS) Cloud. Saat Anda mulai membuat container aplikasi di cloud, biasanya tidak ada platform orkestrasi kontainer yang disiapkan. Pola ini membantu Anda menyiapkan infrastruktur AWS dengan cepat untuk menguji aplikasi kontainer Anda tanpa memerlukan infrastruktur orkestrasi kontainer yang rumit.

Langkah pertama dalam perjalanan modernisasi adalah mengubah aplikasi. Jika ini adalah aplikasi .NET Framework lama, Anda harus terlebih dahulu mengubah runtime menjadi ASP.NET Core. Kemudian, lakukan hal berikut:

  • Buat gambar kontainer Docker

  • Jalankan wadah Docker menggunakan gambar yang dibangun

  • Validasi aplikasi sebelum menerapkannya pada platform orkestrasi kontainer apa pun, seperti Amazon Elastic Container Service (Amazon ECS) Service Elastic Container (Amazon ECS) atau Amazon Elastic Kubernetes Service (Amazon EKS). 

Pola ini mencakup aspek build, run, dan validasi pengembangan aplikasi modern pada instance Amazon Elastic Compute Cloud EC2 (Amazon) Linux.

Prasyarat dan batasan

Prasyarat

Versi produk

  • Komunitas Visual Studio 2022 atau yang lebih baru

Arsitektur

Arsitektur target

Pola ini menggunakan CloudFormation template AWS untuk membuat arsitektur yang sangat tersedia yang ditunjukkan pada diagram berikut. Instans Amazon EC2 Linux diluncurkan di subnet pribadi. AWS Systems Manager Session Manager digunakan untuk mengakses instans Amazon EC2 Linux pribadi dan untuk menguji API yang berjalan di container Docker.

Pengguna mengakses instance Amazon EC2 Linux dan menguji API yang berjalan di container Docker.
  1. Akses ke instance Linux melalui Session Manager

Alat

Layanan AWS

  • AWS Command Line Interface — AWS Command Line Interface (AWS CLI) adalah alat open source untuk berinteraksi dengan layanan AWS melalui perintah di shell baris perintah Anda. Dengan konfigurasi minimal, Anda dapat menjalankan perintah AWS CLI yang menerapkan fungsionalitas yang setara dengan yang disediakan oleh AWS Management Console berbasis browser.

  • AWS Management Console — AWS Management Console adalah aplikasi web yang terdiri dan mengacu pada kumpulan konsol layanan yang luas untuk mengelola sumber daya AWS. Saat pertama kali masuk, Anda akan melihat halaman beranda konsol. Halaman beranda menyediakan akses ke setiap konsol layanan dan menawarkan satu tempat untuk mengakses informasi yang Anda perlukan untuk melakukan tugas terkait AWS Anda.

  • AWS Systems Manager Session Manager — Session Manager adalah kemampuan AWS Systems Manager yang dikelola sepenuhnya. Dengan Session Manager, Anda dapat mengelola instans Amazon Elastic Compute Cloud (Amazon EC2). Session Manager menyediakan manajemen node yang aman dan dapat diaudit tanpa perlu membuka port masuk, memelihara host bastion, atau mengelola kunci SSH.

Alat lainnya

  • Visual Studio 2022 — Visual Studio 2022 adalah lingkungan pengembangan terintegrasi (IDE).

  • Docker adalah seperangkat produk platform as a service (PaaS) yang menggunakan virtualisasi pada tingkat sistem operasi untuk mengirimkan perangkat lunak dalam wadah.

Kode

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build WORKDIR /src COPY ["DemoNetCoreWebAPI/DemoNetCoreWebAPI.csproj", "DemoNetCoreWebAPI/"] RUN dotnet restore "DemoNetCoreWebAPI/DemoNetCoreWebAPI.csproj" COPY . . WORKDIR "/src/DemoNetCoreWebAPI" RUN dotnet build "DemoNetCoreWebAPI.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "DemoNetCoreWebAPI.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "DemoNetCoreWebAPI.dll"]

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Buat contoh ASP.NET Core web API menggunakan Visual Studio.

Untuk membuat contoh ASP.NET Core web API, lakukan hal berikut:

  1. Buka Visual Studio 2022.

  2. Pilih Buat proyek baru.

  3. Pilih template proyek ASP.NET Core Web API, dan pilih Berikutnya.

  4. Untuk nama proyek, masukkan DemoNetCoreWebAPI, dan pilih Berikutnya.

  5. Pilih Buat.

  6. Untuk menjalankan proyek secara lokal, tekan F5.

  7. Verifikasi bahwa titik akhir WeatherForecastAPI default mengembalikan hasil menggunakan Swagger.

  8. Buka prompt perintah, arahkan ke folder proyek.csproj, dan jalankan perintah berikut untuk mendorong API web baru ke repositori Anda. GitHub  

    git add --all git commit -m "Initial Version" git push
Pengembang aplikasi

Buat Dockerfile.

Untuk membuat Dockerfile, lakukan salah satu hal berikut:

  • Buat Dockerfile secara manual menggunakan contoh Dockerfile di bagian Kode. Berdasarkan persyaratan, pilih gambar dasar.NET yang sesuai. Untuk informasi tentang gambar.NET dan ASP.NET Core terkait, lihat Docker hub

  • Buat Dockerfile menggunakan Visual Studio dan Docker Desktop. Di explorer solusi, klik kanan pada proyek, pilih Add -> Docker Support. Untuk OS Target, pilih Linux. Pastikan bahwa Dockerfile baru berada di jalur yang sama dengan file solusi (.sln). 

Untuk mendorong perubahan ke GitHub repositori Anda, jalankan perintah berikut.

git add --all git commit -m "Dockerfile added" git push
Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Menyiapkan infrastruktur.

Luncurkan CloudFormation template AWS untuk membuat infrastruktur, yang mencakup hal-hal berikut: 

  • Virtual private cloud (VPC), menggunakan AWS VPC Quick Start, dengan dua subnet publik dan dua subnet pribadi yang mencakup dua Availability Zone.

  • Peran IAM yang diperlukan untuk mengaktifkan AWS Systems Manager.

  • Di salah satu subnet pribadi, contoh demo Amazon Linux 2 dengan Agen SSM terbaru. Meskipun instans ini tidak memiliki konektivitas langsung dari internet, instans ini dapat diakses dengan aman menggunakan AWS Systems Manager Session Manager tanpa memerlukan host bastion.

    catatan

    Amazon Linux 2 mendekati akhir dukungan. Untuk informasi selengkapnya, lihat Amazon Linux 2 FAQs.

Untuk mempelajari selengkapnya tentang mengakses EC2 instans Amazon pribadi menggunakan Session Manager tanpa memerlukan host bastion, lihat postingan blog Menuju dunia tanpa benteng.

Pengembang aplikasi, administrator AWS, AWS DevOps

Masuk ke instans Amazon EC2 Linux.

Untuk terhubung ke instance Amazon EC2 Linux di subnet pribadi, lakukan hal berikut:

  1. Buka EC2 konsol Amazon.       

  2. Di panel navigasi, pilih Instans.

  3. Pilih instans demo Amazon Linux 2, dan pilih Connect.

    catatan

    Amazon Linux 2 mendekati akhir dukungan. Untuk informasi selengkapnya, lihat Amazon Linux 2 FAQs.

  4. Pilih Session Manager.

  5. Pilih Connect untuk membuka jendela terminal baru.

  6. Jalankan perintah berikut.

     sudo su
Pengembang aplikasi

Instal dan mulai Docker.

Untuk menginstal dan memulai Docker di instance Amazon EC2 Linux, lakukan hal berikut:

  1. Untuk menginstal Docker, jalankan perintah berikut.

    yum install -y docker
  2. Untuk memulai layanan Docker, jalankan perintah berikut.

     service docker start
  3. Untuk memverifikasi instalasi Docker, jalankan perintah berikut.

    docker info
Pengembang aplikasi, administrator AWS, AWS DevOps

Instal Git dan kloning repositori.

Untuk menginstal Git pada instance Amazon EC2 Linux dan mengkloning repositori dari GitHub, lakukan hal berikut.

  1. Untuk menginstal Git, jalankan perintah berikut.

    yum install git -y
  2. Untuk mengkloning repositori, jalankan perintah berikut.

    git clone https://github.com/<username>/<repo-name>.git
  3. Untuk menavigasi ke Dockerfile, jalankan perintah berikut.

    cd <repo-name>/DemoNetCoreWebAPI/
Pengembang aplikasi, administrator AWS, AWS DevOps

Bangun dan jalankan wadah Docker.

Untuk membuat image Docker dan menjalankan container di dalam instance Amazon EC2 Linux, lakukan hal berikut:

  1. Untuk membuat image Docker, jalankan perintah berikut.

    docker build -t aspnetcorewebapiimage -f Dockerfile .
  2. Untuk melihat semua gambar Docker, jalankan perintah berikut.

    docker images
  3. Untuk membuat dan menjalankan wadah, jalankan perintah berikut.

    docker run -d -p 80:80 --name aspnetcorewebapicontainer aspnetcorewebapiimage
Pengembang aplikasi, administrator AWS, AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Uji API web menggunakan perintah curl.

Untuk menguji API web, jalankan perintah berikut.

curl -X GET "http://localhost/WeatherForecast" -H "accept: text/plain"

Verifikasi respons API.

catatan

Anda bisa mendapatkan perintah curl untuk setiap titik akhir dari Swagger saat Anda menjalankannya secara lokal.

Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Hapus semua sumber daya.

Hapus tumpukan untuk menghapus semua sumber daya. Ini memastikan bahwa Anda tidak dikenakan biaya untuk layanan apa pun yang tidak Anda gunakan.

Administrator AWS, AWS DevOps

Sumber daya terkait