首頁 >科技週邊 >人工智慧 >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