Idea i objectiu -
Havent passat uns dies aprenent Python. M’he plantejat fer un petit projecte integrant la potencia de Python per fer automatitzacions, la gestió d’objectes al Cloud: S3 i d’una manera senzilla usar Flask d’això sí que no en tinc gaires coneixements però per algo es comença.
Requisits de l’entorn:
- Python 3.10.12: Versió base.
- AWS CLI. Configurat amb un usuari IAM. Per a aquest laboratori li he donat AmazonS3FullAccess (que és accés complet a S3). En un entorn de producció, les millors pràctiques(IAM) serien crear una política personalitzada que restrigeixi l’accès només a uns buckets específics seguint la regla del mínim privilegi, que és una regla que limita a l’usuari als recursos necessaris, ni més, ni menys.
- Un entorn virtual(aws-venv): Aislat al meu servidor de proves(Gojira).
- Llibreries claus:
- Boto3 és un SDK(Software Development Kit) una mena de traductor oficial d’Amazon, que passa les ordres de Python al llenguatge que necessita el servidor d’AWS.
- Flask és un entorn de treball minimalista que permet crear aplicacions ràpidament.
Tenint en compte els requisits anteriors
ja podem posar-nos a fer!En primer lloc m’he fet una llista amb les funcions bàsiques que hauria de tenir un gestor d’arxius. Que puguem:
- Llistar els buckets
- Crear buckets
- Pujar arxius(objectes)
- Baixar arxius
- Borrar arxius
- Llistar els objectes dins dels buckets
Un concepte clau: Un bucket és una espècie de caixa mestra on guardem els nostres arxius. Entenem que al nostre ordinador utilitzem un sistema de carpetes(una carpeta dins d’una altra), a S3 funciona diferent.
El servei S3 és l’emmagatzematge d’objectes de tota Amazon. Imagineu-vos-el com el magatzem gegantí i infinit que Amazon posa a la vostra disposició.
El Bucket és teu propi, en el sentit de que està separat de la resta i tu el llogues dins d’aquest gran magatzem. En pots tenir més d’un. Però el que és diferent és que dins del teu Bucket no fas carpetes sinó que guardes objectes i els poses una etiqueta(Key) on està tota l’adreça per trobar-lo.
Després hem creat les carpetes que més o menys necessitarem en el projecte com són la mateixa carpeta arrel del projecte, una carpeta anomenada app, una de scripts per probar algunes funcions i una de tests que imagino que aquí crearé tests per a pytest.
Aquesta és la estructura inicial que anirà canviant a mesura que avancem:
Arxiu/Carpeta | Contingut |
flask_s3_file_manager/ | Carpeta principal del projecte. |
├── app/ | Nucli de l’aplicació. Conté tota la lògica de Flask i l’abstracció(amagar els detalls complexos) d’S3. |
├── s3_client.py | El Mòdul Cervell. Centralitza tota la comunicació amb la API de AWS Boto3. |
├── web.py | S’encarrega de les rutes i la interfície web amb Flask. |
├── scripts/ | Arxius independents per a proves ràpides i demostracions de funcions claus. |
├── tests/ | Tests unitaris i d’integració per a assegurar que les funcions d’S3 operin correctament. |
└── requirements.txt | Llista de llibreries de Python necessàries (boto3, Flask). |
Instal·lació i configuració del AWS CLIPer començar i per tenir tots el requisits previs a engegar el projecte, hem de tenir un usuari IAM amb el privilegi AmazonS3FullAccess i torno a dir que és totalment desaconsellable com a pràctica comuna en un entorn de producció donar aquests privilegis a un usuari qualsevol ja que seria donar-li molt de poder. Però en aquest cas és només per fer el laboratori.
Entrem al nostre compte d’administrador IAM, un cop dins anem al servei IAM. Anem a Usuaris, on fem clic a “Crear persona”, li donem el nom boto3_user i NO li donem accés a la consola d’administració d’AWS.
Creem un nou grup. Fem clic a “Crear un grupo”, busquem la política, la marquem i afegim el nostre usuari.
Ja creat, seleccionem boto3_user i anem a la pestanya on diu “Credenciales de seguridad”, aquesta és la part on aconseguirem la clau d’accés per entrar desde la CLI.
Anem a “Claves de acceso”, creem la clau d’accés i d’aquesta forma tindrem la clau d’accés i una clau d’accés secreta, aquesta clau mai s’ha de compartir és un perill MORTAL, per tant molt de compte amb això. Censureu-la a les captures. Podries ser hackejat en qüestió de minuts.
Anem al nostre terminal. On ja tenim instal·lat aws. Escriurem aws configure i aquest ens demanarà les dos claus que hem creat, la regió que utilitzarem per defecte a aquest compte i el format de sortida predeterminat, que jo he posat JSON. Per veure si està tot correcte farem un aws s3 ls i deuries veure els buckets que tens al teu compte d’AWS. Fins aquí la primera part.
Comentaris
Publica un comentari a l'entrada