在这篇文章中,我将引导您完成在 AWS 上部署入侵检测系统的过程
注意:此项目假设您已经拥有一个活跃的 AWS 账户,并为代码编辑器配置了您的账户凭证(访问密钥),并且此项目将在您的控制台中产生一些费用
该项目的目标如下:
本节将展示从头开始创建此项目所涉及的步骤
在项目目录中创建一个 Dockerfile 以打包 Flask 应用。
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 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
标记本地 Docker 镜像以匹配 ECR 存储库,然后推送它:
注意:确保这是您帐户各自的区域和帐户 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 选项卡并创建 Internet 网关。创建 IGW 后,将其附加到您的 VPC
注意:ECS 集群将部署在私有子网中,Application Load Balancer 将位于公有子网中,并将访问私有子网中的 ECS 集群
这将使 ECS 集群能够访问弹性容器注册表 (ECR)。
注意:将为 S3、ECR、DOCKER 和 CloudWatch 创建四个端点。
*现在创建其余端点,并更改 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,然后选择私有子网
在负载均衡器部分中,选择负载均衡器类型作为应用程序负载均衡器,然后选择使用现有负载均衡器。这将显示在前面部分中创建的 ALB。选择它。
滚动你就会看到,听众。选择使用现有侦听器并选择那里的端口 80 侦听器,在目标组下执行相同操作,选择我们创建的现有目标组。
接下来是服务自动缩放。这是可选的,但对于必须根据定义的指标扩展到应用程序来说是一个很好的补充。启用此选项并指定要运行的任务的最小和最大数量。接下来添加扩展策略。对于此项目,Target 跟踪策略与 ALBrequestCountPerTarget ECS 服务指标一起使用,目标值为 50,横向扩展冷却时间和横向收缩冷却时间为 60 秒
创建服务。
创建服务后,将创建所需数量的任务。
如果遵循上述说明,您应该拥有一个功能齐全的网络应用程序,要访问它,请转到您的负载均衡器,复制 DNS 名称并粘贴到您的浏览器中。但这很乏味,而且没有使用最佳实践。理想情况下,ALB 或 CloudFront 前面应该有一个 Web 应用程序防火墙,但为了简单起见,我们将仅使用 Route 53。
注意:本部分要求您拥有 AWS 或任何其他提供商的注册域名
这假设您在 AWS 拥有域名
如果您按照步骤进行操作,您应该拥有一个可通过您的域名访问的功能齐全的网络应用程序。
这是一个非常令人兴奋的项目,因为我与 VPC、私有和公有子网、VPC 端点、ECS 服务、ECR、目标组、安全组和应用程序负载均衡器一起工作,因为它们一起创建了这个网络 -应用程序。
以上是使用 CI/CD 将基于 Flask 的入侵检测系统部署到 AWS ECS的详细内容。更多信息请关注PHP中文网其他相关文章!