>在本文中,我们将探讨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集成
为使该工具用户友好,我构建了一个烧瓶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> HTTP访问的
端口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中文网其他相关文章!