0

В presigned URLs в S3 файлы, которые мы производим работают нормально на некоторое время, а затем мы получаем сообщение об ошибке:GetPreSignedUrl и Elastic Beanstalk

<Error> 
<Code>ExpiredToken</Code> 
<Message>The provided token has expired.</Message> 
... 
</Error> 

У нас есть веб-приложение ASP.NET MVC, работающих на упругом бобовый стебель под роль IAM и создают связи с вызовом api GetPresignedUrl(). Дата истечения срока действия составляет 2 года, поэтому я думаю, что причина, по которой ссылки истекают, заключается в том, что "any URLs using IAM role keys will expire when that role key expires".

Каков наилучший способ создания назначенных URL-адресов из веб-приложений с эластичным beanstalk-сервером, срок действия которых не истечет при развертывании новой версии приложения?

ответ

0

Лучшим решением, которое я разработал, является создание пользователя, который имеет доступ только для чтения к объектам S3, к которым я хочу предоставить подписанные ссылки. При создании подписанных ссылок я использую нового пользователя для создания клиента для вызова GetPresignedUrl().

AWSClientFactory.CreateAmazonS3Client(AwsAccessKeyForPresignedUrls, 
       AwsSecretAccessKeyForPreSignedUrls, region); 

Не очень красиво, как у меня теперь есть ключи, доступные для веб-приложения, и если ключи скомпрометированы, и я должен отменить их, все старые presigned URLs перестанет работать. Я открыт для других решений.

Смежные вопросы