Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Virtual Private Cloud
  • Начало работы
    • Все руководства
    • Архитектура и защита базового интернет-сервиса
    • Настройки DHCP для работы с корпоративным DNS-сервером
    • Установка виртуального роутера Cisco CSR 1000v
    • Установка виртуального роутера Mikrotik CHR
    • Соединение с облачной сетью при помощи OpenVPN
    • Настройка Cloud DNS для доступа к кластеру Managed Service for ClickHouse® из других облачных сетей
    • Защищенный доступ пользователей к облачным ресурсам на основе WireGuard VPN
    • Создание и настройка шлюза UserGate в режиме прокси-сервера
    • Создание и настройка шлюза UserGate в режиме межсетевого экрана
    • Реализация отказоустойчивых сценариев для сетевых виртуальных машин
    • Создание туннеля между двумя подсетями при помощи OpenVPN Access Server
    • Создание бастионного хоста
    • Миграция кластера Yandex Data Processing с файловой системой HDFS в другую зону доступности
    • Настройка сети для Yandex Data Processing
    • Сеть между каталогами
    • Реализация защищенной высокодоступной сетевой инфраструктуры с выделением DMZ на основе Check Point NGFW
    • Сегментация облачной инфраструктуры с помощью решения Check Point Next-Generation Firewall
    • Подключение к Object Storage из Virtual Private Cloud
    • Подключение к Container Registry из Virtual Private Cloud
    • Использование модулей Yandex Cloud в Terraform
    • Развертывание группы доступности Always On с внутренним сетевым балансировщиком
    • Организация доступа через Cloud Interconnect к облачным сетям, размещенным за NGFW
    • Автоматизация задач с помощью Managed Service for Apache Airflow™
    • Настройка сетевой связности между подсетями BareMetal и Virtual Private Cloud
  • DDoS Protection
  • Управление доступом
  • Справочник Terraform
  • Аудитные логи Audit Trails
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Рекомендации по развертыванию решения в продуктивной среде
  • План развертывания
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Подготовьте среду для развертывания ресурсов
  • Разверните решение с помощью Terraform
  • Проверьте работоспособность решения
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Подключение к Object Storage из Virtual Private Cloud

Подключение к Object Storage из Virtual Private Cloud

Статья создана
Yandex Cloud
Обновлена 28 апреля 2025 г.
  • Рекомендации по развертыванию решения в продуктивной среде
  • План развертывания
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Подготовьте среду для развертывания ресурсов
  • Разверните решение с помощью Terraform
  • Проверьте работоспособность решения
  • Удалите созданные ресурсы

Совет

Помимо решения, описанного в статье, доступ в Object Storage от ресурсов облачной сети без доступа в интернет также можно реализовать с помощью сервисного подключения VPC. Подробнее см. на странице Доступ в бакет с помощью сервисного подключения из VPC.

Подключиться к Yandex Object Storage в Yandex Cloud можно через соответствующий API Endpoint, FQDN которого потом преобразуется в публичный IP-адрес с помощью службы DNS.

В статье описано, как развернуть в Yandex Cloud облачную инфраструктуру для организации доступа к Object Storage для ресурсов, которые размещены в облачной сети VPC и не имеют публичных IP-адресов или выхода в интернет через NAT-шлюз.

После развертывания решения в Yandex Cloud будут созданы следующие ресурсы:

Название Описание
s3-vpc Облачная сеть с ресурсами, для которых организуется доступ к Object Storage. При развертывании можно также указать уже существующую облачную сеть.
s3-nlb Внутренний сетевой балансировщик, который обеспечивает прием трафика к Object Storage. Балансировщик принимает TCP-трафик с портом назначения 443 и распределяет его по ресурсам (ВМ) в целевой группе.
s3-nat-group Целевая группа балансировщика с ВМ, на которых включена функция NAT.
nat-a1-vm, nat-a2-vm, nat-b1-vm, nat-b2-vm ВМ с NAT в зонах доступности ru-central1-a и ru-central1-b для передачи трафика к Object Storage и обратно с трансляцией IP-адресов источников и получателей трафика.
pub-ip-a1, pub-ip-a2, pub-ip-b1, pub-ip-b2 Публичные IP-адреса ВМ, в которые облачная сеть VPC транслирует их внутренние IP-адреса.
DNS зона и A-запись Внутренняя DNS-зона storage.yandexcloud.net. в сети s3-vpc с ресурсной записью типа A, сопоставляющей доменное имя storage.yandexcloud.net с IP-адресом внутреннего сетевого балансировщика.
s3-bucket-<...> Бакет в Object Storage.
s3-subnet-a, s3-subnet-b Облачные подсети для размещения ВМ с NAT в зонах доступности ru-central1-a и ru-central1-b.
test-s3-vm Тестовая ВМ для проверки доступа к Object Storage.
test-s3-subnet-a Облачная подсеть для размещения тестовой ВМ.

