File size: 1,050 Bytes
6af7294
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import io
from datetime import datetime, timezone
import uuid
import boto3
from config import AWSConfig

#Upload data to s3
def write_to_s3(image, fname, region_name='ap-south-1'):
    """
    Write an image to s3. Returns the url. Requires AWSConfig
    # TODO : Add error handling
    # TODO : Add logging
    """
    s3 = boto3.client('s3', region_name,aws_access_key_id=AWSConfig.aws_access_key_id, aws_secret_access_key=AWSConfig.aws_secret_access_key)
    s3.upload_fileobj(image,AWSConfig.bucket_name,fname)
    return f'https://{AWSConfig.bucket_name}.s3.{region_name}.amazonaws.com/{fname}'

def save_image(img):
    """
    Save an image to s3. Returns the url and filename for JSON output
    # TODO : Add error handling
    """
    in_mem_file = io.BytesIO()
    img.save(in_mem_file, format = 'png')
    in_mem_file.seek(0)
    dt = datetime.now()
    file_name = str(uuid.uuid4())+'-'+str(int(dt.replace(tzinfo=timezone.utc).timestamp()))
    img_url =  write_to_s3(in_mem_file,f'sdimage/{file_name}.jpeg')
    return img_url,file_name