Статический веб-сайт в Yandex Object Storage https://cloud.yandex.ru/docs/tutorials/web/static

Подготовьте облако к работе

Перед использованием Yandex Object Storage нужно зарегистрироваться в Yandex Cloud и создать платежный аккаунт:

Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет находиться ваш бакет. Перейдите на страницу облака и выберите или создайте каталог, в котором вы хотите создать бакет. Подробнее об иерархии ресурсов Yandex Cloud.

В стоимость поддержки статического сайта входит:

плата за хранение данных статического сайта (см. тарифы Yandex Object Storage);
плата за операции с данными (см. тарифы Yandex Object Storage);
стоимость исходящего трафика из Yandex Cloud в интернет (см. тарифы Yandex Object Storage).
плата за публичные DNS-запросы и зоны (см. тарифы Yandex Cloud DNS).

Создайте публичный бакет

Чтобы создать бакет для файлов статического сайта:

Перейдите в консоль управления Yandex Cloud и выберите каталог, в котором будете выполнять операции.

На странице каталога нажмите кнопку Создать ресурс и выберите Бакет.

В поле Имя введите имя бакета, например, www.example.com. Имя бакета станет частью доменного имени сайта. После настройки бакет будет доступен по двум адресам:

http(s)://<имя_бакета>.website.yandexcloud.net
http(s)://website.yandexcloud.net/<имя_бакета>

Имя должно удовлетворять требованиям:
Длина имени должна быть от 3 до 63 символов.
Имя может содержать строчные буквы латинского алфавита, цифры, дефисы и точки.
Первый и последний символы должны быть буквами или цифрами.
Символы справа и слева от точки должны быть буквами или цифрами.
Имя не должно иметь вид IP-адреса (например 10.1.3.9).
Примечание

Если вы планируете использовать собственный домен для веб-сайта, имя бакета должно в точности совпадать с именем вашего домена, а домен должен быть третьего и более уровня. Подробнее см. в разделе Собственный домен.

Укажите максимальный размер бакета в ГБ.

Включите Публичный доступ на чтение объектов.

Нажмите кнопку Создать бакет.

Включите веб-сайт для бакета

Необходимо загрузить и настроить индексную страницу и страницу ошибки. Для этого:

Создайте на компьютере файлы:
index.html с текстом Hello world!.
Содержимое файла будет показываться при обращении к главной странице веб-сайта.
error.html с текстом Error!.
Содержимое файла будет показываться при ответах веб-сайта с ошибками 4xx.
На вкладке Объекты на странице вашего бакета нажмите кнопку Загрузить. В открывшемся окне выберите созданные файлы и нажмите кнопку подтверждения.
Нажмите кнопку Загрузить.
Откройте вкладку Веб-сайт на странице вашего бакета.
Выберите Хостинг.
В поле Главная страница укажите index.html.
В поле Страница ошибки укажите error.html.
Нажмите кнопку Сохранить.
Проверьте, что главная страница веб-сайта открывается. Для этого подключитесь к сайту через браузер по ссылке вида http://<имя_бакета>.website.yandexcloud.net.
Проверьте, что страница ошибки открывается. Для этого подключитесь к сайту через браузер по ссылке вида http://<имя_бакета>.website.yandexcloud.net/error-check.
Примечание

По умолчанию сайт доступен только по протоколу HTTP, например, http://www.example.com или http://www.example.com.website.yandexcloud.net. Чтобы поддержать для сайта протокол HTTPS, загрузите собственный сертификат безопасности в Object Storage.

Настройте DNS

Если у вас есть зарегистрированное доменное имя, назначьте его бакету. Для этого создайте в DNS запись типа CNAME.

Вы можете воспользоваться сервисом Cloud DNS для управления доменом.

Примечание

Имя бакета должно в точности совпадать с именем вашего домена, а домен должен быть третьего и более уровня. Подробнее см. в разделе Собственный домен.

В инструкции ниже описана настройка DNS для домена третьего уровня www.example.com.