Для облачной сети с размещаемыми ресурсами в сервисе Cloud DNS создается внутренняя DNS-зона storage.yandexcloud.net. и ресурсная запись типа A, сопоставляющая доменное имя storage.yandexcloud.net сервиса Object Storage с IP-адресом внутреннего сетевого балансировщика. Благодаря этой записи трафик от облачных ресурсов к Object Storage будет направляться на внутренний балансировщик, который будет распределять нагрузку по виртуальным машинам с NAT.

Для развертывания ВМ с NAT используется образ NAT-инстанс на основе Ubuntu 22.04 LTS из Cloud Marketplace, который обеспечивает трансляции IP-адресов источника и назначения, чтобы обеспечить маршрутизацию трафика до публичного IP-адреса Object Storage.

Разместив ВМ с NAT в нескольких зонах доступности, можно получить отказоустойчивость доступа к Object Storage. Увеличивая количество ВМ с NAT, можно масштабировать решение при возрастании нагрузки. При расчете количества ВМ с NAT следует учитывать локальность при обработке трафика внутренним балансировщиком.

Политика доступа Object Storage разрешает действия с бакетом только с публичных IP-адресов ВМ с NAT. Доступ к бакету открыт только для облачных ресурсов, использующих данное решение. Подключиться к бакету в Object Storage через публичный API Endpoint не получится. При необходимости это ограничение можно отключить с помощью параметра в конфигурационном файле Terraform.

Результаты тестирования пропускной способности ВМ с NATРезультаты тестирования пропускной способности ВМ с NAT

Решение тестировалось на одной ВМ с NAT в следующей конфигурации:

  • Платформа — Intel Ice Lake (standard-v3).
  • Уровень производительности — 100%.
  • Количество vCPU — 2.
  • Объем RAM — 2 ГБ.

Средняя скорость обработки трафика к Object Storage составила 250 МБ/с в обоих направлениях.

Для тестирования использовалась утилита warp на ВМ, имеющих доступ к Object Storage с помощью данного решения. Параметры команды warp для тестирования:

warp get \
  --host storage.yandexcloud.net \
  --access-key <идентификатор_статического_ключа> \
  --secret-key <секретный_ключ> \
  --tls \
  --bucket <имя_бакета> \
  --obj.randsize \
  --concurrent 20 \
  --warp-client <IP-адреса_warp-клиентов>

Рекомендации по развертыванию решения в продуктивной средеРекомендации по развертыванию решения в продуктивной среде

  • При развертывании ВМ с NAT в нескольких зонах доступности указывайте четное число ВМ для их равномерного распределения по зонам доступности.

  • Выбирая количество ВМ с NAT, учитывайте локальность при обработке трафика внутренним балансировщиком.

  • После ввода решения в эксплуатацию уменьшайте количество ВМ с NAT или изменяйте список зон доступности в параметре yc_availability_zones только в заранее запланированный период времени. В процессе применения изменений возможны прерывания в обработке трафика.

  • Если при возрастании нагрузки к Object Storage внутри ВМ с NAT наблюдается большое значение метрики CPU steal time, то для ВМ с NAT рекомендуется включить программно-ускоренную сеть.

  • По умолчанию доступ к бакету в Object Storage разрешен через консоль управления Yandex Cloud. Вы можете отменить это разрешение с помощью параметра bucket_console_access = false.

  • Если не указать параметр mgmt_ip при bucket_private_access = true, то развертывание решения с помощью Terraform на рабочей станции будет завершаться с ошибкой доступа к бакету.

  • Если вы используете собственный DNS-сервер, в его настройках создайте ресурсные записи типа A следующего вида:

    Имя Тип Значение
    storage.yandexcloud.net A <IP-адрес_внутреннего_балансировщика>
    <имя_бакета>.storage.yandexcloud.net A <IP-адрес_внутреннего_балансировщика>
  • Сохраните приватный SSH-ключ pt_key.pem, используемый для подключения к ВМ с NAT, в надежное место либо пересоздайте его отдельно от Terraform.

  • После развертывания решения доступ по SSH к ВМ c NAT будет закрыт. Чтобы разрешить доступ к ВМ с NAT по протоколу SSH, добавьте входящее правило для SSH-трафика (TCP/22) в группе безопасности s3-nat-sg, чтобы разрешить доступ только с определенных IP-адресов рабочих мест администраторов.

