AWS S3 - политика Bucket с HTTP-сообщением - PullRequest
0 голосов
/ 02 января 2019

В настоящее время я следую этому учебному пособию по AWS , чтобы попытаться разрешить клиенту из моего веб-приложения загружаться в мое хранилище S3.У меня есть политика POST, как описано в руководстве (некоторые детали отредактированы):

{ "expiration": "2019-12-30T12:00:00.000Z",
  "conditions": [
    {"bucket": "<MY BUCKET NAME>"},
    ["starts-with", "$key", "images/"],
    {"acl": "public-read"},
    ["starts-with", "$Content-Type", "image/"],
    {"x-amz-algorithm": "AWS4-HMAC-SHA256"},
    {"x-amz-credential": "<AWSAccessKeyId>/20190101/eu-west-2/s3/aws4_request"},
    {"x-amz-date": "20190101T000000Z" }
  ]
}

У меня есть HTML-форма, как указано:

  <form action="http://<bucket-name>.s3.amazonaws.com/" method="post" enctype="multipart/form-data">
    Key to upload:
    <input type="input"  name="key" value="images/${filename}" /><br />
    <input type="hidden" name="acl" value="public-read" />
    Content-Type:
    <input type="input"  name="Content-Type" value="image/jpeg" /><br />
    <input type="text"   name="X-Amz-Credential" value="<AWSAccessKeyId>/20190101/eu-west-2/s3/aws4_request" />
    <input type="text"   name="X-Amz-Algorithm" value="AWS4-HMAC-SHA256" />
    <input type="text"   name="X-Amz-Date" value="20190101T000000Z" />

    Tags for File:
    <input type="input"  name="x-amz-meta-tag" value="" /><br />
    <input type="hidden" name="Policy" value='<MY BASE 64 policy>' />
    <input type="hidden" name="X-Amz-Signature" value="<SIGNATURE-VALUE>" />
    <!-- File:  -->
    <input type="file"   name="file" /> <br />
    <!-- The elements after this will be ignored -->
    <input type="submit" name="submit" value="Upload to Amazon S3" />
  </form>

Что касается моего кода создания подписи,Я использовал их пример на python, и когда я протестировал его с их строкой, чтобы подписать и основать 64 примера, я получил правильный результат.Так что я не думаю, что моя проблема есть, но я всегда могу загрузить свой код Python для этого тоже.

Однако, когда я пытаюсь отправить эту форму и загрузить изображение, я получаю ошибку SignatureDoesNotMatch на получающейся странице XML.

Должен ли я загружать политику POST в разрешения моего сегмента?Я не уверен, как AWS вычисляет подпись, так как не думаю, что я дал ей свою политику.Я просто делаю простую ошибку?

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