为什么我的存储桶名称位于 R2 对象的键中?

问题描述 投票:0回答:1

我在无服务器函数中使用 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

如何确保仅使用指定的键创建对象?

amazon-s3 aws-sdk cloudflare cloudflare-r2
1个回答
0
投票

我没有意识到,当您从 UI 复制时,R2 控制台中的 S3 兼容 URL 默认包含存储桶名称。

https://<ACCOUNT_ID>.r2.cloudflarestorage.com/<BUCKET_NAME>

从我的

<BUCKET_NAME>
中删除
R2_URL
解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.