Вы можете использовать политику сегментов, чтобы разрешить доступ только с определенных 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 открытой только для серверов приложений, а не для общественности.