Spaces:
Build error
Build error
| import boto3 | |
| import uuid | |
| import time | |
| import os | |
| from PIL import Image | |
| from io import BytesIO | |
| MAX_PIXELS = 2048 | |
| AWS_BUCKET_NAME = os.environ.get("AWS_BUCKET_NAME", "") | |
| AWS_INFERENCE_LOG_TABLE = os.environ.get("AWS_INFERENCE_LOG_TABLE", "") | |
| AWS_FEEDBACK_LOG_TABLE = os.environ.get("AWS_FEEDBACK_LOG_TABLE", "") | |
| AWS_REGION = os.environ.get("AWS_REGION", "") | |
| AWS_ACCESS_ID = os.environ.get("AWS_ACCESS_ID", "") | |
| AWS_ACCESS_KEY = os.environ.get("AWS_ACCESS_KEY", "") | |
| aws_cfg = { | |
| "aws_access_key_id": AWS_ACCESS_ID, | |
| "aws_secret_access_key": AWS_ACCESS_KEY, | |
| "region_name": AWS_REGION, | |
| } | |
| s3_client = boto3.client("s3", **aws_cfg) | |
| dynamodb = boto3.resource("dynamodb", **aws_cfg) | |
| inference_log = dynamodb.Table(AWS_INFERENCE_LOG_TABLE) | |
| feedback_log = dynamodb.Table(AWS_FEEDBACK_LOG_TABLE) | |
| def get_metadata(): | |
| return { | |
| "_id": uuid.uuid4().hex, | |
| "created_at": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), | |
| } | |
| def insert_log(table_type: str, data: dict): | |
| assert table_type in ["inference", "feedback"], "Invalid table type" | |
| table = inference_log if table_type == "inference" else feedback_log | |
| metadata = get_metadata() | |
| response = table.put_item( | |
| Item={ | |
| **data, | |
| **metadata, | |
| } | |
| ) | |
| return response, metadata["_id"] | |
| # Example usage: | |
| # insert_log("inference", {"data": "test"}) | |
| # insert_log("feedback", {"data": "test"}) | |
| def get_image_obj(image: Image) -> BytesIO: | |
| image.thumbnail((MAX_PIXELS, MAX_PIXELS)) | |
| image_obj = BytesIO() | |
| image.save(image_obj, format="WEBP") | |
| image_obj.seek(0) | |
| return image_obj | |
| def log_image(image: Image) -> str: | |
| metadata = get_metadata() | |
| image_obj = get_image_obj(image) | |
| s3_key = f"images/{metadata['_id']}.webp" | |
| s3_client.upload_fileobj(image_obj, AWS_BUCKET_NAME, s3_key) | |
| return metadata["_id"] | |
| # Example usage: | |
| # image = Image.open("examples/doge.jpg") | |
| # log_image(image) | |