使用AWS SDK调用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
相关产品推荐
相关产品推荐

