首页 >科技周边 >人工智能 >AWS云形式:简化云部署

AWS云形式:简化云部署

Christopher Nolan
Christopher Nolan原创
2025-03-10 11:32:09214浏览

>在本文中,我们将探讨AWS CloudFormation如何简化设置和管理云基础架构。您可以在文件中写下您的要求,而不是手动创建诸如服务器或数据库之类的资源,而CloudFormation为您带来了繁重的提升。这种方法被称为基础架构(IAC),节省了时间,减少错误并确保一切一致。

>

>我们还将研究Docker和Github的动作如何适合该过程。 Docker可以轻松打包和运行您的应用程序,而GitHub Actions则可以自动化测试和部署等任务。这些工具与云形式一起创建了一个强大的工作流程,用于在云中构建和部署应用程序。

学习目标

    学习如何使用基础结构作为代码(IAC)来简化云基础架构管理。
  • >了解如何将Docker和GitHub操作与AWS CloudFormation集成以进行简化的应用程序部署。
  • 探索一个示例项目,该项目使用Langchain和GPT-4等AI工具来自动化Python文档生成。
  • >学习如何使用Docker容器化应用程序,使用GitHub操作自动部署并通过AWS CloudFormation部署。
  • >了解如何使用CloudFormation模板设置和管理EC2,ECR和安全组(例如EC2,ECR和安全组)的AWS资源。
  • >本文是

> > data Science Blogathon的一部分。 目录的目录>什么是AWS云形成?

>示例项目示例实现:一个动手示例示例

> dockerize dockerized application
  • 经理
  • >结论
  • >
  • >
  • 什么是AWS云形成?
  • 在云计算世界中,有效管理基础架构至关重要。因此,AWS CloudFormation出现了图片,这使设置和管理您的云资源变得更加容易。它允许您定义所需的所有内容 - 简单文件中的服务器,存储和网络。
  • >
  • aws CloudFormation是一项服务,可帮助您使用用YAML或JSON编写的模板来定义和管理云资源。将其视为为您的基础架构创建蓝图。一旦您递交了此蓝图,云形象就会按照您描述的方式逐步设置所有内容。
。 作为代码(IAC)的基础架构,就像将云变成可以建立,重建甚至可以通过几行代码改进的东西。不再有手动单击,不再猜测 - 只需一致,可靠的部署即可节省您的时间并减少错误。

示例项目实践实施:一个动手项目示例

用AI的简化代码文档:

>

开始云形成,我们需要一个示例项目才能在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文件作为输入并打印所有函数的名称。

从代码生成文档

提取功能详细信息后,下一步是将它们送入OpenAI的GPT-4模型中,以生成详细的文档。使用Lang-Chain,我们构建了一个提示,该提示说明了我们希望GPT-4执行的任务。

>在此提示的帮助下,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格式返回。

我们可以使用Postman测试此烧瓶API来检查我们的输出。>

> dockerizing应用程序

>要部署到AWS并使用我们的应用程序,我们需要使用Docker容器化应用程序,然后使用GitHub操作来自动化部署过程。我们将使用AWS CloudFormation进行AWS中的自动化。在服务方面,我们将使用弹性容器注册表存储我们的容器和EC2来部署我们的应用程序。让我们逐步查看此。AWS云形式:简化云部署

创建Docker构成

我们将创建Docker文件。 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

docker组成

>创建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服务

AWS云形式:简化云部署我创建一个ECR存储库。除此之外

>存储库,我创建了具有命名空间cloud_formation repo名称asdemo。然后,我将继续进行ThecloudformationTemplate,这是一个有助于旋转所需实例,从ECR和其他资源中删除图像的YAML文件。>>>>> AWS CloudFormation无需手动设置服务器并连接所有内容,而是使用脚本自动设置和管理云资源(例如服务器或数据库)。这就像给出一个蓝图来构建和整理云的东西而无需手动做!

>

将云形式视为编写简单的说明手册,以供AWS遵循。本手册称为“模板”,告诉AWS:

>

启动项目所需的服务器。

>

>从ECR存储存储库中摘取项目的容器图像。>

