mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-20 14:29:51 -04:00
Proactively specify aws region for s3 operations
This commit is contained in:
@@ -6,11 +6,18 @@ from flask import current_app
|
||||
|
||||
default_access_key = os.environ.get('AWS_ACCESS_KEY_ID')
|
||||
default_secret_key = os.environ.get('AWS_SECRET_ACCESS_KEY')
|
||||
default_region = os.environ.get('AWS_REGION')
|
||||
|
||||
|
||||
def get_s3_object(bucket_name, filename, access_key=default_access_key, secret_key=default_secret_key):
|
||||
def get_s3_object(
|
||||
bucket_name,
|
||||
filename,
|
||||
access_key=default_access_key,
|
||||
secret_key=default_secret_key,
|
||||
region=default_region,
|
||||
):
|
||||
# To inspect contents: obj.get()['Body'].read().decode('utf-8')
|
||||
session = Session(aws_access_key_id=access_key, aws_secret_access_key=secret_key)
|
||||
session = Session(aws_access_key_id=access_key, aws_secret_access_key=secret_key, region_name=region)
|
||||
s3 = session.resource('s3')
|
||||
obj = s3.Object(bucket_name, filename)
|
||||
return obj
|
||||
|
||||
@@ -19,6 +19,7 @@ def get_csv_location(service_id, upload_id):
|
||||
FILE_LOCATION_STRUCTURE.format(service_id, upload_id),
|
||||
current_app.config['CSV_UPLOAD_ACCESS_KEY'],
|
||||
current_app.config['CSV_UPLOAD_SECRET_KEY'],
|
||||
current_app.config['CSV_UPLOAD_REGION'],
|
||||
)
|
||||
|
||||
|
||||
@@ -26,9 +27,9 @@ def get_csv_upload(service_id, upload_id):
|
||||
return get_s3_object(*get_csv_location(service_id, upload_id))
|
||||
|
||||
|
||||
def s3upload(service_id, filedata, region):
|
||||
def s3upload(service_id, filedata):
|
||||
upload_id = str(uuid.uuid4())
|
||||
bucket_name, file_location, access_key, secret_key = get_csv_location(service_id, upload_id)
|
||||
bucket_name, file_location, access_key, secret_key, region = get_csv_location(service_id, upload_id)
|
||||
utils_s3upload(
|
||||
filedata=filedata['data'],
|
||||
region=region,
|
||||
|
||||
@@ -19,6 +19,7 @@ def get_logo_location(filename=None):
|
||||
filename,
|
||||
current_app.config['LOGO_UPLOAD_ACCESS_KEY'],
|
||||
current_app.config['LOGO_UPLOAD_SECRET_KEY'],
|
||||
current_app.config['LOGO_UPLOAD_REGION'],
|
||||
)
|
||||
|
||||
|
||||
@@ -29,8 +30,8 @@ def delete_s3_object(filename):
|
||||
def persist_logo(old_name, new_name):
|
||||
if old_name == new_name:
|
||||
return
|
||||
bucket_name, filename, access_key, secret_key = get_logo_location(new_name)
|
||||
get_s3_object(bucket_name, filename, access_key, secret_key).copy_from(
|
||||
bucket_name, filename, access_key, secret_key, region = get_logo_location(new_name)
|
||||
get_s3_object(bucket_name, filename, access_key, secret_key, region).copy_from(
|
||||
CopySource='{}/{}'.format(bucket_name, old_name))
|
||||
delete_s3_object(old_name)
|
||||
|
||||
@@ -38,7 +39,8 @@ def persist_logo(old_name, new_name):
|
||||
def get_s3_objects_filter_by_prefix(prefix):
|
||||
bucket_name = current_app.config['LOGO_UPLOAD_BUCKET_NAME']
|
||||
session = Session(aws_access_key_id=current_app.config['LOGO_UPLOAD_ACCESS_KEY'],
|
||||
aws_secret_access_key=current_app.config['LOGO_UPLOAD_SECRET_KEY'])
|
||||
aws_secret_access_key=current_app.config['LOGO_UPLOAD_SECRET_KEY'],
|
||||
region_name=current_app.config['LOGO_UPLOAD_REGION'])
|
||||
s3 = session.resource('s3')
|
||||
return s3.Bucket(bucket_name).objects.filter(Prefix=prefix)
|
||||
|
||||
@@ -51,7 +53,7 @@ def get_letter_filename_with_no_path_or_extension(filename):
|
||||
return filename[len(LETTER_PREFIX):-4]
|
||||
|
||||
|
||||
def upload_email_logo(filename, filedata, region, user_id):
|
||||
def upload_email_logo(filename, filedata, user_id):
|
||||
upload_file_name = EMAIL_LOGO_LOCATION_STRUCTURE.format(
|
||||
temp=TEMP_TAG.format(user_id=user_id),
|
||||
unique_id=str(uuid.uuid4()),
|
||||
@@ -60,7 +62,7 @@ def upload_email_logo(filename, filedata, region, user_id):
|
||||
bucket_name = current_app.config['LOGO_UPLOAD_BUCKET_NAME']
|
||||
utils_s3upload(
|
||||
filedata=filedata,
|
||||
region=region,
|
||||
region=current_app.config['LOGO_UPLOAD_REGION'],
|
||||
bucket_name=bucket_name,
|
||||
file_location=upload_file_name,
|
||||
content_type='image/png',
|
||||
@@ -71,7 +73,7 @@ def upload_email_logo(filename, filedata, region, user_id):
|
||||
return upload_file_name
|
||||
|
||||
|
||||
def upload_letter_temp_logo(filename, filedata, region, user_id):
|
||||
def upload_letter_temp_logo(filename, filedata, user_id):
|
||||
upload_filename = LETTER_TEMP_LOGO_LOCATION.format(
|
||||
user_id=user_id,
|
||||
unique_id=str(uuid.uuid4()),
|
||||
@@ -80,7 +82,7 @@ def upload_letter_temp_logo(filename, filedata, region, user_id):
|
||||
bucket_name = current_app.config['LOGO_UPLOAD_BUCKET_NAME']
|
||||
utils_s3upload(
|
||||
filedata=filedata,
|
||||
region=region,
|
||||
region=current_app.config['LOGO_UPLOAD_REGION'],
|
||||
bucket_name=bucket_name,
|
||||
file_location=upload_filename,
|
||||
content_type='image/svg+xml',
|
||||
|
||||
Reference in New Issue
Block a user