이번 게시물에서는 AWS에 침입 탐지 시스템을 배포하는 과정을 안내하겠습니다
참고: 이 프로젝트에서는 이미 활성 AWS 계정이 있고 코드 편집기에 계정 자격 증명(액세스 키)을 구성했다고 가정하며 이 프로젝트로 인해 콘솔에서 일부 비용이 발생하게 됩니다.
본 프로젝트의 목적은 다음과 같습니다.
이 섹션에서는 이 프로젝트를 처음부터 만드는 단계를 보여줍니다
Flask 앱을 패키징하려면 프로젝트 디렉터리에 Dockerfile을 생성하세요.
FROM python:3.12 #set the working dir WORKDIR /usr/src/app #copy the requirements and install dependencies COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # Copy all the files to the container COPY . . #Expose the port EXPOSE 5000 #run the app CMD ["gunicorn","-b","0.0.0.0:5000", "app:app"]
Docker 이미지가 의도한 대로 작동하는지 확인하려면 로컬에서 Docker 이미지를 빌드하고 테스트하는 것이 중요합니다
docker build -t image-name . docker run -p 5000:5000 image-name
ECR로 Docker를 인증하려면 다음 명령을 실행하세요(your-region 및 your-account-id 교체).
aws ecr get-login-password --region your-region | docker login --username AWS --password-stdin your-account-id.dkr.ecr.your-region.amazonaws.com
ECR 저장소와 일치하도록 로컬 Docker 이미지에 태그를 지정한 후 푸시하세요.
참고: 계정의 해당 지역 및 계정 ID인지 확인하세요
docker tag image-name:latest your-account-id.dkr.ecr.your-region.amazonaws.com/image-name:latest docker push your-account-id.dkr.ecr.your-region.amazonaws.com/image-name:latest
ECR 저장소는 이미지가 성공적으로 푸시된 것과 같아야 합니다
모든 리소스가 배치되는 지역이므로 지역을 기록해 두세요
VPC 콘솔에서 Intergate Gateway 탭을 선택하고 인터넷 게이트웨이를 생성합니다. IGW가 생성되면 이를 VPC에 연결합니다
참고: ECS 클러스터는 프라이빗 서브넷에 배포되고 Application Load Balancer는 퍼블릭 서브넷에 있으며 프라이빗 서브넷의 ECS 클러스터에 액세스합니다.
이렇게 하면 ECS 클러스터가 ECR(Elastic Container Registry)에 액세스할 수 있습니다.
참고: S3, ECR, DOCKER 및 CloudWatch용으로 4개의 엔드포인트가 만들어집니다.
*이제 docker com.amazonaws.us-east-1.ecr.dkr, CloudWatch 로그 com.amazonaws.us-east-1.logs 및 S3 com.amazonaws에 대한 서비스를 변경하여 나머지 엔드포인트를 생성합니다. us-east-1.s3을 각각 선택하고 해당 변경 사항을 정확히 예상하는 다른 모든 항목을 따르세요.
이것은 ALB로서 매우 중요한 단계입니다
트래픽을 개인 ECS 서비스로 라우팅합니다.
먼저 ALB에 대한 보안 그룹을 생성해야 합니다.
ECS 콘솔로 이동하여 작업 정의를 선택합니다.
환경 변수 추가
이는 이 프로젝트의 CI/CD 섹션에서 중요합니다. 하지만 지금은 생략하겠습니다.
나머지 섹션을 건너뛰고 작업 정의를 생성하세요
ECS 서비스를 위한 보안 그룹 생성
Fargate 서비스 구성을 지정하는 새 페이지로 연결됩니다.
실행하려는 작업 수를 선택하세요. 이 프로젝트에는 하나면 충분합니다.
네트워킹 탭으로 스크롤하여 생성된 VPC를 선택한 다음 프라이빗 서브넷을 선택합니다
로드 밸런서 섹션에서 로드 밸런서 유형을 Application Load Balancer로 선택하고 기존 로드 밸런서 사용을 선택합니다. 그러면 이전 섹션에서 생성된 ALB가 나타납니다. 선택하세요.
스크롤하시면 보실 수 있습니다, 청취자님. 기존 리스너 사용을 선택하고 거기에 있는 포트 80 리스너를 선택하고 대상 그룹 아래에서 동일한 작업을 수행하여 우리가 만든 기존 대상 그룹을 선택합니다.
다음은 Service Auto Scaling입니다. 이는 선택 사항이지만 정의된 메트릭을 기반으로 앱을 확장해야 하는 경우 좋은 추가 기능입니다. 이 기능을 활성화하고 실행하려는 최소 및 최대 작업 수를 지정하세요. 다음으로 조정 정책을 추가합니다. 이 프로젝트에서는 대상 추적 정책이 ALBrequestCountPerTarget ECS 서비스 지표와 함께 사용되며 대상 값은 50, 확장 휴지 기간 및 축소 휴지 기간은 60초입니다
서비스를 만듭니다.
서비스가 생성되면 원하는 개수의 작업이 생성됩니다.
위 지침을 따랐다면 완전히 작동하는 웹 앱이 있어야 합니다. 액세스하려면 로드 밸런서로 이동하고 DNS 이름을 복사하여 브라우저에 붙여넣으세요. 그러나 이는 지루하고 모범 사례를 사용하지 않는 것입니다. 이상적으로는 ALB 또는 CloudFront 앞에 웹 애플리케이션 방화벽이 있어야 하지만 단순화를 위해 Route 53만 사용하겠습니다.
참고: 이 섹션에서는 AWS 또는 다른 공급자에 등록된 도메인 이름이 필요합니다
AWS에 도메인 이름이 있다고 가정합니다
T 단계를 따랐다면 도메인 이름을 통해 액세스할 수 있고 완벽하게 작동하는 웹 앱을 갖게 될 것입니다.
VPC, 프라이빗 및 퍼블릭 서브넷, VPC 엔드포인트, ECS 서비스, ECR, 대상 그룹, 보안 그룹 및 Application Load Balancer가 모두 함께 모여 이 웹을 생성하면서 작업한 매우 흥미로운 프로젝트였습니다. 앱.
위 내용은 CI/CD를 사용하여 Flask 기반 침입 탐지 시스템을 AWS ECS에 배포의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!