План развертыванияПлан развертывания

Чтобы развернуть решение и проверить его работу:

  1. Подготовьте облако к работе.
  2. Подготовьте среду для развертывания ресурсов.
  3. Разверните решение.
  4. Проверьте работоспособность решения.

Если созданные ресурсы вам больше не нужны, удалите их.

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

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

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

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

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки инфраструктуры входят:

  • плата за использование Object Storage (см. тарифы Yandex Object Storage).
  • плата за использование сетевого балансировщика (см. тарифы Network Load Balancer).
  • плата за постоянно работающие ВМ (см. тарифы Yandex Compute Cloud).
  • плата за использование публичных IP-адресов и исходящий трафик (см. тарифы Yandex Virtual Private Cloud).

Подготовьте среду для развертывания ресурсовПодготовьте среду для развертывания ресурсов

  1. Установите Terraform.

  2. Если у вас еще нет интерфейса командной строки Yandex Cloud, установите его и аутентифицируйтесь от имени пользователя.

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

  4. Установите Git.

  5. Проверьте квоты в облаке, чтобы была возможность развернуть ресурсы в сценарии:

    Информация о количестве создаваемых ресурсов
    Ресурс Количество
    Виртуальные машины 5
    vCPU виртуальных машин 10
    RAM виртуальных машин 10 ГБ
    Диски 5
    Объем HDD дисков 30 ГБ
    Объем SSD дисков 40 ГБ
    Сетевой балансировщик 1
    Целевая группа для балансировщика 1
    Сети 11
    Подсети 3
    Статические публичные IP-адреса 4
    Группы безопасности 1
    Зона DNS 1
    Бакет 1
    Сервисный аккаунт 2
    Статический ключ для сервисного аккаунта 1

    1 Если пользователь в terraform.tfvars не указал идентификатор существующей сети.

Разверните решение с помощью TerraformРазверните решение с помощью Terraform

  1. Склонируйте на вашу рабочую станцию репозиторий yandex-cloud-examples/yc-s3-private-endpoint и перейдите в папку yc-s3-private-endpoint:

    git clone https://github.com/yandex-cloud-examples/yc-s3-private-endpoint.git
    cd yc-s3-private-endpoint
    
  2. Настройте окружение для аутентификации в Terraform (подробнее см. Начало работы с Terraform):

    export YC_TOKEN=$(yc iam create-token)
    
  3. Переменные параметры создаваемых ресурсов определены в файле variables.tf. Заполните файл terraform.tfvars вашими значениями для переменных. Обязательные параметры для изменения отмечены в таблице.

    Детальная информация о заполняемых значениях
    Название
    параметра
    Замена на
    пользовательское
    значение
    Описание Тип Пример
    folder_id да Идентификатор каталога для размещения компонентов решения. string "b1gentmqf1ve********"
    vpc_id — Идентификатор облачной сети, для которой организуется доступ к Object Storage. Если не указан, то сеть будет создана. string "enp48c1ndilt********"
    yc_availability_zones — Список зон доступности для развертывания ВМ с NAT. list(string) ["ru-central1-a", "ru-central1-b"]
    subnet_prefix_list — Список префиксов облачных подсетей для размещения ВМ с NAT (по одной подсети в каждой зоне доступности из списка yc_availability_zones, перечисленных в порядке: ru-central1-a, ru-central1-b и т.д.). list(string) ["10.10.1.0/24", "10.10.2.0/24"]
    nat_instances_count — Количество разворачиваемых ВМ с NAT. Рекомендуется указывать четное число для равномерного распределения ВМ по зонам доступности. number 4
    bucket_private_access — Ограничить доступ к бакету только с публичных IP-адресов ВМ с NAT. Используется значение true для ограничения, false для отмены ограничения. bool true
    bucket_console_access — Разрешить доступ к бакету через консоль управления Yandex Cloud. Используется значение true для разрешения, false для запрета. Требует указания, когда параметр bucket_private_access имеет значение true. bool true
    mgmt_ip да Публичный IP-адрес вашей рабочей станции, на которой происходит развертывание инфраструктуры с помощью Terraform. Используется для разрешения рабочей станции выполнять действия с бакетом в процессе развертывания Terraform. Требует указания, когда параметр bucket_private_access имеет значение true. string "A.A.A.A"
    trusted_cloud_nets да Список агрегированных префиксов облачных подсетей, для которых разрешен доступ к Object Storage. Используется в правиле для входящего трафика групп безопасности для ВМ с NAT. list(string) ["10.0.0.0/8", "192.168.0.0/16"]
    vm_username — Имя пользователя для ВМ с NAT и тестовой ВМ. string "admin"
    s3_ip нет Публичный IP-адрес сервиса Object Storage. string 213.180.193.243
    s3_fqdn нет Доменное имя сервиса Object Storage. string storage.yandexcloud.net
  4. Выполните инициализацию Terraform:

    terraform init
    
  5. Проверьте список создаваемых облачных ресурсов:

    terraform plan
    
  6. Создайте ресурсы:

    terraform apply
    
  7. После завершения процесса terraform apply в командной строке будет выведена информация для подключения к тестовой ВМ и тестирования работы с Object Storage. В дальнейшем его можно будет посмотреть с помощью команды terraform output:

    Информация о развернутых ресурсах
    Название Описание Пример значения
    path_for_private_ssh_key Файл с закрытым ключом для подключения по протоколу SSH к ВМ с NAT и тестовой ВМ. ./pt_key.pem
    vm_username Имя пользователя для ВМ с NAT и тестовой ВМ. admin
    test_vm_password Пароль пользователя admin для тестовой ВМ. v3RСqU****
    s3_bucket_name Имя бакета в Object Storage. s3-bucket-<...>
    s3_nlb_ip_address IP-адрес внутреннего балансировщика. 10.10.1.100

