ホームページ >テクノロジー周辺機器 >AI >AWS CloudFormation:クラウドの展開を簡素化します

AWS CloudFormation:クラウドの展開を簡素化します

Christopher Nolan
Christopher Nolanオリジナル
2025-03-10 11:32:09214ブラウズ

この記事では、AWS CloudFormationがクラウドインフラストラクチャのセットアップと管理を簡素化する方法を調べます。サーバーやデータベースなどのリソースを手動で作成する代わりに、ファイルに要件を書き留めることができ、CloudFormationは自分のために重いものを持ち上げます。コード(IAC)としてインフラストラクチャとして知られるこのアプローチは、時間を節約し、エラーを減らし、すべてが一貫していることを保証します。 また、DockerとGithubのアクションがプロセスにどのように適合するかについても説明します。 Dockerを使用すると、アプリケーションを簡単にパッケージ化して実行できますが、GitHubアクションはテストや展開などのタスクを自動化します。 CloudFormationとともに、これらのツールは、クラウドにアプリケーションを構築および展開するための強力なワークフローを作成します。

学習目標

コード(IAC)としてインフラストラクチャを使用して、AWSクラウド形成でクラウドインフラストラクチャ管理を簡素化する方法を学ぶ。

DockerおよびGithubアクションが、合理化されたアプリケーションの展開のためにAWS CloudFormationと統合する方法を理解してください。 LangchainやGPT-4などのAIツールを使用して、Pythonドキュメント生成を自動化するサンプルプロジェクトを探索します。

Dockerでアプリケーションをコンテナ化する方法を学び、GitHubアクションで展開を自動化し、AWS CloudFormationを介して展開します。
    CloudFormationテンプレートを使用して、EC2、ECR、セキュリティグループなどのAWSリソースをセットアップおよび管理する方法を理解してください。
  • この記事は、
  • データサイエンスブログの一部として公開されました。 目次

AWSクラウド形式とは何ですか? ​​サンプルプロジェクト実装:実践的なプロジェクトの例>アプリケーションのDockerizingクラウドフォーメーションスタックのためのAWSサービスの作成

結論

よくある質問
  • cloud formationとは何ですか?
  • クラウドコンピューティングの世界では、インフラストラクチャを効率的に管理することが重要です。そのため、AWS CloudFormationが登場するため、クラウドリソースのセットアップと管理が容易になります。これにより、必要なものをすべて定義できます - サーバー、ストレージ、ネットワーキングは簡単なファイルにあります。
  • AWS CloudFormationは、YAMLまたはJSONで記述されたテンプレートを使用してクラウドリソースを定義および管理するのに役立つサービスです。インフラストラクチャの青写真を作成すると考えてください。この青写真を引き渡すと、CloudFormationは、あなたが説明したとおりに、すべてを段階的に設定します。 コード(IAC)としてのインフラストラクチャは、クラウドを数行のコードで構築、再構築、さらには改善できるものに変えるようなものです。マニュアルをクリックすることはもうありません。当てはまりません。時間を節約してエラーを減らす一貫した信頼できる展開だけです。

    サンプルプロジェクトプラクティカル実装:実践的なプロジェクトの例

    AIを使用したコードドキュメントの合理化:ドキュメント生成プロジェクト:

    クラウド形成を開始するには、AWSに展開するために1つのサンプルプロジェクトが必要です。

    lang-chainとOpen ai gpt-4を使用してプロジェクトをすでに作成しました。そのプロジェクトについて説明しましょう。クラウドフォーメーションを使用して、そのプロジェクトがAWSでどのように展開されているかを見てみましょう。

    githubコードリンク:

    https://github.com/harshitha-gh/cloudformation このツールの構築方法と、それが作成することを目的とした影響の内訳です。このプロジェクトを作成するには、いくつかのステップに従っています。

    新しいプロジェクトを開始する前に、必要なすべてのパッケージをインストールするためにPython環境を作成する必要があります。これは、必要なパッケージを維持するのに役立ちます

    入力ファイルを解析する関数を書きました。これは通常、Pythonファイルを入力として使用し、すべての機能の名前を印刷します。 コードからドキュメントを生成する

    関数の詳細が抽出されたら、次のステップは、それらをOpenAIのGPT-4モデルにフィードして、詳細なドキュメントを生成することです。 Lang-Chainを使用して、GPT-4を実行したいタスクを説明するプロンプトを作成します。

    このプロンプトの助けを借りて、ドキュメントジェネレーター関数は解析された詳細を取得し、各関数について完全に人間の読み取り可能な説明を生成します。

    Flask API統合

    ツールをユーザーフレンドリーにするために、ユーザーがPythonファイルをアップロードできるフラスコAPIを作成しました。 APIはファイルを解析し、GPT-4を使用してドキュメントを生成し、JSON形式で返します。

    郵便配達を使用してこのフラスコAPIをテストすることができます。

    アプリケーションのDockerizing

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

