← Containers / containers / platform-details
Připojení k Workers a vazbám
Containers mají přístup k Workers bindings : KV, R2, D1, Durable Objects a další, a to prostřednictvím outbound handlery. Odchozí handler zachytává HTTP požadavky z kontejneru a běží uvnitř Workers runtime, kde jsou k dispozici všechny vaše nakonfigurované bindings.
Kontejner odešle běžný HTTP požadavek na virtuální hostname (například http://my.kv/some-key), a odchozí handler jej přeloží pomocí svázaného prostředku. Uvnitř kontejneru není potřeba žádné SDK ani klientská knihovna.
Používejte bindings v outbound handlerech
Definujte outboundByHost handler pro každý virtuální hostname. Daný env argument vám dává přístup ke každému bindingu deklarovanému v konfiguraci 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 });
},
};Kontejner volá http://my.kv/some-key a handler ho přeloží pomocí KV bindingu. Volání http://my.r2/file.png čte z R2, v rozsahu aktuální instance kontejneru.
Přístup ke stavu Durable Object
ctx argument zpřístupňuje containerId, což vám umožňuje pracovat s vlastním Durable Object kontejneru z odchozího handleru.
"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);
},Související zdroje
- Zpracování odchozího provozu : Blokování, povolování a zachytávání veškerého odchozího HTTP provozu z kontejneru
- Proměnné prostředí a secrets : Konfigurace secrets a proměnných prostředí
- Rozhraní Durable Object : Úplný
ctx.containerreferenční dokumentace API