4from dotenv
import load_dotenv
5from botocore.exceptions
import ClientError
8ACCESS_ID = os.environ.get(
"AWS_KEY_ID")
9ACCESS_KEY = os.environ.get(
"AWS_KEY_SECRET")
10REGION = os.environ.get(
"REGION")
11ACCESS_TOKEN = os.environ.get(
"BITLY_TOKEN")
12s3_client = boto3.client(
"s3", aws_access_key_id=ACCESS_ID, aws_secret_access_key= ACCESS_KEY, region_name=REGION)
15 """Generate a presigned URL to share an S3 object via lambda invoke
18 bucket (str): bucket where report was uploaded
19 object (str): full report object name
20 expiration (int): time in seconds for the presigned URL to remain valid
21 Returns: response (str): If error, returns None.
23 params={
'Bucket': bucket,
'Key': object}
25 response = s3_client.generate_presigned_url(
'get_object', Params=params, ExpiresIn=expiration)
26 except ClientError
as e:
48 Shorts URL using TynyURL service
51 long_url (str): presigned url for report
58 shortener = pyshorteners.Shortener()
59 short_url = shortener.tinyurl.short(long_url)
61 except Exception
as e:
62 print(f
"Error shorting URL: {e} Returning long url")
67 Uploads all files to s3 path defined previously
70 local_path (str): Root path where is saved files
71 files (str): File to upload
72 Returns: url, s3 path.
74 full_path = local_path+file
75 s3_full_path = s3_path+file
76 s3_client.upload_file(full_path, bucket, s3_full_path)
79 return url, s3_full_path
create_presigned_url(bucket, object, expiration=86400)
upload_files_s3(bucket, s3_path, local_path, file)