stable-diffusion-aws-extension/middleware_api/workflows/delete_workflows.py

48 lines
1.3 KiB
Python

import json
import logging
import os
from dataclasses import dataclass
import boto3
from aws_lambda_powertools import Tracer
from common.ddb_service.client import DynamoDbUtilsService
from common.response import no_content
from libs.utils import response_error
tracer = Tracer()
workflows_table = os.environ.get('WORKFLOWS_TABLE')
logger = logging.getLogger(__name__)
logger.setLevel(os.environ.get('LOG_LEVEL') or logging.ERROR)
ddb_service = DynamoDbUtilsService(logger=logger)
esd_version = os.environ.get("ESD_VERSION")
s3_resource = boto3.resource('s3')
bucket_name = os.environ.get('S3_BUCKET_NAME')
s3_bucket = s3_resource.Bucket(bucket_name)
@dataclass
class DeleteWorkflowsEvent:
workflow_name_list: [str]
@tracer.capture_lambda_handler
def handler(raw_event, ctx):
try:
logger.info(json.dumps(raw_event))
event = DeleteWorkflowsEvent(**json.loads(raw_event['body']))
for name in event.workflow_name_list:
s3_bucket.objects.filter(Prefix=f"comfy/workflows/{name}/").delete()
ddb_service.delete_item(
table=workflows_table,
keys={'name': name},
)
return no_content(message="Workflows Deleted")
except Exception as e:
return response_error(e)