CloudFlare: настройка CDN для AWS S3

Автор: | 09/20/2019
 

Требуется создать хостинг статического сайта, используя AWS S3 и подключить к нему CloudFlare CDN.

Создание AWS S3 корзины

Создаём корзину с тем же именем, что и домен, в нашем случае это cdn.example.com:

В Properties включаем хостинг сайта:

Переходим в Permissions, в Bucket Policy включаем полный доступ к корзине:

 {
    "Version": "2012-10-17",
    "Id": "MyPolicy",
    "Statement": [
        {
            "Sid": "PublicReadForGetBucketObjects",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::cdn.example.com/*"
        }
    ]
}

Для проверки — создаём файл, и загружаем его в корзину:

aws --profile bm-backend s3 cp index.html s3://cdn.example.com
upload: ./index.html to s3://cdn.example.com/index.html

И открываем по URL корзины:

curl http://cdn.example.com.s3-website.us-east-2.amazonaws.com
TestCDN

Настройка CloudFlare CDN

После регистрации — переходим в панель управления, жмём Add Site:

Есть два варианта подключения домена — с полным переключением DNS, когда для всего домена меняются DNS на сервера CloudFlare, и домен дальше обслуживается ими, либо частичное подключение — например, для одного субдомена, через CNAME-запись на DNS CloudFlare. Но для второго варианта требуется подписка уровня Business или Enterprise.

Пока мы ждём активации нашего Enterprise — добавим домен с полным переключением DNS.

Добавляем домен:

Выбираем подписку для него — тут Free, Enterprise включат после письма на support@:

CloudFlare подтянет все существующие записи домена:

Тут же можем добавить запись cdn.example.com с типом CNAME, указав в значении URL корзины S3:

И последним — CloudFlare сообщает, какие DNS надо задать для домена:

Переходим в панель управления доменами регистратора и обновляем DNS:

Ждём пару минут, проверяем:

whois example.com | grep Name
Domain Name: example.com
Name Server: cass.ns.cloudflare.com
Name Server: lloyd.ns.cloudflare.com

Проверяем в CloudFlare:

И проверяем через, например, https://checkforcloudflare.selesti.com:

 

SSL

Последним шагом — переходим в настройки SSL, и включаем редирект HTTP на HTTPS:

CloudFlare использует свой сертификат, но при необходимости — можно загрузить отдельный:

Готово.