Назад | Перейти на главную страницу

Обслуживание веб-сайта из Cloudfront и S3 без публичной корзины

При обслуживании веб-сайта через 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.