INTEGRITY Документация

AWS RDS и Aurora

В этом примере показано, как подключить Hyperdrive к инстансу базы данных Amazon Relational Database Service (Amazon RDS) Postgres или Amazon Aurora.

1. Разрешите доступ к Hyperdrive

Чтобы Hyperdrive мог подключаться к вашей базе данных, убедитесь, что у него есть действительные учётные данные пользователя и сетевой доступ.

AWS Console

При создании или изменении инстанса в консоли AWS:

  1. Настройте DB cluster identifier и другие параметры, которые вы хотите настроить.
  2. В разделе Настройки > Credential settings, запишите Главное имя пользователя и Главный пароль (только Aurora).
  3. В разделе Подключение заголовок, убедитесь, что Публичный доступ имеет значение Да.
  4. Выберите Существующая группа безопасности VPC который разрешает публичный доступ из интернета с 0.0.0.0/0 на порт, который прослушивает ваш экземпляр базы данных (по умолчанию: 5432 для инстансов PostgreSQL).
  5. Выберите Create database.

Получите конечную точку базы данных (Aurora)

Чтобы получить конечную точку базы данных (имя хоста), к которой будет подключаться Hyperdrive:

  1. Перейдите в Базы данных представление в разделе RDS в консоли AWS.
  2. Выберите базу данных, к которой должен подключаться Hyperdrive.
  3. В разделе Конечные точки заголовок и запишите Имя конечной точки типом Writer и Порт.

Получите конечную точку базы данных (RDS PostgreSQL)

Для обычных экземпляров RDS (не Aurora) необходимо получить конечную точку и порт базы данных:

  1. Перейдите в Базы данных представление в разделе RDS в консоли AWS.
  2. Выберите базу данных, к которой должен подключаться Hyperdrive.
  3. В разделе Подключение и безопасность заголовок и запишите Конечная точка и Порт.

Конечная точка будет выглядеть примерно так: YOUR_DATABASE_NAME.cpuo5rlli58m.AWS_REGION.rds.amazonaws.com а порт по умолчанию будет равен 5432.

2. Создание пользователя

После создания базы данных необходимо создать пользователя, от имени которого будет подключаться Hyperdrive. Хотя вы можете использовать Главное имя пользователя настроенного при первоначальном создании базы данных, рекомендуется создать пользователя с ограниченными правами.

Чтобы создать нового пользователя, войдите в базу данных и используйте CREATE ROLE команда:

# Log in to the database
psql postgresql://MASTER_USERNAME:MASTER_PASSWORD@ENDPOINT_NAME:PORT/database_name

Выполните следующие SQL-инструкции:

-- Create a role for Hyperdrive
CREATE ROLE hyperdrive;

-- Allow Hyperdrive to connect
GRANT CONNECT ON DATABASE postgres TO hyperdrive;

-- Grant database privileges to the hyperdrive role
GRANT ALL PRIVILEGES ON DATABASE postgres to hyperdrive;

-- Create a specific user for Hyperdrive to log in as
CREATE ROLE hyperdrive_user LOGIN PASSWORD 'sufficientlyRandomPassword';

-- Grant this new user the hyperdrive role privileges
GRANT hyperdrive to hyperdrive_user;

Ознакомьтесь с документацией AWS документация о ролях пользователей в PostgreSQL ↗ для дополнительных сведений.

Указав пользователя базы данных, пароль, конечную точку базы данных (имя хоста и порт) и имя базы данных (по умолчанию: postgres), теперь вы можете настроить Hyperdrive.

3. Создание конфигурации базы данных

Чтобы настроить Hyperdrive, вам потребуется:

Hyperdrive принимает комбинацию этих параметров в стандартном формате строки подключения, который используется драйверами баз данных:

postgres://USERNAME:PASSWORD@HOSTNAME_OR_IP_ADDRESS:PORT/database_name

Большинство провайдеров баз данных предоставляют строку подключения, которую можно напрямую скопировать и вставить прямо в Hyperdrive.