设置项目运行所需的所有其他依赖项和配置。>
  • >通过使用此自动设置,我不必每次部署或更新项目时都重复相同的步骤 - AWS会自动完成。
  • 云形成模板
  • AWS云形式模板是声明的JSON或YAML脚本,它们描述了在AWS中设置基础架构所需的资源和配置。它们使您能够自动化和管理基础架构作为代码,从而确保环境之间的一致性和可重复性。
  • >
让我们解码更新的模板逐步:

>

我们正在定义单个ECR资源,该资源是存储Docker映像的存储库。

接下来,我们创建一个EC2实例。我们将附加基本政策,主要用于与ECR和AWS Secrets Manager互动。此外,我们将安全组附加到控制网络访问。对于此设置,我们将打开:

SSH访问的

端口22。
docker-compose up –build#import csv
> HTTP访问的

端口80。 端口5000用于后端应用程序访问。> 将使用

  • 安装必要的依赖项,例如python,boto3和docker。
  • >存储在AWS Secrets Manager中的访问秘密并将其保存到config.py文件中。>
  • 登录到ECR,拉码头图像并使用Docker运行。
>由于仅使用一个Docker容器,因此此配置简化了部署过程,同时确保可访问后端服务并正确配置。

>上传并将秘密存储给AWS Secret Manager 到目前为止,我们已经在config.py文件中保存了像打开AI密钥一样保存的秘密。但是,我们不能将此文件推向github,因为它包含了隔离。因此,我们使用AWS Secrets Manager存储我们的秘密,然后通过我们的云形式模板检索。 到目前为止,我们已经在config.py文件中保存了像打开AI密钥一样保存的秘密。但是,我们不能将此文件推向github,因为它包含了隔离。因此,我们使用AWS Secrets Manager存储我们的秘密,然后通过我们的云形式模板检索。

创建GitHub Action

AWS云形式:简化云部署

AWS云形式:简化云部署 github操作用于自动化任务,例如测试代码,构建应用程序或在进行更改时部署项目。就像设置一个机器人为您处理重复工作一样!

>我们的主要目的是,当我们推向Github的特定分支时,将自动开始部署到AWS。为此,我们将选择“ Main'Branch。

将秘密存储在github AWS云形式:简化云部署

>登录到您的github,并遵循以下路径:

>

> repository>设置>秘密和变量>动作

然后,您需要添加从您从AWS帐户中提取的AWS的秘密,如下图。

启动工作流

>存储后,我们将创建一个.github文件夹,并在其中创建一个Workflows文件夹。在Workflows文件夹中,我们将添加一个decloy.yaml文件。

这是对流的简化解释:

AWS云形式:简化云部署

我们从存储库中摘取代码,并使用Gi​​tHub中存储的秘密设置AWS凭据。

然后,我们登录到ECR并构建/推动应用程序的Docker映像。

>我们检查是否有具有相同名称的现有云形式堆栈。如果是,请删除它。

>最后,我们使用CloudFormation模板启动资源并设置所有内容。
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云形式:简化云部署

    结论

    在本文中,我们探讨了如何使用AWS CloudFormation简化云基础架构管理。我们学习了如何创建ECR存储库,在EC2实例上部署Dockerized应用程序,并使用CI/CD的GitHub操作自动化整个过程。这种方法不仅节省了时间,还可以确保部署的一致性和可靠性。

    钥匙要点

    AWS CloudFormation用代码简化了云资源管理。
      >
    • docker容器简化了AWS管理的基础架构上的应用程序。
    • github动作自动化构建和部署管道,以进行无缝集成。
    • > Langchain和GPT-4增强项目中的Python文档自动化。​​
    • 组合IAC,Docker和CI/CD创建可扩展,高效和现代工作流程。
    • 常见问题

    > 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文档。

    Q5。将IAC与AWS CloudFormation一起使用有什么好处? IAC确保基础架构的一致,可重复和可扩展的资源管理。 >本文所示的媒体不归Analytics Vidhya拥有,并由作者的酌情决定使用。

以上是AWS云形式:简化云部署的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn