Предписанный URL-адрес AWS S3 с метаданными - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь создать Presigned-URL, используя boto3 ниже

s3 = boto3.client(
    's3', 
    aws_access_key_id=settings.AWS_ACCESS_KEY, 
    aws_secret_access_key=settings.AWS_ACCESS_SECRET, 
    region_name=settings.AWS_SES_REGION_NAME,
    config=Config(signature_version='s3v4')
)
metadata = {
    'test':'testing'
}
presigned_url = s3.generate_presigned_url(
ClientMethod='put_object', 
Params={
    'Bucket': settings.AWS_S3_BUCKET_NAME,
    'Key': str(new_file.uuid),
    'ContentDisposition': 'inline',
    'Metadata': metadata
})

Итак, после того, как URL сгенерирован, и я пытаюсь загрузить его на S3 с помощью Ajax, он дает 403 запрещенных.Если я удаляю метаданные и ContentDisposition при создании URL-адреса, он успешно загружается.

Версия Boto3: 1.9.33

Ниже приведен документ, на который я ссылаюсь: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.generate_presigned_url

1 Ответ

0 голосов
/ 07 декабря 2018

Да, у меня все получилось, в основном после генерации подписанного URL мне нужно отправить все метаданные и Content-Dispostion в заголовке вместе с подписанным URL.Например, мой словарь метаданных: {'test': 'test'}, тогда мне нужно отправить эти метаданные в заголовке, т.е. x-amz-meta-test вместе с его значением и content-dispose до AWS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...