Проверьте работоспособность решенияПроверьте работоспособность решения

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

  2. Выберите сервис Compute Cloud.

  3. В списке виртуальных машин выберите ВМ test-s3-vm.

  4. Перейдите на вкладку Серийная консоль.

  5. Нажмите кнопку Подключиться.

  6. Введите логин admin и пароль из вывода команды terraform output test_vm_password (укажите значение без кавычек).

  7. Выполните команду:

    dig storage.yandexcloud.net
    
  8. Убедитесь, что в ответе от DNS-сервера доменному имени сервиса Object Storage соответствует IP-адрес внутреннего балансировщика. Результат вывода ресурсной записи типа A:

    ;; ANSWER SECTION:
    storage.yandexcloud.net. 300    IN      A       10.10.1.100
    
  9. Получите объект из бакета в Object Storage с помощью инструмента AWS CLI. Имя бакета будет получено из переменной среды на тестовой ВМ.

    aws --endpoint-url=https://storage.yandexcloud.net \
    s3 cp s3://$BUCKET/s3_test_file.txt s3_test_file.txt
    

    Результат:

    download: s3://<имя_бакета>/s3_test_file.txt to ./s3_test_file.txt
    
  10. Дополнительно можете выполнить несколько команд для проверки работы Object Storage. Имя бакета будет получено из переменной среды на тестовой ВМ.

    Загрузите скачанный тестовый файл в бакет под другим именем:

    aws --endpoint-url=https://storage.yandexcloud.net \
    s3 cp s3_test_file.txt s3://$BUCKET/textfile.txt
    

    Результат:

    upload: ./s3_test_file.txt to s3://<имя_бакета>/textfile.txt
    

    Получите список объектов в бакете:

    aws --endpoint-url=https://storage.yandexcloud.net \
    s3 ls --recursive s3://$BUCKET
    

    Результат:

    2023-08-16 18:24:05         53 s3_test_file.txt \
    2023-08-16 18:41:39         53 textfile.txt
    

    Удалите загруженный в бакет объект:

    aws --endpoint-url=https://storage.yandexcloud.net \
    s3 rm s3://$BUCKET/textfile.txt
    

    Результат:

    delete: s3://<имя_бакета>/textfile.txt
    

Удалите созданные ресурсыУдалите созданные ресурсы

Чтобы удалить ресурсы, созданные с помощью Terraform:

  1. В терминале перейдите в директорию с планом инфраструктуры.

    Важно

    Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.

  2. Удалите ресурсы:

    1. Выполните команду:

      terraform destroy
      
    2. Подтвердите удаление ресурсов и дождитесь завершения операции.

    Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.

Была ли статья полезна?

Предыдущая
Сегментация облачной инфраструктуры с помощью решения Check Point Next-Generation Firewall
Следующая
Подключение к Container Registry из Virtual Private Cloud
Проект Яндекса
© 2025 ООО «Яндекс.Облако»