Создание документных таблиц в базе данных
Важно
Функциональность создания документных таблиц поддерживается только в бессерверном режиме работы базы данных Yandex Managed Service for YDB.
Документные таблицы Yandex Managed Service for YDB содержат данные в виде набора элементов и совместимы с таблицами Amazon DynamoDBaws_dynamodb_table
.
Для создания документной таблицы с помощью провайдера AWS потребуется:
- Сервисный аккаунт с ролью не ниже
ydb.editor
. - Статический ключ доступа.
Вначале необходимо настроить провайдер AWS в файле проекта:
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
yandex = {
source = "yandex-cloud/yandex"
}
}
}
provider "aws" {
region = "ru-central1"
endpoints {
dynamodb = "https://docapi.serverless.yandexcloud.net/ru-central1/<cloud_id>/<ydb_database_id>"
}
profile = "<profile_name>"
skip_credentials_validation = true
skip_metadata_api_check = true
skip_region_validation = true
skip_requesting_account_id = true
}
Аргументы провайдера aws
:
region
— регион размещения ресурса. Имеет неизменное значениеru-central1
.endpoints.dynamodb
— Document API эндпоинт базы данных. Адрес эндпоинта указан в консоли управления: Yandex Managed Service for YDB → раздел Обзор → секция Соединение → параметр Document API эндпоинт.profile
— название секции в файле~/.aws/credentials
, содержащейaws_access_key_id
(идентификатор статического ключа доступа) иaws_secret_access_key
(содержимое секретного ключа).skip_credentials_validation
— пропуск проверки учетных данных через STS (Amazon Web Services Security Token Service) API. Будет пропущена проверка токенов.skip_metadata_api_check
— пропуск проверки аутентификации Terraform через API метаданных AWS.skip_region_validation
— пропуск проверки указанного названия региона.skip_requesting_account_id
— пропуск запроса идентификатора аккаунта.
Указанный набор параметров skip_
обязателен, так как он обеспечивает совместимость API запросов провайдера AWS к Yandex Cloud.
Затем можно указать ресурс aws_dynamodb_table
для создания документной таблицы:
resource "aws_dynamodb_table" "test" {
name = "<table_name>"
billing_mode = "PAY_PER_REQUEST"
hash_key = "<attribute_name_1>"
range_key = "<attribute_name_2>"
attribute {
name = "<attribute_name_1>"
type = "<attribute_type>"
}
attribute {
name = "<attribute_name_2>"
type = "<attribute_type>"
}
}
Аргументы ресурса aws_dynamodb_table
:
name
— название таблицы. Таблица может быть размещена в иерархическом пространстве имен внутри YDB. Например, чтобы поместить таблицу в директориюmy-test-doctable
относительно корня базы, нужно задать следующий путь:my-test-doctable/table-name
. Если директория не существует, то она будет создана автоматически.billing_mode
— модель расчета платы за операции чтения и записи. Поддерживается только модельPAY_PER_REQUEST
.hash_key
— атрибут, который будет использоваться как ключ хеширования. Определяется в блокеattribute
.range_key
— атрибут, который будет использоваться как ключ диапазона (сортировки). Определяется в блокеattribute
.attribute
— блок с набором вложенных определений атрибутов. Состоит из полейname
(название атрибута) иtype
(тип данных атрибута):S
— строка,N
— число.
При первом запуске сценария необходимо выполнить команду terraform init
для инициализации провайдера AWS. Далее можно выполнять команды terraform plan
и terraform apply
. В результате выполнения команд будет создана документная таблица с названием, указанным в параметре name
.