При обслуживании веб-сайта через CloudFront из корзины S3 я обычно применяю следующую политику корзины, чтобы разрешить доступ к моим файлам:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Allow Public Access to All Objects",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::somewhere.example.com/*"
}
]
}
Но недавно Amazon начал показывать это сообщение (выделено мной жирным шрифтом):
Мы настоятельно рекомендуем вам никогда даровать любой публичного доступа к вашей корзине S3.
Документация AWS очень несовместима с этим советом, предполагая, что проблемой является только доступ для записи. Я обслуживаю веб-сайт, поэтому, очевидно, я вполне счастлив предоставить открытый доступ к файлам, тем более что списки каталогов все еще не разрешены.
Каков рекомендуемый способ подключения CloudFront к корзине S3 по состоянию на ноябрь 2017 г. без предоставления общего доступа?
Вам нужно будет настроить Origin Access Identity. Это позволяет сохранить конфиденциальность корзины и разрешать доступ только через CloudFront. Это очень легко настроить. Я включил ссылку, чтобы пройти через шаги и помочь вам все понять. После настройки OAI удалите политику для корзины S3. Ваша корзина S3 является частной и предоставляет доступ пользователям только через CloudFront.
Использование идентификатора Origin Access для ограничения доступа к вашему контенту Amazon S3
Обычно, если вы используете корзину Amazon S3 в качестве источника для распространения CloudFront, вы предоставляете всем разрешение на чтение объектов в вашей корзине. Это позволяет любому получить доступ к вашим объектам через CloudFront или по URL-адресу Amazon S3. CloudFront не предоставляет URL-адреса Amazon S3, но ваши пользователи могут иметь эти URL-адреса, если ваше приложение обслуживает какие-либо объекты непосредственно из Amazon S3 или если кто-то предоставляет прямые ссылки на определенные объекты в Amazon S3.