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

Подключение к Workers и Bindings

Containers могут обращаться к привязки Workers : KV, R2, D1, Durable Objects и другие, через обработчики исходящих запросов. Исходящий обработчик перехватывает HTTP-запросы от контейнера и выполняется внутри среды выполнения Workers, где доступны все настроенные вами привязки.

Контейнер отправляет обычный HTTP-запрос к виртуальному имени хоста (например, http://my.kv/some-key), и исходящий обработчик разрешает его с помощью привязанного ресурса. SDK или клиентская библиотека внутри контейнера не требуются.

Используйте привязки в исходящих обработчиках

Определите outboundByHost обработчик для каждого виртуального имени хоста. env аргумент даёт доступ ко всем привязкам, объявленным в конфигурации Wrangler.

export class MyContainer extends Container {}

MyContainer.outboundByHost = {
	"my.kv": async (request, env, ctx) => {
		const url = new URL(request.url);
		const key = url.pathname.slice(1);
		const value = await env.KV.get(key);
		return new Response(value);
	},
	"my.r2": async (request, env, ctx) => {
		const url = new URL(request.url);
		// Scope access to this container's ID
		const path = `${ctx.containerId}${url.pathname}`;
		const object = await env.R2.get(path);
		return new Response(object?.body ?? null, { status: object ? 200 : 404 });
	},
};

Контейнер вызывает http://my.kv/some-key и обработчик разрешает его с помощью привязки KV. Вызов http://my.r2/file.png читает из R2 в пределах текущего экземпляра контейнера.

Доступ к состоянию Durable Object

ctx аргумент предоставляет доступ к containerId, что позволяет взаимодействовать с собственным Durable Object контейнера из исходящего обработчика.

"get-state.do": async (request, env, ctx) => {
  const id = env.MY_CONTAINER.idFromString(ctx.containerId);
  const stub = env.MY_CONTAINER.get(id);
  // Assumes getStateForKey is defined on your DO
  return stub.getStateForKey(request.body);
},