import boto3
import urllib
def create_presigned_url(
object_folder,
object_name,
aws_access_key_id=None,
aws_secret_access_key=None,
expiration=3600,
token=None
):
s3_client = boto3.client(
"s3",
region_name="AWS Region",
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key,
)
try:
url = s3_client.generate_presigned_url(
"put_object",
Params={
"Bucket": "Bucket Name",
"Key": f"{object_folder}/{object_name}",
},
ExpiresIn=expiration,
)
url += "&" + urllib.parse.urlencode({"token": token})
logger.info("Got presigned URL: %s", url)
except ClientError as e:
logging.error(e)
return None
return url
url = create_presigned_url(
object_folder="folder",
object_name="obj_name",
aws_access_key_id=None,
aws_secret_access_key=None,
expiration=3600,
token=self.request.user.pk,
)