기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
를 실행합니다ASP.NET Amazon EC2 Linux 인스턴스의 코어 웹 API Docker 컨테이너
작성자: Vijai Anand Ramalingam(AWS) 및 Sreelaxmi Pai(AWS)
환경: PoC 또는 파일럿 | 기술: 컨테이너 및 마이크로서비스, 웹 및 모바일 앱 | 워크로드: Microsoft |
AWS 서비스: Amazon EC2, Elastic Load Balancing(ELB) |
요약
이 패턴은 Amazon Web Services(AWS) 클라우드에서 애플리케이션을 컨테이너화하기 시작하는 사용자를 위한 것입니다. 클라우드에서 앱을 컨테이너화하기 시작하면 일반적으로 컨테이너 오케스트레이션 플랫폼이 설정되지 않습니다. 이 패턴을 사용하면 정교한 컨테이너 오케스트레이션 인프라 없이 컨테이너화된 애플리케이션을 테스트AWS할 수 있도록 인프라를 빠르게 설정할 수 있습니다.
현대화 여정의 첫 번째 단계는 애플리케이션을 혁신하는 것입니다. 레거시 인 경우.NET 프레임워크 애플리케이션은 먼저 런타임을 로 변경해야 합니다ASP.NET 코어. 뒤이어 다음과 같이 하십시오.
Docker 컨테이너 이미지 생성
해당 이미지에서 Docker 컨테이너를 실행합니다.
Amazon Elastic Container Service(Amazon ECS) 또는 Amazon Elastic Kubernetes Service(Amazon )와 같은 컨테이너 오케스트레이션 플랫폼에 애플리케이션을 배포하기 전에 애플리케이션을 검증합니다EKS.
이 패턴은 Amazon Elastic Compute Cloud(AmazonEC2) Linux 인스턴스에서 최신 애플리케이션 개발의 빌드, 실행 및 검증 측면을 다룹니다.
사전 조건 및 제한 사항
사전 조건
이 패턴에 대한 AWS 리소스를 생성할 수 있는 충분한 액세스 권한이 있는AWS 자격 증명 및 액세스 관리(IAM) 역할
비주얼 스튜디오 커뮤니티 2022
이상 다운로드 및 설치 A .NET 프레임워크 프로젝트가 로 현대화되었습니다ASP.NET 코어
GitHub 리포지토리
제품 버전
Visual Studio Community 2022 이상
아키텍처
대상 아키텍처
이 패턴은 AWS CloudFormation 템플릿을
세션 관리자를 통해 Linux 인스턴스에 액세스할 수 있습니다.
도구
AWS 서비스
AWS 명령줄 인터페이스 -AWS 명령줄 인터페이스(AWS CLI)는 명령줄 쉘의 명령을 통해 AWS 서비스와 상호 작용하기 위한 오픈 소스 도구입니다. 최소한의 구성으로 브라우저 기반 AWS Management Console에서 제공하는 것과 동등한 기능을 구현하는 AWS CLI 명령을 실행할 수 있습니다.
AWS 관리 콘솔 - AWS 관리 콘솔은 AWS 리소스 관리를 위한 광범위한 서비스 콘솔 모음을 구성하고 참조하는 웹 애플리케이션입니다. 처음 로그인하면 콘솔 홈 페이지가 나타납니다. 홈 페이지는 각 서비스 콘솔에 대한 액세스를 제공하고 AWS 관련 작업을 수행하는 데 필요한 정보에 액세스할 수 있는 단일 위치를 제공합니다.
AWS Systems Manager Session Manager – Session Manager는 완전 관리형 AWS Systems Manager 기능입니다. Session Manager를 사용하면 Amazon Elastic Compute Cloud(AmazonEC2) 인스턴스를 관리할 수 있습니다. Session Manager는 인바운드 포트를 열거나, Bastion 호스트를 유지 관리하거나, SSH 키를 관리할 필요 없이 안전하고 감사 가능한 노드 관리를 제공합니다.
기타 도구
Visual Studio 2022
– Visual Studio 2022는 통합 개발 환경입니다(IDE). Docker
— Docker는 운영 체제 수준의 가상화를 사용하여 컨테이너에 소프트웨어를 제공하는 서비스형 플랫폼 (PaaS) 제품 세트입니다.
코드
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"]
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
예제를 생성합니다ASP.NET Visual StudioAPI를 사용하는 코어 웹. | 예제를 생성하려면 ASP.NET 코어 웹 API에서 다음을 수행합니다.
| 앱 개발자 |
Dockerfile을 생성합니다. | Docker파일을 생성하려면 다음 중 하나를 수행합니다.
변경 사항을 GitHub 리포지토리로 푸시하려면 다음 명령을 실행합니다.
| 앱 개발자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
인프라를 설정합니다. | AWS CloudFormation 템플릿을
Bastion 호스트 없이 Session Manager를 사용하여 프라이빗 Amazon EC2 인스턴스에 액세스하는 방법에 대한 자세한 내용은 Bastion이 없는 세계 | 앱 개발자, 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 명령을 API 사용하여 웹을 테스트합니다. | 웹 를 테스트하려면 다음 명령을 API실행합니다.
API 응답을 확인합니다. 참고: 로컬에서 실행하는 경우 Swagger에서 각 엔드포인트에 대한 curl 명령을 가져올 수 있습니다. | 앱 개발자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
모든 리소스를 삭제합니다. | 스택을 삭제하여 모든 리소스를 제거합니다. 이렇게 하면 사용하지 않는 서비스에 대해 요금이 부과되지 않습니다. | AWS 관리자, AWS DevOps |