AWSに展開してアプリケーションを使用するには、Dockerを使用してアプリケーションをコンテナ化し、GitHubアクションを使用して展開プロセスを自動化する必要があります。 AWSの自動化にAWS CloudFormationを使用します。サービスごとに、弾性コンテナレジストリを使用してコンテナとEC2を保存してアプリケーションを展開します。このステップバイステップを見てみましょう。

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 Composeファイルを作成します。

# 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 CloudFormation:クラウドの展開を簡素化します

ECRリポジトリを作成します。それとは別に、他のすべての必要なサービスを作成するために後でGitHubアクションを作成します。

リポジトリ、私が作成した名前空間cloud_formationリポジトリ名Asdemoを持っています。次に、必要なインスタンスをスピンアップし、ECRやその他のリソースから画像を引き出すのに役立つYAMLファイルであるtheCloudformationTemplateを続行します。

サーバーを手動でセットアップしてすべてを接続する代わりに、AWS CloudFormationを使用して、スクリプトを使用してクラウドリソース(サーバーやデータベースなど)を自動的にセットアップおよび管理します。クラウドを手動で行わずに構築して整理するための青写真を与えるようなものです!

CloudFormationは、AWSが従うべき簡単な取扱説明書を書いていると考えてください。 「テンプレート」と呼ばれるこのマニュアルは、AWSに次のように伝えます

プロジェクトに必要なサーバーを起動します。

    ECRストレージリポジトリからプロジェクトのコンテナ画像を引く。
  • プロジェクトが実行されるために必要な他のすべての依存関係と構成を設定します。
  • この自動化されたセットアップを使用することにより、プロジェクトを展開または更新するたびに同じ手順を繰り返す必要はありません。すべてがAWSによって自動的に行われます。
  • クラウド形式テンプレート
  • AWS CloudFormationテンプレートは、AWSでインフラストラクチャをセットアップするために必要なリソースと構成を説明する宣言的なJSONまたはYAMLスクリプトです。インフラストラクチャをコードとして自動化および管理できるようになり、環境全体で一貫性と再現性が確保されます。

段階的に更新されたテンプレートをデコードしましょう

単一のECRリソースを定義しています。これは、Docker画像が保存されるリポジトリです。

次に、EC2インスタンスを作成します。主にECRおよびAWS Secrets Managerと対話するために、重要なポリシーを添付します。さらに、セキュリティグループを添付して、ネットワークアクセスを制御します。このセットアップでは、開きます:

SSH Accessの場合、

ポート22。
docker-compose up –build#import csv
HTTPアクセスのポート80。

バックエンドアプリケーションアクセス用のポート5000。

at2.microinstanceが使用され、TheUser Datasection内では、インスタンスを構成する手順を定義します。
  • python、boto3、dockerなどの必要な依存関係をインストールします。
  • AWS Secrets Managerに保存されているsecretsにアクセスし、それらをconfig.pyファイルに保存します。
  • ECRにログインし、Docker画像を引いて、Dockerを使用して実行します。
  • 1つのDockerコンテナのみが使用されているため、この構成により展開プロセスが簡素化され、バックエンドサービスがアクセス可能で適切に構成されていることを確認します。
  • SecretをAWS Secret Managerにアップロードして保存する

