Questo progetto ha lo scopo di esplorare e sperimentare i servizi API Gateway, AWS Lambda e Amazon S3 per creare una semplice architettura di API REST serverless che consente di caricare e scaricare file da un bucket S3.
Inoltre, è stato necessario configurare correttamente i ruoli IAM, assegnando permessi mirati alle funzioni Lambda.
- Nome:
LambdaUploadApi - Linguaggio:
Python 3.13 - IAM Role:
LambdaUploadApiRole - Policy assegnata:
AmazonS3FullAccess(inizialmente read-only, poi estesa)
- Nome:
LambdaDownloadApi - Linguaggio:
Python 3.13 - IAM Role:
LambdaDownloadApiRole - Policy creata manualmente con permesso di lettura su S3
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::s3-bucket-gioele/*"
}
]
}- Nome:
LambdaUploadApiPolicy - Assegnata a:
LambdaUploadApiRole
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::s3-bucket-gioele/*"
}
]
}- Nome:
LambdaDownloadApiPolicy - Assegnata a:
LambdaDownloadApiRole
- Nome bucket:
s3-bucket-gioele - Nessuna configurazione avanzata, permessi gestiti da IAM policies.
Payload JSON di esempio:
{
"body": "{\"filename\": \"test.txt\", \"content\": \"VGhpcyBpcyBhIHRlc3QgZmlsZSBmb3IgU0Mu\"}"
}Payload JSON di esempio:
{
"queryStringParameters": {
"filename": "test.txt"
}
}- Tipo API:
HTTP - Nome:
API Gateway Main - Due route configurate:
- Metodo:
PUT - Integrazione:
LambdaUploadApi
- Metodo:
GET - Integrazione:
LambdaDownloadApi
Comando curl per test:
curl -X PUT "https://mio-indirizzo-del-gateway/prod/upload" \
-H "Content-Type: application/json" \
-d '{"filename": "prova.txt", "content": "VGhpcyBpcyBhIHRlc3Q="}'URL con parametro query:
https://mio-indirizzo-del-gateway/prod/download?filename=prova.txt
Questo progetto ha mostrato come costruire un’API REST completa utilizzando AWS in modalità serverless, senza necessità di server EC2.
È stata un’ottima occasione per comprendere il funzionamento delle Lambda functions, del controllo degli accessi IAM, della gestione dei bucket S3 e della configurazione di API Gateway.
Tutti i componenti utilizzati rientrano nel Free Tier di AWS.
