Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Comprehensive Cloudflare platform skill covering Workers, D1, R2, KV, AI, Durable Objects, and security.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/pulumi/README.md
1# Cloudflare Pulumi Provider23Expert guidance for Cloudflare Pulumi Provider (@pulumi/cloudflare).45## Overview67Programmatic management of Cloudflare resources: Workers, Pages, D1, KV, R2, DNS, Queues, etc.89**Packages:**10- TypeScript/JS: `@pulumi/cloudflare`11- Python: `pulumi-cloudflare`12- Go: `github.com/pulumi/pulumi-cloudflare/sdk/v6/go/cloudflare`13- .NET: `Pulumi.Cloudflare`1415**Version:** v6.x1617## Core Principles18191. Use API tokens (not legacy API keys)202. Store accountId in stack config213. Match binding names across code/config224. Use `module: true` for ES modules235. Set `compatibilityDate` to lock behavior2425## Authentication2627```typescript28import * as cloudflare from "@pulumi/cloudflare";2930// API Token (recommended): CLOUDFLARE_API_TOKEN env31const provider = new cloudflare.Provider("cf", { apiToken: process.env.CLOUDFLARE_API_TOKEN });3233// API Key (legacy): CLOUDFLARE_API_KEY + CLOUDFLARE_EMAIL env34const provider = new cloudflare.Provider("cf", { apiKey: process.env.CLOUDFLARE_API_KEY, email: process.env.CLOUDFLARE_EMAIL });3536// API User Service Key: CLOUDFLARE_API_USER_SERVICE_KEY env37const provider = new cloudflare.Provider("cf", { apiUserServiceKey: process.env.CLOUDFLARE_API_USER_SERVICE_KEY });38```3940## Setup4142**Pulumi.yaml:**43```yaml44name: my-cloudflare-app45runtime: nodejs46config:47cloudflare:apiToken:48value: ${CLOUDFLARE_API_TOKEN}49```5051**Pulumi.<stack>.yaml:**52```yaml53config:54cloudflare:accountId: "abc123..."55```5657**index.ts:**58```typescript59import * as pulumi from "@pulumi/pulumi";60import * as cloudflare from "@pulumi/cloudflare";61const accountId = new pulumi.Config("cloudflare").require("accountId");62```6364## Common Resource Types65- `Provider` - Provider config66- `WorkerScript` - Worker67- `WorkersKvNamespace` - KV68- `R2Bucket` - R269- `D1Database` - D170- `Queue` - Queue71- `PagesProject` - Pages72- `DnsRecord` - DNS73- `WorkerRoute` - Worker route74- `WorkersDomain` - Custom domain7576## Key Properties77- `accountId` - Required for most resources78- `zoneId` - Required for DNS/domain79- `name`/`title` - Resource identifier80- `*Bindings` - Connect resources to Workers8182## Reading Order8384| Order | File | What | When to Read |85|-------|------|------|--------------|86| 1 | [configuration.md](./configuration.md) | Resource config for Workers/KV/D1/R2/Queues/Pages | First time setup, resource reference |87| 2 | [patterns.md](./patterns.md) | Architecture patterns, multi-env, component resources | Building complex apps, best practices |88| 3 | [api.md](./api.md) | Outputs, dependencies, imports, dynamic providers | Advanced features, integrations |89| 4 | [gotchas.md](./gotchas.md) | Common errors, troubleshooting, limits | Debugging, deployment issues |9091## In This Reference92- [configuration.md](./configuration.md) - Provider config, stack setup, Workers/bindings93- [api.md](./api.md) - Resource types, Workers script, KV/D1/R2/queues/Pages94- [patterns.md](./patterns.md) - Multi-env, secrets, CI/CD, stack management95- [gotchas.md](./gotchas.md) - State issues, deployment failures, limits9697## See Also98- [terraform](../terraform/) - Alternative IaC for Cloudflare99- [wrangler](../wrangler/) - CLI deployment alternative100- [workers](../workers/) - Worker runtime documentation101