在這篇文章中,我將引導您完成在 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中文網其他相關文章!