ホームページ >テクノロジー周辺機器 >AI >AWS CloudFormation:クラウドの展開を簡素化します
この記事では、AWS CloudFormationがクラウドインフラストラクチャのセットアップと管理を簡素化する方法を調べます。サーバーやデータベースなどのリソースを手動で作成する代わりに、ファイルに要件を書き留めることができ、CloudFormationは自分のために重いものを持ち上げます。コード(IAC)としてインフラストラクチャとして知られるこのアプローチは、時間を節約し、エラーを減らし、すべてが一貫していることを保証します。 また、DockerとGithubのアクションがプロセスにどのように適合するかについても説明します。 Dockerを使用すると、アプリケーションを簡単にパッケージ化して実行できますが、GitHubアクションはテストや展開などのタスクを自動化します。 CloudFormationとともに、これらのツールは、クラウドにアプリケーションを構築および展開するための強力なワークフローを作成します。
学習目標
コード(IAC)としてインフラストラクチャを使用して、AWSクラウド形成でクラウドインフラストラクチャ管理を簡素化する方法を学ぶ。
AWSクラウド形式とは何ですか? サンプルプロジェクト実装:実践的なプロジェクトの例>アプリケーションのDockerizingクラウドフォーメーションスタックのためのAWSサービスの作成
結論よくある質問AIを使用したコードドキュメントの合理化:ドキュメント生成プロジェクト:
クラウド形成を開始するには、AWSに展開するために1つのサンプルプロジェクトが必要です。
lang-chainとOpen ai gpt-4を使用してプロジェクトをすでに作成しました。そのプロジェクトについて説明しましょう。クラウドフォーメーションを使用して、そのプロジェクトがAWSでどのように展開されているかを見てみましょう。 githubコードリンク:https://github.com/harshitha-gh/cloudformation
入力ファイルを解析する関数を書きました。これは通常、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ファイルは、それぞれのコンテナを紡ぐ責任があります
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 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サービスの作成
ECRリポジトリを作成します。それとは別に、他のすべての必要なサービスを作成するために後でGitHubアクションを作成します。
リポジトリ、私が作成した名前空間cloud_formationリポジトリ名Asdemoを持っています。次に、必要なインスタンスをスピンアップし、ECRやその他のリソースから画像を引き出すのに役立つYAMLファイルであるtheCloudformationTemplateを続行します。サーバーを手動でセットアップしてすべてを接続する代わりに、AWS CloudFormationを使用して、スクリプトを使用してクラウドリソース(サーバーやデータベースなど)を自動的にセットアップおよび管理します。クラウドを手動で行わずに構築して整理するための青写真を与えるようなものです!
CloudFormationは、AWSが従うべき簡単な取扱説明書を書いていると考えてください。 「テンプレート」と呼ばれるこのマニュアルは、AWSに次のように伝えます
プロジェクトに必要なサーバーを起動します。
段階的に更新されたテンプレートをデコードしましょう
単一のECRリソースを定義しています。これは、Docker画像が保存されるリポジトリです。SSH Accessの場合、
ポート22。docker-compose up –build#import csvHTTPアクセスのポート80。
バックエンドアプリケーションアクセス用のポート5000。
at2.microinstanceが使用され、TheUser Datasection内では、インスタンスを構成する手順を定義します。今まで、config.pyファイルのオープンAIキーのような秘密を保存しています。ただし、秘密が含まれているため、このファイルをGithubにプッシュすることはできません。そのため、AWS Secrets Managerを使用して秘密を保存し、CloudFormationテンプレートを介してそれを取得します。
今まで、config.pyファイルのオープンAIキーのような秘密を保存しています。ただし、秘密が含まれているため、このファイルをGithubにプッシュすることはできません。そのため、AWS Secrets Managerを使用して秘密を保存し、CloudFormationテンプレートを介してそれを取得します。
githubアクションの作成
secretsをGithub に保存します
リポジトリ>設定>秘密と変数>アクション
ワークフローの開始
保存後、.githubフォルダーとその中にワークフローフォルダーを作成します。ワークフローフォルダー内には、deploy.yamlファイルを追加します。これが流れの簡略化された説明です:
最後に、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
テスト
キーテイクアウト
以上がAWS CloudFormation:クラウドの展開を簡素化しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。