Maison >Périphériques technologiques >IA >AWS Cloudformation: Simplifier les déploiements cloud
Dans cet article, nous explorerons comment AWS CloudFormation simplifie la configuration et la gestion de l'infrastructure cloud. Au lieu de créer manuellement des ressources comme des serveurs ou des bases de données, vous pouvez noter vos exigences dans un fichier, et Cloudformation fait le lourdeur pour vous. Cette approche, connue sous le nom d'infrastructure sous le nom de Code (IAC), gagne du temps, réduit les erreurs et garantit que tout est cohérent.
Nous examinerons également comment les actions Docker et GitHub s'intègrent dans le processus. Docker facilite l'emballage et l'exécution de votre application, tandis que les actions GitHub automatisent des tâches comme les tests et le déploiement. Avec Cloudformation, ces outils créent un flux de travail puissant pour construire et déployer des applications dans le cloud.
Cet article a été publié dans le cadre du Data Science Blogathon.
Dans le monde du cloud computing, la gestion efficace des infrastructures est cruciale. Ainsi, AWS CloudFormation entre en image, ce qui facilite la configuration et la gestion de vos ressources cloud. Il vous permet de définir tout ce dont vous avez besoin - serveurs, stockage et réseautage dans un fichier simple.
AWS Cloudformation est un service qui vous aide à définir et à gérer vos ressources cloud à l'aide de modèles écrits en yaml ou json. Considérez-le comme créant un plan pour votre infrastructure. Une fois que vous remettez ce plan, Cloudformation s'occupe de tout définir, étape par étape, exactement comme vous l'avez décrit.
L'infrastructure en tant que code (IAC), c'est comme transformer votre cloud en quelque chose que vous pouvez construire, reconstruire et même vous améliorer avec seulement quelques lignes de code. Plus de clic manuel, plus de conjectures - juste des déploiements cohérents et fiables qui vous font gagner du temps et réduisent les erreurs.
rationalisation de la documentation du code avec l'IA: le projet de génération de documents:
Pour démarrer la formation du cloud, nous avons besoin d'un exemple de projet pour le déployer dans AWS.
J'ai déjà créé un projet à l'aide de la chaîne Lang et d'ouvrir AI GPT-4. Discutons de ce projet, nous allons voir comment ce projet est déployé dans AWS en utilisant la formation de cloud.
lien de code github: https://github.com/harshithah/cloudformation
Dans le monde du développement de logiciels, la documentation joue un rôle majeur dans la garantie que les bases de code sont compréhensibles et maintenables. Cependant, la création d'une documentation détaillée est souvent une tâche longue et ennuyeuse. Mais nous sommes des techniciens, nous voulons l'automatisation dans tout. Ainsi, pour déployer un projet dans AWS en utilisant CloudFormation, j'ai développé un projet d'automatisation à l'aide de l'IA (chain Lang et Open AI GPT-4) pour créer le projet de génération de documents - une solution innovante qui utilise l'IA pour automatiser le processus de documentation pour le code Python.
Voici une ventilation de la façon dont nous avons construit cet outil et l'impact qu'il vise à créer. Pour créer ce projet, nous suivons quelques étapes.
Avant de démarrer un nouveau projet, nous devons créer un environnement Python pour installer tous les packages requis. Cela nous aidera à maintenir les packages nécessaires.
J'ai écrit une fonction pour analyser le fichier d'entrée, qui prend généralement un fichier Python comme entrée et imprime les noms de toutes les fonctions.
Une fois les détails de la fonction extraits, l'étape suivante consiste à les alimenter dans le modèle GPT-4 d'OpenAI pour générer une documentation détaillée. En utilisant la chaîne Lang, nous construisons une invite qui explique la tâche que nous voulons que GPT-4 effectue.
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
À l'aide de cette invite, la fonction du générateur de doc prend les détails analysés et génère une explication complète et lisible par l'homme pour chaque fonction.
Pour rendre l'outil convivial, j'ai construit une API Flask où les utilisateurs peuvent télécharger des fichiers Python. L'API analyse le fichier, génère la documentation à l'aide de GPT-4 et le renvoie au format JSON.
Nous pouvons tester cette API Flask en utilisant Postman pour vérifier notre sortie.
Pour déployer dans AWS et utiliser notre application, nous devons conteneuriser notre application à l'aide de Docker, puis utiliser des actions GitHub pour automatiser le processus de déploiement. Nous utiliserons AWS Cloudformation pour l'automatisation dans AWS. En ce qui concerne le service, nous utiliserons le registre des conteneurs élastiques pour stocker nos conteneurs et EC2 pour déployer notre application. Voyons cette étape étape par étape.
Nous allons créer le fichier docker. Le fichier docker est responsable de la rotation de nos conteneurs respectifs
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
Une fois les fichiers docker créés, nous créerons un fichier docker compose qui fera tourner le conteneur.
# 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
Vous pouvez tester cela en exécutant la commande
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
Une fois que la commande s'exécute avec succès, le code fonctionnera exactement comme avant.
Je crée un référentiel ECR. En dehors de cela, nous ferons des actions GitHub plus tard pour créer tous nos autres services requis.
Le référentiel, j'ai créé a namespace cloud_formation repo name asdemo. Ensuite, je vais procéder avec TheCoudformationTemplate, un fichier YAML qui aide à faire tourner l'instance requise, en tirant les images d'ECR et d'autres ressources.
Au lieu de configurer manuellement les serveurs et de connecter tout, AWS CloudFormation est utilisé pour configurer et gérer automatiquement les ressources cloud (comme les serveurs ou les bases de données) à l'aide d'un script. C'est comme donner un plan pour construire et organiser vos trucs cloud sans le faire manuellement!
Consignez de Cloudformation comme écrivant un manuel d'instructions simple à suivre AWS. Ce manuel, appelé «modèle», raconte AWS à:
En utilisant cette configuration automatisée, je n'ai pas à répéter les mêmes étapes à chaque fois que je déploie ou met à jour le projet - tout est fait automatiquement par AWS.
AWS Les modèles Cloudformation sont des scripts JSON ou YAML déclaratifs qui décrivent les ressources et configurations nécessaires pour configurer votre infrastructure dans AWS. Ils vous permettent d'automatiser et de gérer votre infrastructure en tant que code, d'assurer la cohérence et la répétabilité dans les environnements.
docker-compose up –build#import csv
Décodons le modèle mis à jour étape par étape:
Nous définissons une seule ressource ECR, qui est le référentiel où notre image Docker est stockée.
Ensuite, nous créons une instance EC2. Nous y attacherons des politiques essentielles, principalement pour interagir avec le gestionnaire ECR et AWS Secrets. De plus, nous attachons un groupe de sécurité pour contrôler l'accès au réseau. Pour cette configuration, nous ouvrirons:
AT2.Microinstance sera utilisée, et à l'intérieur de la données de la consommation, nous définissons les instructions pour configurer l'instance:
Étant donné qu'un seul conteneur Docker est utilisé, cette configuration simplifie le processus de déploiement, tout en garantissant que le service backend est accessible et correctement configuré.
Jusqu'à présent, nous avons enregistré les secrets comme la touche AI ouverte dans le fichier config.py. Mais, nous ne pouvons pas pousser ce fichier vers GitHub, car il contient descrets. Ainsi, nous utilisons AWS Secrets Manager pour stocker nos secrets, puis le récupérer via notre modèle Cloudformation.
Jusqu'à présent, nous avons enregistré les secrets comme la touche AI ouverte dans le fichier config.py. Mais, nous ne pouvons pas pousser ce fichier vers GitHub, car il contient descrets. Ainsi, nous utilisons AWS Secrets Manager pour stocker nos secrets, puis le récupérer via notre modèle Cloudformation.
Les actions GitHub sont utilisées pour automatiser des tâches comme le test de code, la création d'applications ou le déploiement de projets chaque fois que vous apportez des modifications. C'est comme configurer un robot pour gérer le travail répétitif pour vous!
Notre principale intention ici est que lorsque nous poussons vers une branche spécifique de GitHub, le déploiement AWS devrait automatiquement commencer. Pour cela, nous sélectionnerons «Main» Branch.
Connectez-vous à votre github et suivez le chemin ci-dessous:
Référentiel & gt; Paramètres & gt; Secrets et variables & gt; Actions
Ensuite, vous devez ajouter vos secrets d'AWS extraits de votre compte AWS, comme dans l'image ci-dessous.
Après le stockage, nous créerons un dossier .github et, en lui, un dossier de workflows. À l'intérieur du dossier Workflows, nous ajouterons un fichier deploy.yaml.
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
Voici une explication simplifiée de l'écoulement:
Une fois que tout est déployé, notez l'adresse IP de l'instance, puis appelez-le simplement en utilisant Postman pour vérifier que tout fonctionne bien.
Dans cet article, nous avons exploré comment utiliser AWS Cloudformation pour simplifier la gestion des infrastructures cloud. Nous avons appris à créer un référentiel ECR, à déployer une application dockée sur l'instance EC2 et à automatiser l'ensemble du processus à l'aide d'actions GitHub pour CI / CD. Cette approche permet non seulement de gagner du temps, mais assure également la cohérence et la fiabilité des déploiements.
a. AWS CloudFormation est un service qui vous permet de modéliser et de fournir des ressources AWS à l'aide de l'infrastructure comme code (IAC).
Q2. Comment Docker s'intègre-t-il à AWS Cloudformation?a. Docker packages applications dans des conteneurs, qui peuvent être déployés sur des ressources AWS gérées par cloudformation.
Q3. Quel rôle les actions GitHub jouent-elles dans ce flux de travail?a. Les actions GitHub automatisent les pipelines CI / CD, y compris la construction, les tests et le déploiement des applications sur AWS.
Q4. Puis-je automatiser la génération de documentation Python avec Langchain?a. Oui, Langchain et GPT-4 peuvent générer et mettre à jour la documentation Python dans le cadre de votre workflow.
Q5. Quels sont les avantages de l'utilisation de l'IAC avec AWS Cloudformation?a. IAC assure une gestion cohérente, reproductible et évolutive des ressources dans votre infrastructure.
Le média présenté dans cet article ne appartient pas à l'analyse vidhya et est utilisé à la discrétion de l'auteur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!