28 lines
1007 B
Python
28 lines
1007 B
Python
import boto3
|
|
import os
|
|
import uuid
|
|
|
|
|
|
def s3_upload(bytes_or_file_like, filename=None, file_extension=None):
|
|
'''
|
|
@bytes_or_file_like: bytes(), open('filepath') or io.StringIO('')
|
|
'''
|
|
if filename is None:
|
|
filename = uuid.uuid4().hex
|
|
if file_extension:
|
|
filename += file_extension
|
|
|
|
s3 = boto3.resource('s3',
|
|
aws_access_key_id=os.getenv('AWS_ACCESS_KEY_ID'),
|
|
aws_secret_access_key=os.getenv('AWS_SECRET_ACCESS_KEY'))
|
|
|
|
# Default: test environment
|
|
bucket_name = os.getenv('AWS_S3_BUCKET', 'sunpower-test-dgplatform-spectrum')
|
|
|
|
# Assuming bucket already exists
|
|
s3.Bucket(bucket_name).put_object(Key=filename, Body=bytes_or_file_like.read(), ACL='public-read')
|
|
# file_url = 'https://s3.amazonaws.com/{}/{}'.format(bucket_name, filename) # PermanentRedirect error
|
|
file_url = 'https://{}.s3.amazonaws.com/{}'.format(bucket_name, filename)
|
|
print('Uploaded filename {} to S3: {}'.format(filename, file_url))
|
|
return file_url
|