今まで、config.pyファイルのオープンAIキーのような秘密を保存しています。ただし、秘密が含まれているため、このファイルをGithubにプッシュすることはできません。そのため、AWS Secrets Managerを使用して秘密を保存し、CloudFormationテンプレートを介してそれを取得します。

今まで、config.pyファイルのオープンAIキーのような秘密を保存しています。ただし、秘密が含まれているため、このファイルをGithubにプッシュすることはできません。そのため、AWS Secrets Managerを使用して秘密を保存し、CloudFormationテンプレートを介してそれを取得します。

githubアクションの作成AWS CloudFormation:クラウドの展開を簡素化します

AWS CloudFormation:クラウドの展開を簡素化します

githubアクションは、変更を加えるたびに、コードのテスト、アプリの構築、プロジェクトの展開などのタスクを自動化するために使用されます。それはあなたのために繰り返しの仕事を処理するためにロボットをセットアップするようなものです!

ここでの主な意図は、GitHubの特定のブランチにプッシュすると、AWSへの展開が自動的に開始されることです。このためには、「Main」Branch。を選択します

secretsをGithub AWS CloudFormation:クラウドの展開を簡素化しますに保存します

githubにサインインして、以下のパスに従ってください:

リポジトリ>設定>秘密と変数>アクション

次に、下の画像のように、AWSアカウントから抽出されたAWSの秘密を追加する必要があります。

ワークフローの開始

保存後、.githubフォルダーとその中にワークフローフォルダーを作成します。ワークフローフォルダー内には、deploy.yamlファイルを追加します。

これが流れの簡略化された説明です:

AWS CloudFormation:クラウドの展開を簡素化します

リポジトリからコードを引いて、GitHubに保存されているシークレットを使用して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アドレスを書き留めてから、郵便配達を使用してすべてを正常に確認するだけです。

    AWS CloudFormation:クラウドの展開を簡素化します

    結論

    この記事では、AWS CloudFormationを使用してクラウドインフラストラクチャ管理を簡素化する方法を検討しました。 ECRリポジトリを作成し、EC2インスタンスにDockerizedアプリケーションを展開し、CI/CDのGitHubアクションを使用してプロセス全体を自動化する方法を学びました。このアプローチは時間を節約するだけでなく、展開の一貫性と信頼性を保証します。

    キーテイクアウト

    AWSクラウドフォーメーションは、コードとしてインフラストラクチャを使用してクラウドリソース管理を簡素化します。
      dockerコンテナは、AWS管理されたインフラストラクチャでのアプリケーションの展開を合理化します
    • githubアクションは、シームレスな統合のためにビルドと展開パイプラインを自動化します。
    • LangchainとGPT-4は、プロジェクトでPythonドキュメントの自動化を強化します IAC、Docker、およびCI/CDを組み合わせると、スケーラブルで効率的で最新のワークフローが作成されます。
    • よくある質問
    • q1。 AWS CloudFormationとは何ですか? AWS CloudFormationは、コード(IAC)としてインフラストラクチャを使用してAWSリソースをモデル化およびプロビジョニングできるサービスです。 DockerはAWS CloudFormationとどのように統合されますか? Dockerパッケージアプリケーションは、CloudFormationによって管理されたAWSリソースに展開できます。このワークフローでGitHubアクションはどのような役割を果たしますか? GitHubアクションは、AWSへのアプリケーションの構築、テスト、展開など、CI/CDパイプラインを自動化します。 LangchainでPythonドキュメントの生成を自動化できますか?はい、LangchainとGPT-4は、ワークフローの一部としてPythonドキュメントを生成および更新できます。 IACをAWS CloudFormationで使用することの利点は何ですか? IACは、インフラストラクチャ全体で一貫した、繰り返し可能な、スケーラブルなリソース管理を保証します。
    • この記事に示されているメディアは、Analytics Vidhyaが所有しておらず、著者の裁量で使用されています。

以上がAWS CloudFormation:クラウドの展開を簡素化しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。