>在本文中,我們將探討AWS CloudFormation如何簡化設置和管理雲基礎架構。您可以在文件中寫下您的要求,而不是手動創建諸如服務器或數據庫之類的資源,而CloudFormation為您帶來了繁重的提升。這種方法被稱為基礎架構(IAC),節省了時間,減少錯誤並確保一切一致。
>>我們還將研究Docker和Github的動作如何適合該過程。 Docker可以輕鬆打包和運行您的應用程序,而GitHub Actions則可以自動化測試和部署等任務。這些工具與雲形式一起創建了一個強大的工作流程,用於在雲中構建和部署應用程序。
學習目標> > data Science Blogathon的一部分。 目錄的目錄>什麼是AWS雲形成?
>示例項目示例實現:一個動手示例示例> dockerize dockerized application
>
開始雲形成,我們需要一個示例項目才能在AWS中部署。我已經使用lang-chain並打開AI GPT-4創建了一個項目。讓我們討論該項目,然後我們將使用Cloud Formation中的AWS部署該項目。
。> github代碼鏈接: https://github.com/harshitha-gh/cloudformation
在軟件開發的世界中,文檔在確保代碼庫可理解和可維護方面起著重要作用。但是,創建詳細的文檔通常是一項耗時且無聊的任務。但是我們是技術人員,我們希望在所有事物中自動化。因此,要使用CloudFormation在AWS中部署一個項目,我使用AI(Lang-Chain和Open AI GPT-4)開發了一個自動化項目來創建文檔生成項目 - 一種創新的解決方案,它利用AI自動化Python代碼的文檔過程。這是我們如何構建此工具及其旨在創建的影響的細分。為了創建這個項目,我們正在遵循幾個步驟。
>>在開始一個新項目之前,我們必須創建一個Python環境來安裝所有必需的軟件包。這將有助於我們維護必要的軟件包。
>我寫了一個函數來解析輸入文件,該文件通常將python文件作為輸入並打印所有函數的名稱。
從代碼生成文檔
>在此提示的幫助下,Doc Generator函數獲取解析的詳細信息,並為每個功能生成完整的,可讀的解釋。
>prompt_template = PromptTemplate( input_variables=["function_name", "arguments", "docstring"], template=( "Generate detailed documentation for the following Python function:\n\n" "Function Name: {function_name}\n" "Arguments: {arguments}\n" "Docstring: {docstring}\n\n" "Provide a clear description of what the function does, its parameters, and the return value." ) )#import csv
為使該工具用戶友好,我構建了一個燒瓶API,用戶可以在其中上傳Python文件。 API解析文件,使用GPT-4生成文檔,並以JSON格式返回。
> dockerizing應用程序
>要部署到AWS並使用我們的應用程序,我們需要使用Docker容器化應用程序,然後使用GitHub操作來自動化部署過程。我們將使用AWS CloudFormation進行AWS中的自動化。在服務方面,我們將使用彈性容器註冊表存儲我們的容器和EC2來部署我們的應用程序。讓我們逐步查看此。
prompt_template = PromptTemplate( input_variables=["function_name", "arguments", "docstring"], template=( "Generate detailed documentation for the following Python function:\n\n" "Function Name: {function_name}\n" "Arguments: {arguments}\n" "Docstring: {docstring}\n\n" "Provide a clear description of what the function does, its parameters, and the return value." ) )#import csv
>創建Docker文件後,我們將創建一個Docker組成的文件,該文件將旋轉容器。
# Use the official Python 3.11-slim image as the base image FROM python:3.11-slim # Set environment variables to prevent Python from writing .pyc files and buffering output ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 # Set the working directory inside the container WORKDIR /app # Install system dependencies required for Python packages and clean up apt cache afterwards RUN apt-get update && apt-get install -y --no-install-recommends \ gcc \ libffi-dev \ libpq-dev \ python3-dev \ build-essential \ && rm -rf /var/lib/apt/lists/* # Copy the requirements file to the working directory COPY requirements.txt /app/ # Upgrade pip and install Python dependencies without cache RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir -r requirements.txt # Copy the entire application code to the working directory COPY . /app/ # Expose port 5000 for the application EXPOSE 5000 # Run the application using Python CMD ["python", "app.py"]#import csv
來對此進行測試
version: '3.8' services: app: build: context: . dockerfile: Dockerfile ports: - "5000:5000" volumes: - .:/app environment: - PYTHONDONTWRITEBYTECODE=1 - PYTHONUNBUFFERED=1 command: ["python", "app.py"]#import csv
>為雲形成堆棧創建AWS服務
我創建一個ECR存儲庫。除此之外
>
將雲形式視為編寫簡單的說明手冊,以供AWS遵循。本手冊稱為“模板”,告訴AWS:>
啟動項目所需的服務器。
>>從ECR存儲存儲庫中摘取項目的容器圖像。
>
我們正在定義單個ECR資源,該資源是存儲Docker映像的存儲庫。SSH訪問的
端口22。docker-compose up –build#import csv
端口80。
端口5000用於後端應用程序訪問。 >上傳並將秘密存儲給AWS Secret Manager
將秘密存儲在github >
> repository>設置>秘密和變量>動作
啟動工作流
測試 鑰匙要點
>由於僅使用一個Docker容器,因此此配置簡化了部署過程,同時確保可訪問後端服務並正確配置。
github操作用於自動化任務,例如測試代碼,構建應用程序或在進行更改時部署項目。就像設置一個機器人為您處理重複工作一樣!
>我們的主要目的是,當我們推向Github的特定分支時,將自動開始部署到AWS。為此,我們將選擇“ Main'Branch。
中
然後,您需要添加從您從AWS帳戶中提取的AWS的秘密,如下圖。
然後,我們登錄到ECR並構建/推動應用程序的Docker映像。
>我們檢查是否有具有相同名稱的現有云形式堆棧。如果是,請刪除它。 prompt_template = PromptTemplate(
input_variables=["function_name", "arguments", "docstring"],
template=(
"Generate detailed documentation for the following Python function:\n\n"
"Function Name: {function_name}\n"
"Arguments: {arguments}\n"
"Docstring: {docstring}\n\n"
"Provide a clear description of what the function does, its parameters, and the return value."
)
)#import csv
>部署了所有內容後,請記下實例的IP地址,然後使用Postman調用它以檢查一切正常。
結論
在本文中,我們探討瞭如何使用AWS CloudFormation簡化雲基礎架構管理。我們學習瞭如何創建ECR存儲庫,在EC2實例上部署Dockerized應用程序,並使用CI/CD的GitHub操作自動化整個過程。這種方法不僅節省了時間,還可以確保部署的一致性和可靠性。
AWS CloudFormation用代碼簡化了雲資源管理。 >
> Q1。什麼是AWS CloudFormation? AWS CloudFormation是一項服務,使您能夠使用基礎結構作為代碼(IAC)進行建模和提供AWS資源。
Q2。 Docker如何與AWS CloudFormation集成? Docker將應用程序包裝到容器中,可以將其部署在通過CloudFormation管理的AWS資源上。 Q3。 GitHub動作在此工作流程中扮演什麼角色? GitHub Action自動化CI/CD管道,包括構建,測試和部署應用程序到AWS。我可以使用langchain自動化Python文檔?是的,作為工作流程的一部分,Langchain和GPT-4可以生成和更新Python文檔。
以上是AWS雲形式:簡化雲部署的詳細內容。更多資訊請關注PHP中文網其他相關文章!