我在无服务器函数中使用 Cloudflare R2 和
@aws-sdk/client-s3
。
这里我尝试将一个对象添加到我的存储桶('my-bucket');
import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
const s3Client = new S3Client({
region: "auto",
endpoint: R2_URL,
credentials: {
accessKeyId: R2_ACCESS_KEY_ID,
secretAccessKey: R2_SECRET_ACCESS_KEY,
},
});
const putObject = new PutObjectCommand({
Bucket: "my-bucket",
Key: "test.png",
Body: outputBuffer,
ContentType: "image/png",
});
s3Client.send(putObjectCommand);
在 Cloudflare R2 控制台中,我可以看到我的对象是在正确的存储桶中创建的,但存储桶名称在键中显示为
my-bucket/test.png
。我希望钥匙很简单 test.png
。
如何确保仅使用指定的键创建对象?
我没有意识到,当您从 UI 复制时,R2 控制台中的 S3 兼容 URL 默认包含存储桶名称。
https://<ACCOUNT_ID>.r2.cloudflarestorage.com/<BUCKET_NAME>
从我的
<BUCKET_NAME>
中删除 R2_URL
解决了我的问题。