Изображение из корзины S3 не отображается на сервере
Я столкнулся со странной проблемой в ведре S3, я использую ведро S3 для хранения изображений для приложения и лямбда для обработки функций API, поэтому загрузка работает правильно на локальном компьютере, а также с использованием лямбда, проблема в том, когда я хочу показать изображение в приложении на localhost отлично работает, но на сервере изображение вообще не отображается:
Вот на локальном: https://www.screencast.com/t/GA9R2ik3vX
Но на сервере выглядит так: https://www.screencast.com/t/oSY2AuE5NF
2 ответа
Я думаю, это может быть проблема с настройками вашей политики для доступа к корзине S3. Возможно, при настройке корзины AWS получила ваш локальный IP-адрес и добавила его в список разрешенных IP-адресов (я почти уверен, что AWS иногда делает это автоматически), и поэтому он работает на вашем локальном хосте, но не на вашем сервере.
Убедитесь, что ваш блокированный публичный доступ выглядит так:
И что ваша политика ведра является общедоступной:
Это должно выглядеть примерно так:
{
"Version": "2012-10-17",
"Id": "Policy123",
"Statement": [
{
"Sid": "Stmt123",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
Обратите внимание, что это сделает изображения в вашей корзине общедоступными, и любой, у кого есть ссылка, получит к ней доступ.
ОБНОВЛЕНИЕ ИСПРАВЛЕНИЯ
Проблема все еще существует, но я нашел другой способ загрузить изображение, я сделал это со стороны внешнего интерфейса вместо лямбды, используя подписанный URL-адрес, надеюсь, это поможет кому-то в будущем.