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.

Вернуться на верх