

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
<a name="run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance"></a>

*Vijai Anand Ramalingam dan Sreelaxmi Pai, Amazon Web Services*

## Ringkasan
<a name="run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance-summary"></a>

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
<a name="run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance-prereqs"></a>

**Prasyarat**
+ [Akun Amazon Web Services (AWS)](https://aws.amazon.com/account/) yang aktif
+ Peran [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) dengan akses yang memadai untuk membuat sumber daya AWS untuk pola ini 
+ [Visual Studio Community 2022](https://visualstudio.microsoft.com/downloads/) atau yang lebih baru diunduh dan diinstal
+ Proyek .NET Framework dimodernisasi menjadi ASP.NET Core
+ Sebuah GitHub repositori

**Versi produk**
+ Komunitas Visual Studio 2022 atau yang lebih baru

## Arsitektur
<a name="run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance-architecture"></a>

**Arsitektur target**

Pola ini menggunakan [ CloudFormation template AWS](https://console.aws.amazon.com/cloudformation/home?region=us-east-2#/stacks/new?stackName=SSM-SSH-Demo&templateURL=https://aws-quickstart.s3.amazonaws.com/quickstart-examples/samples/session-manager-ssh/session-manager-example.yaml) 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.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/512e61b2-10ba-43be-bbd8-2bdc597c3de3/images/9c5206f6-32b1-47be-9037-360c0bff713c.png)


1. Akses ke instance Linux melalui Session Manager

## Alat
<a name="run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance-tools"></a>

**Layanan AWS**
+ [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) — 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](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/learn-whats-new.html) — 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](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) — 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](https://visualstudio.microsoft.com/downloads/) — Visual Studio 2022 adalah lingkungan pengembangan terintegrasi (IDE).
+ [Docker](https://www.docker.com/) 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
<a name="run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance-epics"></a>

### Kembangkan API web ASP.NET Core
<a name="develop-the-asp-net-core-web-api"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat contoh ASP.NET Core web API menggunakan Visual Studio. | Untuk membuat contoh ASP.NET Core web API, lakukan hal berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.html) | Pengembang aplikasi | 
| Buat Dockerfile. | Untuk membuat Dockerfile, lakukan salah satu hal berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.html)Untuk mendorong perubahan ke GitHub repositori Anda, jalankan perintah berikut.<pre>git add --all<br />git commit -m "Dockerfile added"<br />git push</pre> | Pengembang aplikasi | 

### Siapkan instans Amazon EC2 Linux
<a name="set-up-the-amazon-ec2-linux-instance"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Menyiapkan infrastruktur. | Luncurkan [ CloudFormation template AWS](https://console.aws.amazon.com/cloudformation/home?region=us-east-2#/stacks/new?stackName=SSM-SSH-Demo&templateURL=https://aws-quickstart.s3.amazonaws.com/quickstart-examples/samples/session-manager-ssh/session-manager-example.yaml) untuk membuat infrastruktur, yang mencakup hal-hal berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.html)Untuk mempelajari selengkapnya tentang mengakses EC2 instans Amazon pribadi menggunakan Session Manager tanpa memerlukan host bastion, lihat postingan blog [Menuju dunia tanpa benteng](https://aws.amazon.com/blogs/infrastructure-and-automation/toward-a-bastion-less-world/). | 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.html) | Pengembang aplikasi | 
| Instal dan mulai Docker. | Untuk menginstal dan memulai Docker di instance Amazon EC2 Linux, lakukan hal berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.html) | 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.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.html) | 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.html) | Pengembang aplikasi, administrator AWS, AWS DevOps | 

### Uji API web
<a name="test-the-web-api"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Uji API web menggunakan perintah curl. | Untuk menguji API web, jalankan perintah berikut.<pre>curl -X GET "http://localhost/WeatherForecast" -H  "accept: text/plain"</pre>Verifikasi respons API.Anda bisa mendapatkan perintah curl untuk setiap titik akhir dari Swagger saat Anda menjalankannya secara lokal. | Pengembang aplikasi | 

### Pembersihan sumber daya
<a name="clean-up-resources"></a>


| Tugas | Deskripsi | Keterampilan 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
<a name="run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance-resources"></a>
+ [Connect ke instans Linux Anda dari Windows menggunakan PuTTY](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html)
+ [Buat API web dengan ASP.NET Core](https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-5.0&tabs=visual-studio)
+ [Menuju dunia tanpa benteng](https://aws.amazon.com/blogs/infrastructure-and-automation/toward-a-bastion-less-world/)