@crossbeau ive migrated from the

@crossbeau ive migrated from the cloudflare provider to the pulumi local.Command resource to upload a worker. will post the solution in the thread i've got support for durable objects in my stack... AND state size has gone back down from 3.3mb ... to now 0.05mb 🌈
1 Reply
matt // unweb
matt // unwebOP•2mo ago
const conf = pulumi
.output({
name: workerName,
main: 'index.js',
compatibility_date: '2025-02-14',
compatibility_flags: ['nodejs_compat'],
vars: vars.plaintext,
durable_objects: {
bindings: [{
name: 'MY_FIRST_PONY',
class_name: 'MyFirstPony',
}],
},
migrations: [{
tag: 'v1',
new_classes: ['MyFirstPony']
}],
})
.apply(conf => JSON.stringify(conf, null, 2))

const secrets = pulumi
.output(vars.secrets)
.apply(secrets =>
Object.entries(secrets)
.map(s => s.join('=')).join('\n'),
)

const worker = new local.Command('worker-script', {
dir: 'prebundle/',
create: dedent`
{ cat << EOF1 > wrangler.jsonc
$CONF
EOF1
} && bunx wrangler deploy --no-bundle && \
{ cat << EOF2 > .dev.vars
$SECRETS
EOF2
} && bunx wrangler secret bulk .dev.vars && \
rm .dev.vars
`,
delete: 'bunx wrangler delete',
environment: {
CONF: conf,
SECRETS: secrets,
CF_ACCOUNT_ID: accountId,
CF_API_TOKEN: pulumi.secret(
process.env.PROV_CLOUDFLARE_TOKEN
),
},
})

new cloudflare.WorkerRoute('route', {
zoneId,
pattern: `my.custom.domain/prefix/*`,
scriptName: workerName,
},
{ dependsOn: [worker] },
)
const conf = pulumi
.output({
name: workerName,
main: 'index.js',
compatibility_date: '2025-02-14',
compatibility_flags: ['nodejs_compat'],
vars: vars.plaintext,
durable_objects: {
bindings: [{
name: 'MY_FIRST_PONY',
class_name: 'MyFirstPony',
}],
},
migrations: [{
tag: 'v1',
new_classes: ['MyFirstPony']
}],
})
.apply(conf => JSON.stringify(conf, null, 2))

const secrets = pulumi
.output(vars.secrets)
.apply(secrets =>
Object.entries(secrets)
.map(s => s.join('=')).join('\n'),
)

const worker = new local.Command('worker-script', {
dir: 'prebundle/',
create: dedent`
{ cat << EOF1 > wrangler.jsonc
$CONF
EOF1
} && bunx wrangler deploy --no-bundle && \
{ cat << EOF2 > .dev.vars
$SECRETS
EOF2
} && bunx wrangler secret bulk .dev.vars && \
rm .dev.vars
`,
delete: 'bunx wrangler delete',
environment: {
CONF: conf,
SECRETS: secrets,
CF_ACCOUNT_ID: accountId,
CF_API_TOKEN: pulumi.secret(
process.env.PROV_CLOUDFLARE_TOKEN
),
},
})

new cloudflare.WorkerRoute('route', {
zoneId,
pattern: `my.custom.domain/prefix/*`,
scriptName: workerName,
},
{ dependsOn: [worker] },
)

Did you find this page helpful?