本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon EC2 Linux 執行個體上執行 ASP.NET Core Web API Docker 容器
Vijai Anand Ramalingam 和 Sreelaxmi Pai,Amazon Web Services
Summary
此模式適用於開始在 Amazon Web Services (AWS) 雲端上容器化其應用程式的人員。當您開始在雲端上容器化應用程式時,通常不會設定容器協同運作平台。此模式可協助您在 AWS 上快速設定基礎設施,以測試容器化應用程式,而不需要複雜的容器協同運作基礎設施。
現代化旅程的第一步是轉換應用程式。如果是舊版 .NET Framework 應用程式,您必須先將執行時間變更為 ASP.NET Core。然後執行下列動作:
- 建立 Docker 容器映像 
- 使用建置的映像執行 Docker 容器 
- 在任何容器協同運作平台上部署應用程式之前,請先驗證應用程式,例如 Amazon Elastic Container Service (Amazon ECS) 或 Amazon Elastic Kubernetes Service (Amazon EKS)。 
此模式涵蓋 Amazon Elastic Compute Cloud (Amazon EC2) Linux 執行個體上現代應用程式開發的建置、執行和驗證層面。
先決條件和限制
先決條件
- AnAWS Identity and Access Management (IAM) 角色具有足夠的存取權,可為此模式建立 AWS 資源 
- Visual Studio Community 2022 - 或更新版本下載並安裝 
- 將 .NET Framework 專案現代化為 ASP.NET Core 
- GitHub 儲存庫 
產品版本
- Visual Studio Community 2022 或更新版本 
架構
目標架構
此模式使用 AWS CloudFormation 範本

- 透過 Session Manager 存取 Linux 執行個體 
工具
AWS 服務
- AWS Command Line Interface – AWS Command Line Interface (AWS CLI) 是一種開放原始碼工具,可透過命令列 shell 中的命令與 AWS 服務互動。透過最少的組態,您可以執行 AWS CLI 命令,以實作相當於瀏覽器型 AWS 管理主控台所提供功能的功能。 
- AWS 管理主控台 – AWS 管理主控台是一種 Web 應用程式,包含並參考各種用於管理 AWS 資源的服務主控台。若是首次登入,這時主控台頁面將會顯示。首頁提供每個服務主控台的存取權,並提供單一位置來存取執行 AWS 相關任務所需的資訊。 
- AWS Systems Manager Session Manager – Session Manager 是全受管 AWS Systems Manager 功能。使用 Session Manager,您可以管理 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。Session Manager 提供安全且可稽核的節點管理,無需開啟傳入連接埠、維護堡壘主機或管理 SSH 金鑰。 
其他工具
- Visual Studio 2022 - – Visual Studio 2022 是整合式開發環境 (IDE)。 
- Docker - – Docker 是一組平台即服務 (PaaS) 產品,可在作業系統層級使用虛擬化在容器中交付軟體。 
Code
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"]
史詩
| 任務 | 描述 | 所需的技能 | 
|---|---|---|
| 使用 Visual Studio 建立範例 ASP.NET Core Web API。 | 若要建立範例 ASP.NET Core Web API,請執行下列動作: 
 | 應用程式開發人員 | 
| 建立 Dockerfile。 | 若要建立 Dockerfile,請執行下列其中一項操作: 
 若要將變更推送到您的 GitHub 儲存庫,請執行下列命令。 
 | 應用程式開發人員 | 
| 任務 | 描述 | 所需的技能 | 
|---|---|---|
| 設定 基礎設施。 | 啟動 AWS CloudFormation 範本 
 若要進一步了解如何使用 Session Manager 存取私有 Amazon EC2 執行個體,而不需要堡壘主機,請參閱無堡壘世界 | 應用程式開發人員、AWS 管理員、AWS DevOps | 
| 登入 Amazon EC2 Linux 執行個體。 | 若要連線至私有子網路中的 Amazon EC2 Linux 執行個體,請執行下列動作: 
 | 應用程式開發人員 | 
| 安裝並啟動 Docker。 | 若要在 Amazon EC2 Linux 執行個體中安裝和啟動 Docker,請執行下列動作: 
 | 應用程式開發人員、AWS 管理員、AWS DevOps | 
| 安裝 Git 並複製儲存庫。 | 若要在 Amazon EC2 Linux 執行個體上安裝 Git,並從 GitHub 複製儲存庫,請執行下列動作。 
 | 應用程式開發人員、AWS 管理員、AWS DevOps | 
| 建置並執行 Docker 容器。 | 若要建置 Docker 映像並在 Amazon EC2 Linux 執行個體內執行容器,請執行下列動作: 
 | 應用程式開發人員、AWS 管理員、AWS DevOps | 
| 任務 | 描述 | 所需的技能 | 
|---|---|---|
| 使用 curl 命令測試 Web API。 | 若要測試 Web API,請執行下列命令。 
 驗證 API 回應。 注意您可以在本機執行每個端點時,從 Swagger 取得每個端點的 curl 命令。 | 應用程式開發人員 | 
| 任務 | 描述 | 所需的技能 | 
|---|---|---|
| 刪除所有資源。 | 刪除堆疊以移除所有資源。這可確保您不需要為未使用的任何服務付費。 | AWS 管理員、AWS DevOps |