Чтобы создать конфигурацию Hyperdrive в панели управления Cloudflare:

  1. На панели управления Cloudflare перейдите к разделу Hyperdrive страницу.

    Перейдите в Hyperdrive ↗
  2. Выберите Создать конфигурацию.

  3. Заполните форму, включая строку подключения.

  4. Выберите Создание.

Чтобы создать конфигурацию Hyperdrive с помощью Wrangler CLI:

  1. Откройте терминал и выполните следующую команду. Замените <NAME_OF_HYPERDRIVE_CONFIG> с именем для вашей конфигурации Hyperdrive и вставьте строку подключения, предоставленную хостом базы данных, либо замените user, password, HOSTNAME_OR_IP_ADDRESS, port, а также database_name заполнители значениями, соответствующими вашей базе данных:

    npx wrangler hyperdrive create <NAME_OF_HYPERDRIVE_CONFIG> --connection-string="postgres://user:password@HOSTNAME_OR_IP_ADDRESS:PORT/database_name"
  2. Эта команда выводит привязку для конфигурационный файл Wrangler:

    {
    	"$schema": "./node_modules/wrangler/config-schema.json",
    	"name": "hyperdrive-example",
    	"main": "src/index.ts",
    	// Set this to today's date
    	"compatibility_date": "2026-08-28",
    	"compatibility_flags": [
    		"nodejs_compat"
    	],
    	// Pasted from the output of `wrangler hyperdrive create <NAME_OF_HYPERDRIVE_CONFIG> --connection-string=[...]` above.
    	"hyperdrive": [
    		{
    			"binding": "HYPERDRIVE",
    			"id": "<ID OF THE CREATED HYPERDRIVE CONFIGURATION>"
    		}
    	]
    }
    "$schema" = "./node_modules/wrangler/config-schema.json"
    name = "hyperdrive-example"
    main = "src/index.ts"
    # Set this to today's date
    compatibility_date = "2026-08-28"
    compatibility_flags = [ "nodejs_compat" ]
    
    [[hyperdrive]]
    binding = "HYPERDRIVE"
    id = "<ID OF THE CREATED HYPERDRIVE CONFIGURATION>"

3. Использование Hyperdrive в вашем Worker

Установите node-postgres драйвер:

npm i pg@>8.16.3

При использовании TypeScript установите пакет типов:

npm i -D @types/pg

Добавьте необходимые флаги совместимости Node.js и привязку Hyperdrive в свой wrangler.jsonc файле:

{
	// required for database drivers to function
	"compatibility_flags": [
		"nodejs_compat"
	],
	// Set this to today's date
	"compatibility_date": "2026-08-28",
	"hyperdrive": [
		{
			"binding": "HYPERDRIVE",
			"id": "<your-hyperdrive-id-here>"
		}
	]
}
compatibility_flags = [ "nodejs_compat" ]
# Set this to today's date
compatibility_date = "2026-08-28"

[[hyperdrive]]
binding = "HYPERDRIVE"
id = "<your-hyperdrive-id-here>"

Создайте новый Client экземпляр и передайте Hyperdrive connectionString:

// filepath: src/index.ts
import { Client } from "pg";

export default {
	async fetch(
		request: Request,
		env: Env,
		ctx: ExecutionContext,
	): Promise<Response> {
		// Create a new client instance for each request. Hyperdrive maintains the
		// underlying database connection pool, so creating a new client is fast.
		const client = new Client({
			connectionString: env.HYPERDRIVE.connectionString,
		});

		try {
			// Connect to the database
			await client.connect();

			// Perform a simple query
			const result = await client.query("SELECT * FROM pg_tables");

			return Response.json({
				success: true,
				result: result.rows,
			});
		} catch (error: any) {
			console.error("Database error:", error.message);

			return new Response("Internal error occurred", { status: 500 });
		}
	},
};

Следующие шаги