[ PROMPT_NODE_24206 ]
Cloudflare Pulumi Provider 指南
[ SKILL_DOCUMENTATION ]
# Cloudflare Pulumi Provider
Cloudflare Pulumi Provider (@pulumi/cloudflare) 专家指南。
## 概览
以编程方式管理 Cloudflare 资源:Workers、Pages、D1、KV、R2、DNS、Queues 等。
**软件包:**
- TypeScript/JS: `@pulumi/cloudflare`
- Python: `pulumi-cloudflare`
- Go: `github.com/pulumi/pulumi-cloudflare/sdk/v6/go/cloudflare`
- .NET: `Pulumi.Cloudflare`
**版本:** v6.x
## 核心原则
1. 使用 API 令牌(而非旧版 API 密钥)
2. 在 stack 配置中存储 `accountId`
3. 确保代码与配置中的绑定名称一致
4. 对于 ES 模块,设置 `module: true`
5. 设置 `compatibilityDate` 以锁定行为
## 身份验证
```typescript
import * as cloudflare from "@pulumi/cloudflare";
// API 令牌(推荐):使用 CLOUDFLARE_API_TOKEN 环境变量
const provider = new cloudflare.Provider("cf", { apiToken: process.env.CLOUDFLARE_API_TOKEN });
// API 密钥(旧版):使用 CLOUDFLARE_API_KEY + CLOUDFLARE_EMAIL 环境变量
const provider = new cloudflare.Provider("cf", { apiKey: process.env.CLOUDFLARE_API_KEY, email: process.env.CLOUDFLARE_EMAIL });
// API 用户服务密钥:使用 CLOUDFLARE_API_USER_SERVICE_KEY 环境变量
const provider = new cloudflare.Provider("cf", { apiUserServiceKey: process.env.CLOUDFLARE_API_USER_SERVICE_KEY });
```
## 设置
**Pulumi.yaml:**
```yaml
name: my-cloudflare-app
runtime: nodejs
config:
cloudflare:apiToken:
value: ${CLOUDFLARE_API_TOKEN}
```
**Pulumi..yaml:**
```yaml
config:
cloudflare:accountId: "abc123..."
```
**index.ts:**
```typescript
import * as pulumi from "@pulumi/pulumi";
import * as cloudflare from "@pulumi/cloudflare";
const accountId = new pulumi.Config("cloudflare").require("accountId");
```
## 常用资源类型
- `Provider` - 提供者配置
- `WorkerScript` - Worker 脚本
- `WorkersKvNamespace` - KV 命名空间
- `R2Bucket` - R2 存储桶
- `D1Database` - D1 数据库
- `Queue` - 队列
- `PagesProject` - Pages 项目
- `DnsRecord` - DNS 记录
- `WorkerRoute` - Worker 路由
- `WorkersDomain` - 自定义域名
## 关键属性
- `accountId` - 大多数资源必填
- `zoneId` - DNS/域名必填
- `name`/`title` - 资源标识符
- `*Bindings` - 将资源连接到 Workers
## 阅读顺序
| 顺序 | 文件 | 内容 | 何时阅读 |
|-------|------|------|--------------|
| 1 | [configuration.md](./configuration.md) | Workers/KV/D1/R2/Queues/Pages 的资源配置 | 首次设置、资源参考时 |
| 2 | [patterns.md](./patterns.md) | 架构模式、多环境、组件资源 | 构建复杂应用、最佳实践时 |
| 3 | [api.md](./api.md) | 输出、依赖、导入、动态提供者 | 高级功能、集成时 |
| 4 | [gotchas.md](./gotchas.md) | 常见错误、故障排除、限制 | 调试、部署问题时 |
## 本参考包含
- [configuration.md](./configuration.md) - 提供者配置、Stack 设置、Workers/绑定
- [api.md](./api.md) - 资源类型、Workers 脚本、KV/D1/R2/队列/Pages
- [patterns.md](./patterns.md) - 多环境、机密管理、CI/CD、Stack 管理
- [gotchas.md](./gotchas.md) - 状态问题、部署失败、限制
## 另请参阅
- [terraform](../terraform/) - Cloudflare 的替代 IaC 方案
- [wrangler](../wrangler/) - 替代的 CLI 部署工具
- [workers](../workers/) - Worker 运行时文档