import code
This commit is contained in:
12
Dockerfile
Executable file
12
Dockerfile
Executable file
@@ -0,0 +1,12 @@
|
||||
FROM python:3.11-slim
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY requirements.txt .
|
||||
COPY app.py .
|
||||
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
EXPOSE 5000
|
||||
|
||||
CMD ["python", "app.py"]
|
||||
68
app.py
Executable file
68
app.py
Executable file
@@ -0,0 +1,68 @@
|
||||
from flask import Flask, jsonify, request, Blueprint
|
||||
from flasgger import Swagger
|
||||
import logging
|
||||
|
||||
app = Flask(__name__)
|
||||
swagger = Swagger(app)
|
||||
|
||||
# Configura il logging
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Crea un blueprint per l'API v1
|
||||
api_v1 = Blueprint('api_v1', __name__)
|
||||
|
||||
@api_v1.route('/greet', methods=['GET'])
|
||||
def greet():
|
||||
"""
|
||||
Greet a user by name.
|
||||
---
|
||||
tags:
|
||||
- Greeting
|
||||
parameters:
|
||||
- name: name
|
||||
in: query
|
||||
type: string
|
||||
required: false
|
||||
default: World
|
||||
description: The name to greet.
|
||||
responses:
|
||||
200:
|
||||
description: A greeting message
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
message:
|
||||
type: string
|
||||
example: Hello, World!
|
||||
"""
|
||||
name = request.args.get('name', 'World')
|
||||
message = f'Hello, {name}!'
|
||||
logger.info(f"[v1] Greeting requested for name: {name}")
|
||||
return jsonify({'message': message})
|
||||
|
||||
# Aggiungi endpoint di health check
|
||||
@app.route('/health', methods=['GET'])
|
||||
def health_check():
|
||||
"""
|
||||
Health check endpoint.
|
||||
---
|
||||
tags:
|
||||
- Health
|
||||
responses:
|
||||
200:
|
||||
description: Service is healthy
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
status:
|
||||
type: string
|
||||
example: OK
|
||||
"""
|
||||
return jsonify({'status': 'OK'}), 200
|
||||
|
||||
# Registra il blueprint sotto /api/v1
|
||||
app.register_blueprint(api_v1, url_prefix='/api/v1')
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0', port=5000)
|
||||
2
requirements.txt
Executable file
2
requirements.txt
Executable file
@@ -0,0 +1,2 @@
|
||||
flask
|
||||
flasgger
|
||||
48
task-definition-rev1.json
Normal file
48
task-definition-rev1.json
Normal file
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"family": "pygreeting",
|
||||
"containerDefinitions": [
|
||||
{
|
||||
"name": "pygreeting",
|
||||
"image": "public.ecr.aws/t5q0y5r5/pygreeting:latest",
|
||||
"cpu": 0,
|
||||
"portMappings": [
|
||||
{
|
||||
"name": "pygreeting-5000-tcp",
|
||||
"containerPort": 5000,
|
||||
"hostPort": 5000,
|
||||
"protocol": "tcp",
|
||||
"appProtocol": "http"
|
||||
}
|
||||
],
|
||||
"essential": true,
|
||||
"environment": [],
|
||||
"environmentFiles": [],
|
||||
"mountPoints": [],
|
||||
"volumesFrom": [],
|
||||
"ulimits": [],
|
||||
"healthCheck": {
|
||||
"command": [
|
||||
"CMD-SHELL",
|
||||
"curl --location 'localhost:5000/health' || exit 1"
|
||||
],
|
||||
"interval": 30,
|
||||
"timeout": 5,
|
||||
"retries": 3
|
||||
},
|
||||
"systemControls": []
|
||||
}
|
||||
],
|
||||
"volumes": [],
|
||||
"placementConstraints": [],
|
||||
"networkMode": "awsvpc",
|
||||
"requiresCompatibilities": [
|
||||
"FARGATE"
|
||||
],
|
||||
"cpu": "1024",
|
||||
"memory": "3072",
|
||||
"runtimePlatform": {
|
||||
"cpuArchitecture": "X86_64",
|
||||
"operatingSystemFamily": "LINUX"
|
||||
},
|
||||
"enableFaultInjection": false
|
||||
}
|
||||
Reference in New Issue
Block a user