Создайте значения политики и подписи для хранения данных непосредственно из запроса HTML-публикации в корзину Amazon S3 - PullRequest
0 голосов
/ 22 мая 2018
import base64
import hmac, hashlib
AWS_SECRET_ACCESS_KEY = 'AKIAIHHMU7Y4L2INOFRQ'

policy_document = {
    "expiration": "2019-01-01T00:00:00Z",
    "conditions": [ {"bucket": "report-generation1"},
                    ["starts-with", "$key", ""],
                    {"acl": "private"},
                    {"success_action_redirect": "localhost/";},
                    ["starts-with", "$Content-Type", ""],
                    ["content-length-range", 0, 1048576]
                   ]
                  }

policy = base64.b64encode(policy_document)

signature = base64.b64encode(hmac.new(AWS_SECRET_ACCESS_KEY, policy, hashlib.sha1).digest())

Мне нужно сгенерировать значения политики и подписи для хранения данных непосредственно из HTML-запроса в корзину Amazon S3.

Вышеприведенная программа выдает ошибку:

TypeError:требуется подобный байту объект, а не 'dict' ..

1 Ответ

0 голосов
/ 22 мая 2018

Ах!Все получилось.

У вас была случайная точка с запятой.Кроме того, b64encode требует строки, а не словаря, поэтому просто поместите объект в кавычки.

import base64
import hmac, hashlib
AWS_SECRET_ACCESS_KEY = '<your-secret-access-key>'

policy_document = '{"expiration": "2019-01-01T00:00:00Z", "conditions": [ {"bucket": "report-generation1"}, ["starts-with", "$key", ""], {"acl": "private"}, {"success_action_redirect": "localhost/"}, ["starts-with", "$Content-Type", ""], ["content-length-range", 0, 1048576]]}'

policy = base64.b64encode(policy_document)

signature = base64.b64encode(hmac.new(AWS_SECRET_ACCESS_KEY, policy, hashlib.sha1).digest())

Также обратите внимание, что вы указали Access Key вместо Secret Access Key.

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