[ PROMPT_NODE_24250 ]
R2 配置说明
[ SKILL_DOCUMENTATION ]
# R2 配置
## Workers 绑定
**wrangler.jsonc:**
c
{
"r2_buckets": [
{
"binding": "MY_BUCKET",
"bucket_name": "my-bucket-name"
}
]
}
## TypeScript 类型
typescript
interface Env { MY_BUCKET: R2Bucket; }
export default {
async fetch(request: Request, env: Env): Promise {
const object = await env.MY_BUCKET.get('file.txt');
return new Response(object?.body);
}
}
## S3 SDK 设置
typescript
import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3';
const s3 = new S3Client({
region: 'auto',
endpoint: `https://${accountId}.r2.cloudflarestorage.com`,
credentials: {
accessKeyId: env.R2_ACCESS_KEY_ID,
secretAccessKey: env.R2_SECRET_ACCESS_KEY
}
});
await s3.send(new PutObjectCommand({
Bucket: 'my-bucket',
Key: 'file.txt',
Body: data,
StorageClass: 'STANDARD' // 或 'STANDARD_IA'
}));
## 位置提示 (Location Hints)
bash
wrangler r2 bucket create my-bucket --location=enam
# 提示: wnam, enam, weur, eeur, apac, oc
# 管辖区 (覆盖提示): --jurisdiction=eu (或 fedramp)
## CORS 配置
CORS 必须通过 S3 SDK 或仪表板进行配置(Workers API 不支持):
typescript
import { S3Client, PutBucketCorsCommand } from '@aws-sdk/client-s3';
const s3 = new S3Client({
region: 'auto',
endpoint: `https://${accountId}.r2.cloudflarestorage.com`,
credentials: {
accessKeyId: env.R2_ACCESS_KEY_ID,
secretAccessKey: env.R2_SECRET_ACCESS_KEY
}
});
await s3.send(new PutBucketCorsCommand({
Bucket: 'my-bucket',
CORSConfiguration: {
CORSRules: [{
AllowedOrigins: ['https://example.com'],
AllowedMethods: ['GET', 'PUT', 'HEAD'],
AllowedHeaders: ['*'],
ExposeHeaders: ['ETag'],
MaxAgeSeconds: 3600
}]
}
}));
## 对象生命周期
typescript
import { PutBucketLifecycleConfigurationCommand } from '@aws-sdk/client-s3';
await s3.send(new PutBucketLifecycleConfigurationCommand({
Bucket: 'my-bucket',
LifecycleConfiguration: {
Rules: [
{
ID: 'expire-old-logs',
Status: 'Enabled',
Prefix: 'logs/',
Expiration: { Days: 90 }
},
{
ID: 'transition-to-ia',
Status: 'Enabled',
Prefix: 'archives/',
Transitions: [{ Days: 30, StorageClass: 'STANDARD_IA' }]
}
]
}
}));
## API 令牌作用域
创建 R2 令牌时,请设置最小权限:
| 权限 | 使用场景 |
|------------|----------|
| Object Read