Подключить домен
Вы можете подключить собственный домен для обращения к API-шлюзу. К API-шлюзу можно подключить wildcard-домен, например *.example.com, чтобы API-шлюз обрабатывал запросы на все поддомены example.com, или несколько доменов. Домен будет идентифицироваться по заголовку Host.
Важно
Если вашим доменом управляет сторонний DNS-провайдер, домен должен быть ниже второго уровня. Например, можно подключить домен www.example.com, а example.com — нельзя. Это связано с особенностями обработки CNAME-записей на DNS-хостингах. Подробнее в RFC 1912, пункт 2.4
Чтобы использовать домен второго уровня (example.com), делегируйте его Yandex Cloud DNS и создайте ANAME-запись в зоне DNS.
На домене должен быть установлен X.509‑сертификат
Чтобы подключить домен к API-шлюзу:
-
Разместите у своего DNS-провайдера или на собственном DNS-сервере CNAME-запись:
<домен> IN CNAME <служебный_домен_API-шлюза>Чтобы узнать служебный домен API-шлюза:
- Перейдите в консоль управления
и выберите каталог, в котором находится API-шлюз. - Перейдите
в сервис API Gateway. - Выберите API-шлюз.
- Служебный домен будет в поле Служебный домен.
Доменные имена должны заканчиваться точкой.
Чтобы использовать домен выше второго уровня, делегируйте его Yandex Cloud DNS и создайте ANAME-запись в зоне DNS. Создать запись в Yandex Cloud DNS можно не только до, но и после создания домена. Смотрите шаг 6.
- Перейдите в консоль управления
-
В консоли управления
выберите каталог, в котором находится API-шлюз. -
Перейдите
в сервис Certificate Manager и в нем:-
Добавьте сертификат от Let's Encrypt® или пользовательский сертификат для подключаемого домена.
Примечание
Сертификаты необходимо своевременно обновлять. Подробнее о том, как обновить сертификат от Let's Encrypt® и пользовательский сертификат.
-
Дождитесь, когда сертификат перейдет в статус
Issued.
-
-
Вернитесь на страницу каталога.
-
Перейдите
в сервис API Gateway и в нем:- Выберите API-шлюз.
- Перейдите на вкладку Домены.
- Нажмите Подключить, выберите сертификат и введите имя домена (FQDN).
-
Если вы пропустили шаг 1 и не разместили CNAME-запись, создайте ANAME-запись в Yandex Cloud DNS:
- В строке с доменом нажмите кнопку Создать запись.
- Если у вас нет DNS-зоны, имя которой совпадает с доменом, создайте ее. Для этого нажмите Создать зону.
- Если необходимо, в поле TTL (в секундах) выберите другое значение.
- Нажмите кнопку Создать.
Terraform
Terraform распространяется под лицензией Business Source License
Подробная информация о ресурсах провайдера в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, аутентифицируйтесь соответствующим способом.
-
Откройте файл конфигурации Terraform и добавьте блок
custom_domainsв описание ресурсаyandex_api_gateway:resource "yandex_api_gateway" "<имя_API-шлюза>" { name = "<имя_API-шлюза>" ... custom_domains { fqdn = "<доменное_имя>" certificate_id = "<идентификатор_сертификата>" } }Где:
fqdn— FQDN подключаемого домена.certificate_id— идентификатор сертификата домена в Yandex Certificate Manager.
Более подробную информацию о параметрах ресурса
yandex_api_gatewayчитайте в документации провайдера. -
Примените изменения:
-
В терминале перейдите в директорию с конфигурационным файлом.
-
Проверьте корректность конфигурации с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список планируемых изменений: ресурсы и/или выходные переменные. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
Проверить результат можно в консоли управления
или с помощью команды CLI:yc serverless api-gateway get <идентификатор_API-шлюза> -
Чтобы подключить домен к API-шлюзу, воспользуйтесь методом REST API addDomain для ресурса ApiGateway или вызовом gRPC API ApiGatewayService/AddDomain.