Dalam artikel ini, kami akan meneroka bagaimana AWS CloudFormation memudahkan menubuhkan dan menguruskan infrastruktur awan. Daripada secara manual mencipta sumber seperti pelayan atau pangkalan data, anda boleh menuliskan keperluan anda dalam fail, dan CloudFormation melakukan mengangkat berat untuk anda. Pendekatan ini, yang dikenali sebagai infrastruktur sebagai kod (IAC), menjimatkan masa, mengurangkan kesilapan, dan memastikan semuanya konsisten.
Kami juga akan melihat bagaimana tindakan Docker dan GitHub sesuai dengan proses. Docker memudahkan untuk membungkus dan menjalankan aplikasi anda, sementara tindakan GitHub mengautomasikan tugas seperti ujian dan penempatan. Bersama -sama dengan CloudFormation, alat ini mewujudkan aliran kerja yang kuat untuk membina dan menggunakan aplikasi di awan.
Jadual Kandungan Apa itu pembentukan awan AWS? Pengurus Kesimpulan
menyelaraskan dokumentasi kod dengan AI: Projek Penjanaan Dokumen:
Untuk memulakan pembentukan awan, kami memerlukan satu projek sampel untuk menggunakannya dalam AWS.
Saya sudah membuat projek menggunakan Lang-Chain dan membuka AI GPT-4. Mari kita bincangkan mengenai projek itu maka kita akan melihat bagaimana projek itu digunakan dalam AWS menggunakan pembentukan awan.
Pautan kod github:
Berikut adalah pecahan bagaimana kami membina alat ini dan kesannya bertujuan untuk dicipta. Untuk membuat projek ini, kami mengikuti beberapa langkah.
Sebelum memulakan projek baru, kita perlu membuat persekitaran Python untuk memasang semua pakej yang diperlukan. Ini akan membantu kami mengekalkan pakej yang diperlukan.
Saya menulis fungsi untuk menghuraikan fail input, yang biasanya mengambil fail python sebagai input dan mencetak nama semua fungsi.
Menjana dokumentasi dari kod
Dengan bantuan fungsi Generator Doc ini, ini mengambil butiran yang dihuraikan dan menghasilkan penjelasan yang lengkap dan boleh dibaca manusia untuk setiap fungsi.
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
Integrasi API Flask
Kami boleh menguji API Flask ini menggunakan postman untuk memeriksa output kami.
dockerizing aplikasi
kami akan membuat fail Docker. Fail Docker bertanggungjawab untuk berputar pada bekas masing -masing
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
Sebaik sahaja fail Docker dibuat, kami akan membuat fail pengarang Docker yang akan memutar bekas.
# 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
anda boleh menguji ini dengan menjalankan arahan
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
Selepas perintah dijalankan dengan jayanya, kod itu akan berfungsi dengan tepat seperti sebelumnya.
Repositori, saya telah mencipta mempunyai nama Repo Cloud_Formation nama Asdemo. Kemudian, saya akan meneruskan dengan TheCloudFormationTemplate, fail YAML yang membantu dalam berputar contoh yang diperlukan, menarik imej dari ECR dan sumber -sumber lain.
Daripada menubuhkan pelayan secara manual dan menghubungkan segala -galanya, AWS CloudFormation digunakan untuk menubuhkan dan menguruskan sumber awan (seperti pelayan atau pangkalan data) secara automatik menggunakan skrip. Ia seperti memberikan cetak biru untuk membina dan mengatur barangan awan anda tanpa melakukannya secara manual!
Fikirkan CloudFormation sebagai menulis manual arahan mudah untuk diikuti. Manual ini, yang dipanggil sebagai 'templat', memberitahu AWS untuk:
Mulakan pelayan yang diperlukan untuk projek.
template pembentukan awan
docker-compose up –build#import csv
Kami menentukan sumber ECR tunggal, yang merupakan repositori di mana imej docker kami disimpan.
Seterusnya, kami membuat contoh EC2. Kami akan melampirkan dasar -dasar penting kepadanya, terutamanya untuk berinteraksi dengan pengurus ECR dan AWS Secrets. Di samping itu, kami melampirkan kumpulan keselamatan untuk mengawal akses rangkaian. Untuk persediaan ini, kami akan membuka:
port 22 untuk akses ssh.
Oleh kerana hanya satu bekas Docker yang digunakan, konfigurasi ini memudahkan proses penempatan, sambil memastikan perkhidmatan backend dapat diakses dan dikonfigurasi dengan betul.
hingga sekarang kami telah menyimpan rahsia seperti kunci AI Open dalam fail config.py. Tetapi, kita tidak boleh menolak fail ini ke GitHub, kerana ia mengandungiSecrets. Oleh itu, kami menggunakan Pengurus Rahsia AWS untuk menyimpan rahsia kami dan kemudian mengambilnya melalui template CloudFormation kami.
hingga sekarang kami telah menyimpan rahsia seperti kunci AI Open dalam fail config.py. Tetapi, kita tidak boleh menolak fail ini ke GitHub, kerana ia mengandungiSecrets. Oleh itu, kami menggunakan Pengurus Rahsia AWS untuk menyimpan rahsia kami dan kemudian mengambilnya melalui template CloudFormation kami.
Membuat tindakan github
Tindakan GitHub digunakan untuk mengautomasikan tugas seperti kod ujian, aplikasi bangunan, atau menggunakan projek setiap kali anda membuat perubahan. Ia seperti menubuhkan robot untuk mengendalikan kerja berulang untuk anda!
Menyimpan rahsia di GitHub
masuk ke github anda dan ikuti jalan di bawah:
repositori & gt; Tetapan & gt; Rahsia dan Pembolehubah & GT; Tindakan
maka anda perlu menambah rahsia AWS anda yang diekstrak dari akaun AWS, seperti di bawah imej.
Memulakan aliran kerja
Selepas menyimpan, kami akan membuat folder .github dan, di dalamnya, folder aliran kerja. Di dalam folder aliran kerja, kami akan menambah fail deploy.yaml.
Kami menarik kod dari repositori dan menubuhkan kelayakan AWS menggunakan rahsia yang disimpan di GitHub.
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
Kemudian, kami log masuk ke ECR dan membina/menolak imej docker aplikasi.
Takeaways Key
a. Aplikasi pakej Docker ke dalam bekas, yang boleh digunakan pada sumber AWS yang diuruskan oleh CloudFormation.
Q4. Bolehkah saya mengautomasikan penjanaan dokumentasi python dengan langku?
a. IAC memastikan pengurusan sumber yang konsisten, berulang, dan berskala merentasi infrastruktur anda.
Atas ialah kandungan terperinci AWS CloudFormation: Memudahkan penyebaran awan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!