Это продолжение моего previous question относительно подписания документа политики с использованием профилей экземпляров.Загрузка браузера на s3 с ролями экземпляра
Я разрабатываю систему, которая позволяет перетаскивать &. Загружает файлы непосредственно в ведро S3; сначала выполняется запрос AJAX на мой сервер, содержащий метаданные файла. После проверки мой сервер отвечает параметрами формы, которые используются для завершения загрузки.
Процесс настройки загрузки на основе браузера хорошо объяснен here, и все это работает в локальной тестовой среде.
Однако после того, как мое приложение развертывается на экземпляре EC2, я вижу эту ошибку, когда браузер пытается загрузить файл:
<Error>
<Code>InvalidAccessKeyId</Code>
<Message>The AWS Access Key Id you provided does not exist in our records.</Message>
<RequestId>...</RequestId>
<HostId>...</HostId>
<AWSAccessKeyId>ASIAxxxyyyzzz</AWSAccessKeyId>
</Error>
Значение ASIAxxxyyyzzz
здесь идет от учетных ролей экземпляра, полученный из службы метаданных; кажется, что эти учетные данные не могут использоваться вне EC2 для облегчения загрузки на основе браузера.
Я смотрел на Security Token Service, а также для создания другого набора временных полномочий, делая это:
$token = $sts->assumeRole(array(
'RoleArn' => 'arn:aws:iam::xyz:role/mydomain.com',
'RoleSessionName' => 'uploader',
));
$credentials = new Credentials($token['Credentials']['AccessKeyId'], $token['Credentials']['SecretAccessKey']);
Вызов Гивенс мне новый набор учетных данных, но он дает ту же ошибку, как указано выше, если Я использую это.
Я надеюсь, что кто-то сделал это раньше, и может сказать мне, что глупо я пропустил :)
hi jack, можете ли вы, пожалуйста, опубликовать свою работу по загрузке на s3 с использованием только временных учетных данных. Мне сложно понять это. T__T –
@WonderingCoder Загрузка сама по себе не происходит в PHP; это делается в JavaScript и использует класс 'FormData' (для браузеров, которые его поддерживают) и CORS. Это та часть, о которой вы хотели бы узнать больше? –
привет благодарю вас за ответ. Пожалуйста, посмотрите мой пост, я тоже использую временные учетные данные. Единственное наше отличие в том, что вы использовали SDK: [мой пост] (http://stackoverflow.com/questions/19401936/signaturedoesnotmatch-browser-based-upload -в-s3). Это было 4 дня, и я все еще пытаюсь сделать эту работу –