Maison >Périphériques technologiques >IA >AWS Cloudformation: Simplifier les déploiements cloud

AWS Cloudformation: Simplifier les déploiements cloud

Christopher Nolan
Christopher Nolanoriginal
2025-03-10 11:32:09213parcourir

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.

Objectifs d'apprentissage

  • Apprenez à simplifier la gestion des infrastructures cloud avec AWS CloudFormation à l'aide de l'infrastructure comme code (IAC).
  • Comprenez comment les actions Docker et GitHub s'intègrent à AWS Cloudformation pour le déploiement des applications rationalisé.
  • Explorez un exemple de projet qui automatise la génération de documentation Python à l'aide d'outils d'IA comme Langchain et GPT-4.
  • Apprenez à contester les applications avec Docker, à automatiser le déploiement avec des actions GitHub et à déployer via AWS Cloudformation.
  • Comprendre comment configurer et gérer les ressources AWS comme les groupes EC2, ECR et de sécurité à l'aide de modèles CloudFormation.

Cet article a été publié dans le cadre du Data Science Blogathon.

Table of contents

  • What is AWS Cloud-Formation?
  • Sample ProjectPractical Implementation: A Hands-On Project Example
  • Dockerizing the Application
  • Creating AWS Services for Cloud-Formation Stack
  • Uploading and Storing Secrets to AWS Secret Gestionnaire
  • Conclusion
  • Questions fréquemment posées

Qu'est-ce que la formation des nuages ​​AWS?

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.

Exemple d'implémentation projetée projetée: un exemple de projet pratique

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.

Génération de documentation à partir du code

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.

Intégration de l'API FLASK

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.

AWS Cloudformation: Simplifier les déploiements cloud

Dockering l'application

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.

Création de Docker Compose

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

docker compose

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.

Création de services AWS pour la pile de formations cloud

AWS Cloudformation: Simplifier les déploiements cloud

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 à:

  • Démarrez les serveurs requis pour le projet.
  • Tirez les images de conteneur du projet du référentiel de stockage ECR.
  • Configurer toutes les autres dépendances et configurations nécessaires pour que le projet s'exécute.

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.

Modèle de formation de nuages ​​

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:

  • port 22 pour l'accès SSH.
  • port 80 pour l'accès http.
  • port 5000 pour l'accès aux applications backend.

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:

  • Installez les dépendances nécessaires comme Python, Boto3 et Docker.
  • Access Secrets stocké dans AWS Secrets Manager et enregistrez-les dans un fichier config.py.
  • Connectez-vous vers ECR, tirez l'image Docker et exécutez-la à l'aide de Docker.

É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é.

Téléchargement et stockage des secrets vers AWS Secret Manager

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.

AWS Cloudformation: Simplifier les déploiements cloud

AWS Cloudformation: Simplifier les déploiements cloud

Création d'actions github

AWS Cloudformation: Simplifier les déploiements cloud

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.

Stockage des secrets dans github

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.

AWS Cloudformation: Simplifier les déploiements cloud

initiation du flux de travail

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:

  • Nous retirons le code du référentiel et configurons les informations d'identification AWS à l'aide des secrets stockés dans github.
  • Ensuite, nous nous connectons à ECR et construisons / poussons l'image docker de l'application.
  • Nous vérifions s'il y a une pile de formations clouds existante avec le même nom. Si oui, supprimez-le.
  • Enfin, nous utilisons le modèle CloudFormation pour lancer les ressources et configurer tout.

test

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.

AWS Cloudformation: Simplifier les déploiements cloud

Conclusion

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.

Les plats clés

  • AWS Cloudformation simplifie la gestion des ressources cloud avec l'infrastructure comme code.
  • Les conteneurs Docker rationalisent le déploiement de l'application sur l'infrastructure gérée par AWS.
  • Les actions GitHub automatisent les pipelines de construction et de déploiement pour l'intégration transparente.
  • Langchain et GPT-4 améliorent l'automatisation de la documentation Python dans les projets.
  • combinant IAC, Docker et CI / CD crée des flux de travail évolutifs, efficaces et modernes.

Les questions fréquemment posées

Q1. Qu'est-ce que AWS Cloudformation?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn