You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AWS SDK调用Cloudflare R2存储时出现401 Unauthorized错误的原因?

使用AWS SDK v3访问Cloudflare R2时遭遇401 Unauthorized错误排查

我在Node.js应用中使用AWS SDK for JavaScript (v3)尝试列出Cloudflare R2存储桶中的对象,但遇到了Unauthorized错误。

代码片段

const { S3Client, ListObjectsCommand } = require('@aws-sdk/client-s3');

const s3Client = new S3Client({
  endpoint: 'https://<my-r2-subdomain>.r2.cloudflarestorage.com',
  credentials: {
    accessKeyId: process.env.CLOUDFLARE_ACCESS_KEY_ID,
    secretAccessKey: process.env.CLOUDFLARE_SECRET_ACCESS_KEY,
  },
  signatureVersion: 'v4',
});

const bucketParams = {
  Bucket: 'my-bucket-name',
};

const listObjects = async () => {
  try {
    const data = await s3Client.send(new ListObjectsCommand(bucketParams));
    console.log('Success', data);
  } catch (err) {
    console.error('Error', err);
  }
};

listObjects();

401响应内容

{
  "$fault": "client",
  "$metadata": {
    "httpStatusCode": 401,
    "requestId": "undefined",
    "extendedRequestId": "undefined",
    "cfId": "undefined",
    "attempts": 1,
    "totalRetryDelay": 0
  },
  "Code": "Unauthorized"
}

错误堆栈跟踪

Error Unauthorized: Unauthorized
    at throwDefaultError (D:\GitHub\cloudflare-r2-testing\node_modules\@smithy\smithy-client\dist-cjs\default-error-handler.js:8:22)
    at D:\GitHub\cloudflare-r2-testing\node_modules\@smithy\smithy-client\dist-cjs\default-error-handler.js:18:39
    at de_ListObjectsCommandError (D:\GitHub\cloudflare-r2-testing\node_modules\@aws-sdk\client-s3\dist-cjs\protocols\Aws_restXml.js:5032:20)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async D:\GitHub\cloudflare-r2-testing\node_modules\@smithy\middleware-serde\dist-cjs\deserializerMiddleware.js:7:24
    at async D:\GitHub\cloudflare-r2-testing\node_modules\@aws-sdk\middleware-signing\dist-cjs\awsAuthMiddleware.js:14:20
    at async D:\GitHub\cloudflare-r2-testing\node_modules\@smithy\middleware-retry\dist-cjs\retryMiddleware.js:27:46
    at async D:\GitHub\cloudflare-r2-testing\node_modules\@aws-sdk\middleware-sdk-s3\dist-cjs\region-redirect-endpoint-middleware.js:14:24
    at async D:\GitHub\cloudflare-r2-testing\node_modules\@aws-sdk\middleware-sdk-s3\dist-cjs\region-redirect-middleware.js:9:20
    at async D:\GitHub\cloudflare-r2-testing\node_modules\@aws-sdk\middleware-logger\dist-cjs\loggerMiddleware.js:7:26 

已确认的事项

  • Cloudflare R2的access key ID和secret access key正确且有效
  • 该令牌拥有所有存储桶的管理员读写权限
  • 无代理或防火墙处于激活状态
  • 环境变量已正确加载到Node.js进程中

请问问题出在哪里?

内容的提问来源于stack exchange,提问作者trueThari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 22:05:30