Connect to Workers and Bindings
Last updated Sep 30, 2026 Containers can access Workers bindings — KV, R2, D1, Durable Objects, and others — through outbound handlers. An outbound handler intercepts HTTP requests from the container and runs inside the Workers runtime, where all of your configured bindings are available.
The container makes a plain HTTP request to a virtual hostname (for example, http://my.kv/some-key), and the outbound handler resolves it using the bound resource. No SDK or client library is required inside the container.
Use bindings in outbound handlers
Define an outboundByHost handler for each virtual hostname. The env argument gives you access to every binding declared in your Wrangler configuration.
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 });
},
};
The container calls http://my.kv/some-key and the handler resolves it using the KV binding. A call to http://my.r2/file.png reads from R2, scoped to the current container instance.
Note
You can use ctx.containerId to apply different rules per container instance — for example, to look up per-instance configuration from KV.
Access Durable Object state
The ctx argument exposes containerId, which lets you interact with the container's own Durable Object from an outbound handler.
"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);
},
Related resources
- Handle outbound traffic — Block, allow, and intercept outbound HTTP from a container
- Environment variables and secrets — Configure secrets and environment variables
- Durable Object Container API — Full
ctx.containerAPI reference
Was this helpful?
YesNo
On this page
{"@context":"https://schema.org","@type":"TechArticle","@id":"https://developers.cloudflare.com/containers/configuration/workers-connections/#page","headline":"Connect to Workers and Bindings","description":"Access KV, R2, Durable Objects, and other bindings from a container.","url":"https://developers.cloudflare.com/containers/configuration/workers-connections/","inLanguage":"en","image":"https://developers.cloudflare.com/containers/configuration/workers-connections/og.png?v=157257af7f1fb147","dateModified":"2026-09-30","publisher":{"@type":"Organization","name":"Cloudflare","description":"One platform for your apps, agents, and workforce. Build, secure, and scale without managing infrastructure","url":"https://www.cloudflare.com/","sameAs":["https://github.com/cloudflare","https://www.linkedin.com/company/cloudflare","https://x.com/cloudflare"],"logo":{"@type":"ImageObject","url":"https://developers.cloudflare.com/logo.svg"},"address":{"@type":"PostalAddress","streetAddress":"101 Townsend St","addressLocality":"San Francisco","addressRegion":"CA","postalCode":"94107","addressCountry":"US"},"contactPoint":[{"@type":"ContactPoint","contactType":"Customer Support","url":"https://support.cloudflare.com/","availableLanguage":["English"]},{"@type":"ContactPoint","contactType":"Sales","url":"https://www.cloudflare.com/contact/","availableLanguage":["English"]}]},"isPartOf":{"@type":"WebSite","@id":"https://developers.cloudflare.com/#website","name":"Cloudflare Docs","url":"https://developers.cloudflare.com/"}}
description: Configure a Container, its Durable Object binding, and its class export in Wrangler. title: Wrangler configuration image: https://developers.cloudflare.com/containers/configuration/wrangler/og.png?v=2a187101b50ae69b
Documentation Index
Fetch the complete documentation index at: https://developers.cloudflare.com/containers/llms.txt
Use this file to discover all available pages before exploring further.
Docs