Boto3 генерирует различные ссылки локально и на эластичном бобовом стебле с помощью приложения django - PullRequest
1 голос
/ 28 марта 2019

Я сейчас немного растерялся: У меня есть приложение Django, которое загружает файлы на s3 и генерирует ссылки для скачивания в административной панели, чтобы получить файлы после загрузки. Я использую boto3 для подписи ссылок на скачивание и скачивание. Все это прекрасно работает локально, но как только я разверну его на эластичном бобовом стебле, ссылки для загрузки больше не будут работать, и, похоже, он генерирует ссылки со старой поющей версией. Загрузка по-прежнему работает, хотя.

Я генерирую ссылки так:

 def downloadUrl(self):
    s3Client = boto3.client('s3')
    bucketName = getattr(settings, "AWS_STORAGE_BUCKET_NAME", None)
    fileurl = s3Client.generate_presigned_url('get_object', Params={'Bucket': bucketName, 'Key': self.url.split(bucketName + '/')[1]},
                                    ExpiresIn=100)
    return format_html("<a href='{url}'>{url}</a>", url=fileurl)

И забавно то, что он работает локально, а сгенерированные ссылки разные:

Локальная ссылка:

https://bucketname.s3.amazonaws.com/uploads/something/zips/2019/03/28/App%20Beschreibung.pdf.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJNND443OXASGOY2Q%2F201330328%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20190328T101414Z&X-Amz-Expires=100&X-Amz-SignedHeaders=host&X-Amz-Signature=4fe4d31dc1fd1f772217656654025b669513597c3f91f857fb722ff63a6c0194

Ссылка, создаваемая развертыванием Elastic Beanstalk:

https://bucketname.s3.amazonaws.com/uploads/something/zips/2019/03/28/App%20Beschreibung.pdf.zip?AWSAccessKeyId=ASIA2K3XQKDHVDBX3GWN&Signature=w%2FWRh6tf%2Ba7k91Odop3ly9gEJDw%3D&x-amz-security-token=AgoJb3JpZ2luX2VjEHIaDGV1LWNlbnRyYWwtMSJIMEYCIQD7hU0fX24bksIM3vlQxZjYeje2sDm%2FQeeFQqUt7MwDpQIhAIozM1i1%2FmGK2Xo0RXmR7UWAB2FRPdkQy3aBOisS3BzuKuADCCsQABoMNzEwNTMwODQ2OTI3IgxfJIvFGgD5WL6TwccqvQO1Bsri%2FTmpvaARkFA%2BOnhLRUv9FFfdFf6H8W4IY38OI6CWzvct%2BgmE14D06GHaCh65wKH%2BhR9ZT3V18sW9U4RM%2FpS64hESmC8SUerzpPv9RmuXgA8hQl%2BwRJaTFLGFRFrHdHFoeJAeLIKjK2B7lDjLzNALtvegnLrBYoBtT0Ga2a7CC7avWMevvQ0jAjuSMiEOS4FjXNwHInkb%2FCrX3EXk2Me9OaufICHGH0ZTN2WNAGtOPsY15YJyLf0WgDl7SxVLuAnA4nUzeMglsdaL9ZbUlsdleJtHTQefNqCXXsm4FIup%2Fe%2FNFkn9g7XDH9%2F9IXW%2FNZyBAtfrRoPmDwvv0KpeYPpRpkVKBa5TxQU1c6ei3AiHnIQZRdO5oEqW47qv9hM8%2Fw9U9VlDqyUy5BKbGnv7GTLCdh4%2FwcYEnlfgr8QdK%2BJzyQYdgpMYqw3hj%2FTDW8mJVI9AD3RpHnD0XwIL3BBH5fUgcNZm2vGLG5nOcav7u2YaeqdFiY95SkdL5C8CLv%2BRLYABXyAbeWPUtFzgTtdUFFlv5epAQO2cPOD%2BM3V%2BjhfTQa4WUSIRCwUpSQg3dahIvV75cbKdsdZ7bL1tRMIqz8uQFOrMBC7isGac1kJ0TqHMbiQ77QauekC9c1gy6wgnKu9enc2x4VvyhClhvTvmEFm5NW3CmU5LIXf9V4Df9ML7Mf3Nf2uhuAhQdTKoAIGPiVWz%2FB3Lh%2F58%2FLbRbIRNgWk6IDg88dzgevitkXSC0OokmpB3qbBj%2BGXjIHttHqdBKnjG22aud3wrMk6YxH8b0CfelmcN5vHykpMYgdfgNHvFKrea417ozh5CLfZ9PYQoug0iqsm9nqoU%3D&Expires=1553768535

как видите, подпись другая, но я не понимаю, почему. Я также проверил, может ли другая версия работает на EB, но это та же версия, что и локально, я скачал zip и запустил его локально, и он работал.

1 Ответ

0 голосов
/ 01 апреля 2019

Теперь я выяснил, в чем проблема: я забыл установить переменные среды для ключа доступа S3, а секретный ключ для библиотеки boto не имел действительных учетных данных для генерации ссылок.Сообщение об ошибке было очень вводящим в заблуждение все же.Затем я установил переменные в консоли эластичного бобового стебля, и она мгновенно сработала.

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