Добавьте зону

Чтобы добавить публичную зону:

Откройте раздел Cloud DNS в каталоге, где требуется создать зону DNS.
Нажмите кнопку Создать зону.
Задайте настройки зоны:
Имя зоны: example-zone-1.
Зона: example.com.. Укажите ваш зарегистрированный домен.
ТипПубличная.
Нажмите кнопку Создать.

Добавьте запись типа CNAME

Создайте в публичной зоне запись DNS типа CNAME:

Выберите зону example.com из списка.
Нажмите кнопку Создать запись.
Задайте параметры записи:
Имя: www.
Тип записи: выберите значение CNAME.
TTL (время кэширования записи): оставьте значение по умолчанию.
Значение: введите www.example.com.website.yandexcloud.net..
Нажмите кнопку Создать.

Делегируйте доменное имя

Делегирование - это перенос ответственности с серверов регистратора на ваши серверы. Для домена создаются ресурсные записи типа NS (ns1.yandexcloud.net и ns2.yandexcloud.net).

Чтобы делегировать домен, укажите для него DNS-серверы в личном кабинете регистратора.

Делегирование происходит не сразу. Серверы интернет-провайдеров обычно обновляют записи до 24 часов (86400 секунд). Это обусловлено значением TTL, в течение которого кэшируются записи для доменов.

Проверить делегирование домена можно с помощью сервиса Whois или утилиты dig:

dig +short NS example.com

Результат:

ns2.yandexcloud.net.
ns1.yandexcloud.net.

Проверьте работу сайта

Чтобы проверить работу сайта, используйте один из стандартных адресов Object Storage:

http://www.example.com.website.yandexcloud.net
http://website.yandexcloud.net/www.example.com

Если вы настроили собственный домен, используйте адрес http://www.example.com.

Подключение Космос 3 к статическому веб-сайту в Yandex Object Storage

Создание сервисного аккаунтаhttps://cloud.yandex.ru/docs/iam/operations/sa/create

Нажмите на строку с именем каталога, в котором вы хотите создать сервисный аккаунт.
Выберите вкладку Сервисные аккаунты.
Нажмите кнопку Создать сервисный аккаунт.
Введите имя сервисного аккаунта.
Нажмите кнопку Создать.

Создание статических ключей доступаhttps://cloud.yandex.ru/docs/iam/operations/sa/create-access-key

В консоли управления перейдите в каталог, которому принадлежит сервисный аккаунт.
Выберите вкладку Сервисные аккаунты.
Выберите сервисный аккаунт и нажмите на строку с его именем.
Нажмите кнопку Создать новый ключ на верхней панели.
Задайте описание ключа и нажмите кнопку Создать.
Сохраните идентификатор и секретный ключ.
Внимание

После закрытия диалога значение ключа будет недоступно.

Редактирование ACL бакетаhttps://cloud.yandex.ru/docs/storage/operations/buckets/edit-acl

В консоли управления выберите каталог.
Выберите сервис Object Storage.
Чтобы отредактировать ACL, нажмите значок справа от имени бакета и выберите ACL бакета.
Также можно нажать на имя бакета и на открывшейся странице нажать кнопку ACL бакета.
В появившемся окне Редактирование ACL выдайте для ранее созданного сервисного аккаунта разрешение типа READ и WRITE.

Настройка CORShttps://cloud.yandex.ru/docs/storage/operations/buckets/cors

В консоли управления перейдите в бакет, для которого хотите настроить CORS.
В левой панели выберите CORS.
Нажмите кнопку Настроить.
Откроется страница, на которой вы сможете добавлять, удалять и редактировать правила конфигурации. Введите следующие параметры:
Allowed Origins: *
Allowed Methods: GET, PUT, HEAD
Allowed Headers: *
MaxAgeSeconds: 0

Все остальные поля можно оставить пустыми. Подробное описание полей конфигурации смотрите в разделе CORS-конфигурация бакетов.