AWS S3 разрешает показывать только изображения из корзины на конкретном IP-адресе - PullRequest
0 голосов
/ 06 сентября 2018

Я немного поработал с AWS PHP SDK и смог загрузить объекты в корзину, основы.

Моя основная цель использования этого хранилища состоит в том, чтобы использовать его для объединения группы связанных файлов, один из которых представляет собой миниатюру изображения, и эти группы файлов были показаны в виде сетки в области членства сайта.

Я не хочу, чтобы URL-адреса S3 были общедоступными, но я хочу, чтобы файлы просматривались / загружались, когда они находятся на IP-адресе моих серверов.

Я пытался использовать генератор политики, и я не уверен, что это правильный способ сделать то, что я пытаюсь достичь?

Должен ли я использовать S3 URL для миниатюры, отображаемой в серверной части? Или я должен использовать функцию GetObject SDK?

Любая помощь будет принята с благодарностью, так как в настоящее время я не уверен, в каком направлении мне следует идти.

Спасибо, Kane

1 Ответ

0 голосов
/ 06 сентября 2018

Вы можете использовать политику сегментов, чтобы разрешить доступ только с определенных IP-адресов, как показано на в этом примере :

{
  "Version": "2012-10-17",
  "Id": "S3PolicyId1",
  "Statement": [
    {
      "Sid": "IPAllow",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::examplebucket/*",
      "Condition": {
         "IpAddress": {"aws:SourceIp": "54.240.143.0/24"}
      } 
    } 
  ]
}

Убедитесь, что вы указали публичный IP-адрес вашего сервера, с которого он будет обращаться к S3. В приведенном выше примере 54.240.143.0/24 является блоком CIDR, а не IP-адресом. Если вы хотите отфильтровать определенный IP-адрес (например, 53.22.121.12), добавьте / 32 маску, например: 53.22.121.12/32

Лично я предпочитаю редактировать политику корзины как JSON в пользовательском интерфейсе разрешений, но вы также можете использовать генератор политики.

Я предлагаю вам использовать GetObject для извлечения контента из S3 в приложение. В этом случае вы можете оставить корзину S3 открытой только для серверов приложений, а не для общественности.

...