Изображение из корзины 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-адрес, надеюсь, это поможет кому-то в будущем.

Другие вопросы по тегам