Boto3 конфликт с url конечной точки и bucket вызывает ошибку
Правильный url файла из S3:
https://video-sftp.s3.amazonaws.com/600.mp4
Теперь при попытке сгенерировать предварительно подписанный url с помощью boto3 url файла неверен:
https://video-sftp.s3.amazonaws.com/video-sftp/600.mp4
имя ведра добавляется как каталог?
AWS_S3_ENDPOINT_URL='https://video-sftp.s3.amazonaws.com'
AWS_S3_REGION_NAME='us-east-1'
Вот код:
def post(self, request, *args, **kwargs):
session = boto3.session.Session()
client = session.client(
"s3",
region_name=settings.AWS_S3_REGION_NAME,
endpoint_url=settings.AWS_S3_ENDPOINT_URL,
aws_access_key_id=settings.AWS_ACCESS_KEY_ID,
aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY,
)
url = client.generate_presigned_url(
ClientMethod="put_object",
Params={
"Bucket": "video-sftp",
"Key": f"{json.loads(request.body)['fileName']}",
},
ExpiresIn=300,
)
return JsonResponse({"url": url})
Похоже, что он ищет каталог video-sftp
в ведре video-sftp
? Как мне решить?
Я пробовал изменить url конечной точки на https://s3.us-east-1.amazonaws.com
, что приводит к 403 forbidden. Я обновил политику CORs, чтобы разрешить PUT
.