Перенести зону DNS в другой каталог
При создании зоны DNS она размещается в текущем каталоге.
В Yandex Cloud есть возможность переместить зону DNS в другой каталог.
Подробнее об иерархии ресурсов в Yandex Cloud.
Ограничения
При переносе зоны DNS метрики в Yandex Monitoring не переносятся. Те, что были в предыдущем каталоге, останутся в нём, а новые метрики будут создаваться уже в новом каталоге.
Перенести зону DNS
Изменить каталог зоны
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
-
Получите список всех зон DNS в каталоге по умолчанию:
yc dns zone listРезультат:
+----------------------+---------------------+--------------+----------------------------------------------------+ | ID | NAME | ZONE | VISIBILITY | DESCRIPTION | +----------------------+---------------------+--------------+----------------+-----------------------------------+ | aet29qhara5j******** | my-public-zone | example.com. | PUBLIC | Automatically created DNS for ... | | aet2q4fn8i8i******** | my-private-zone | internal. | PRIVATE | Automatically created DNS for ... | +----------------------+---------------------+--------------+----------------+-----------------------------------+ -
Получите список всех каталогов в облаке по умолчанию:
yc resource-manager folder listРезультат:
+----------------------+--------------------+------------------+--------+ | ID | NAME | LABELS | STATUS | +----------------------+--------------------+------------------+--------+ | b1gd129pp9ha******** | my-folder | | ACTIVE | | b1g66mft1vop******** | default | | ACTIVE | +----------------------+--------------------+------------------+--------+ -
Посмотрите описание команды CLI для переноса зоны DNS:
yc dns zone move --help -
Перенесите зону DNS в другой каталог со следующими параметрами:
- в параметре
idукажите идентификатор зоны DNS, напримерaet29qhara5j********; - в параметре
destination-folder-idукажите идентификатор целевого каталога, напримерb1g66mft1vop********.
yc dns zone move \ --id aet29qhara5j******** \ --destination-folder-id b1g66mft1vop********Подробнее о команде
yc dns zone moveсм. в справочнике CLI. - в параметре
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Настройте права доступа к целевому каталогу. У аккаунта из исходного каталога, от имени которого вы будете выполнять операцию, должна быть минимальная роль
dns.editorна целевой каталог. -
В конфигурационном файле в ресурсе
yandex_dns_zoneизмените параметрfolder_id:resource "yandex_dns_zone" "zone1" { name = "<имя_зоны>" description = "<описание_зоны>" zone = "<доменная_зона>." public = true folder_id = "<идентификатор_целевого_каталога>" }Где:
name— имя зоны. Должно быть уникальным внутри каталога.description— описание зоны.zone— доменная зона. Название зоны должно заканчиваться точкой. Публичные зоны верхнего уровня (TLD-зоны) создавать нельзя. Чтобы создать доменную зону с нелатинскими символами, используйте кодировку Punycode .public— видимость зоны: публичная или внутренняя.folder_id— идентификатор каталога, в котором должна размещаться зона DNS (по умолчанию указывается из переменной окружения).
Более подробную информацию о параметрах ресурса
yandex_dns_zoneсм. в документации провайдера. -
Примените новую конфигурацию:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
Terraform перенесет зону DNS в указанный каталог без пересоздания. Проверить изменения можно в консоли управления
. -
Воспользуйтесь методом REST API move для ресурса DnsZone или вызовом gRPC API DnsZoneService/Move.
Пример REST API
Ниже описан пример Bash-скрипта для ОС Linux.
Чтобы воспользоваться примером, аутентифицируйтесь в API и установите утилиту cURL
-
Создайте файл для скрипта:
sudo touch <имя_файла> -
Откройте файл для записи:
sudo nano <имя_файла> -
Поместите скрипт в файл:
#!/bin/bash # Создание переменных export IAM_TOKEN=`yc iam create-token` dnsZoneId='<идентификатор_DNS_зоны>' destinationFolderId='<идентификатор_каталога>' # Перемещение зоны DNS curl \ --request POST \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --header "Content-Type: application/json" \ --data '{ "destinationFolderId": "'"${destinationFolderId}"'" }' \ "https://dns.api.cloud.yandex.net/dns/v1/zones/${dnsZoneId}:move"Где:
IAM_TOKEN— IAM-токен для аутентификации в API.dnsZoneId— идентификатор зоны DNS, которую надо перенести.destinationFolderId— идентификатор каталога, в который будет перенесена зона DNS.
-
Сделайте файл исполняемым:
chmod +x <имя_файла> -
Выполните скрипт:
./<имя_файла>
Пример gRPC API
Ниже описан пример Bash-скрипта для вызова gRPC API с использованием утилиты grpcurl.
-
Установите
grpcurl:-
С помощью Bash:
curl -L https://github.com/fullstorydev/grpcurl/releases/download/v1.9.3/grpcurl_1.9.3_linux_x86_64.tar.gz | tar -xz sudo mv grpcurl /usr/local/bin/ -
С помощью Golang:
go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest
-
-
Создайте файл для скрипта:
sudo touch <имя_файла> -
Откройте файл для записи:
nano <имя_файла> -
Поместите скрипт в файл:
#!/bin/bash # Создание переменных export IAM_TOKEN=$(yc iam create-token) dnsZoneId='<идентификатор_DNS_зоны>' destinationFolderId='<идентификатор_каталога>' # Перемещение зоны DNS grpcurl \ -d "{ \"dns_zone_id\": \"${dnsZoneId}\", \"destination_folder_id\": \"${destinationFolderId}\" }" \ -H "authorization: Bearer ${IAM_TOKEN}" \ -H "x-client-request-id: $(uuidgen)" \ dns.api.cloud.yandex.net:443 \ yandex.cloud.dns.v1.DnsZoneService/MoveГде:
IAM_TOKEN— IAM-токен для аутентификации в API.dnsZoneId— идентификатор зоны DNS, которую надо перенести.destinationFolderId— идентификатор каталога, в который будет перенесена зона DNS.x-client-request-id— уникальный идентификатор запроса для трассировки.
-
Сделайте файл исполняемым:
chmod +x <имя_файла> -
Выполните скрипт:
./<имя_файла>
В ответ вы получите операцию в формате JSON:
{
"id": "dns-zone-move-123456789",
"description": "Update DNS Zone",
"createdAt": "2026-02-19T09:52:35.239149422Z",
"createdBy": "aje6f5h1h2h3********",
"modifiedAt": "2026-02-19T09:52:35.239218092Z",
"done": true,
"metadata": {
"@type": "type.googleapis.com/yandex.cloud.dns.v1.MoveDnsZoneMetadata",
"dnsZoneId": "aet29qhara5j********"
},
"response": {
"@type": "type.googleapis.com/yandex.cloud.dns.v1.DnsZone",
"createdAt": "2026-02-19T07:09:53.853Z",
"folderId": "b1g66mft1vop********",
"id": "aet29qhara5j********",
"name": "my-public-zone",
"publicVisibility": {},
"zone": "example.com."
}
}
Где:
id— уникальный идентификатор операции.metadata.dnsZoneId— ID перемещаемой зоны DNS.response— обновленная зона DNS после переноса.done— статус завершения операции.
Подробное описание метода см. в справочнике gRPC API.