En aquest tema, aprendrem a desplegar una aplicació Flask a Amazon Web Services (AWS). AWS és una de les plataformes de computació en núvol més populars i ofereix una àmplia gamma de serveis que poden ajudar a escalar i gestionar aplicacions web de manera eficient.
- Configuració del Compte AWS
1.1 Creació d'un Compte AWS
Si encara no tens un compte AWS, segueix aquests passos per crear-ne un:
- Visita aws.amazon.com i fes clic a "Create an AWS Account".
- Introdueix la teva informació personal i de pagament.
- Completa el procés de verificació.
1.2 Configuració de les Credencials AWS CLI
Per gestionar els serveis AWS des de la línia de comandes, necessitaràs configurar l'AWS Command Line Interface (CLI):
- Instal·la l'AWS CLI seguint les instruccions de la documentació oficial.
- Configura les credencials executant
aws configure
i introduint les teves claus d'accés.
$ aws configure AWS Access Key ID [None]: YOUR_ACCESS_KEY_ID AWS Secret Access Key [None]: YOUR_SECRET_ACCESS_KEY Default region name [None]: YOUR_PREFERRED_REGION Default output format [None]: json
- Preparació de l'Aplicació Flask
2.1 Requisits de l'Aplicació
Assegura't que la teva aplicació Flask estigui preparada per a la producció:
- Utilitza un servidor WSGI com Gunicorn.
- Configura correctament les variables d'entorn.
- Assegura't que les dependències estiguin llistades en un fitxer
requirements.txt
.
2.2 Exemple de Fitxer requirements.txt
2.3 Exemple de Fitxer app.py
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, World!' if __name__ == '__main__': app.run()
- Desplegament amb Elastic Beanstalk
3.1 Creació d'un Entorn Elastic Beanstalk
Elastic Beanstalk és un servei fàcil d'utilitzar per desplegar i escalar aplicacions web i serveis desenvolupats amb diversos llenguatges de programació.
-
Instal·la l'Elastic Beanstalk CLI:
$ pip install awsebcli
-
Inicialitza un nou projecte Elastic Beanstalk:
$ eb init -p python-3.8 flask-app --region YOUR_PREFERRED_REGION
-
Crea un nou entorn:
$ eb create flask-env
3.2 Desplegament de l'Aplicació
-
Desplega l'aplicació a Elastic Beanstalk:
$ eb deploy
-
Obre l'aplicació al navegador:
$ eb open
- Configuració de la Base de Dades
4.1 Creació d'una Instància RDS
Si la teva aplicació necessita una base de dades, pots utilitzar Amazon RDS:
- A la consola d'AWS, navega a RDS i crea una nova instància de base de dades.
- Configura els paràmetres necessaris (tipus de base de dades, credencials, etc.).
4.2 Connexió a la Base de Dades
Actualitza la configuració de la teva aplicació Flask per connectar-se a la base de dades RDS.
import os from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL') db = SQLAlchemy(app)
- Monitorització i Escalabilitat
5.1 Monitorització amb CloudWatch
Utilitza Amazon CloudWatch per monitoritzar el rendiment de la teva aplicació:
- Configura mètriques i alarmes a la consola de CloudWatch.
- Revisa els logs i les mètriques per assegurar-te que l'aplicació funciona correctament.
5.2 Escalabilitat Automàtica
Configura l'escalabilitat automàtica per assegurar-te que la teva aplicació pot gestionar increments de trànsit:
- A la consola d'Elastic Beanstalk, navega a la configuració de l'entorn.
- Configura les polítiques d'escalabilitat automàtica segons les necessitats de la teva aplicació.
Conclusió
Desplegar una aplicació Flask a AWS pot semblar complex al principi, però amb les eines adequades i una configuració correcta, pots aprofitar la potència i la flexibilitat d'AWS per escalar i gestionar la teva aplicació de manera eficient. En aquest tema, hem cobert els passos bàsics per configurar el teu entorn, preparar la teva aplicació, desplegar-la amb Elastic Beanstalk, configurar una base de dades i monitoritzar el rendiment. Amb aquests coneixements, estaràs preparat per portar la teva aplicació Flask a la producció a AWS.
Curs de Desenvolupament Web amb Flask
Mòdul 1: Introducció a Flask
- Què és Flask?
- Configuració del Teu Entorn de Desenvolupament
- Creant la Teva Primera Aplicació Flask
- Entenent l'Estructura d'una Aplicació Flask
Mòdul 2: Conceptes Bàsics de Flask
- Enrutament i Mapeig d'URL
- Gestió de Mètodes HTTP
- Renderització de Plantilles amb Jinja2
- Treballant amb Fitxers Estàtics
Mòdul 3: Formularis i Entrada d'Usuari
Mòdul 4: Integració de Bases de Dades
- Introducció a Flask-SQLAlchemy
- Definició de Models
- Realització d'Operacions CRUD
- Migracions de Bases de Dades amb Flask-Migrate
Mòdul 5: Autenticació d'Usuaris
- Registre d'Usuaris
- Inici i Tancament de Sessió d'Usuaris
- Hashing de Contrasenyes
- Gestió de Sessions d'Usuaris
Mòdul 6: Conceptes Avançats de Flask
- Blueprints per a Aplicacions Grans
- Gestió d'Errors
- Pàgines d'Error Personalitzades
- Registre i Depuració
Mòdul 7: APIs RESTful amb Flask
- Introducció a les APIs RESTful
- Creació de Punts Finals RESTful
- Gestió de Dades JSON
- Autenticació per a APIs
Mòdul 8: Desplegament i Producció
- Configuració de Flask per a Producció
- Desplegament a Heroku
- Desplegament a AWS
- Monitorització i Optimització del Rendiment
Mòdul 9: Proves i Millors Pràctiques
- Proves Unitàries amb Flask
- Proves d'Integració
- Cobertura de Proves
- Millors Pràctiques per al Desenvolupament amb Flask