使用Node.js aws-sdk无凭证访问公开S3桶提示缺凭证如何处理
解决方案
可以设置无需凭证发起请求,该功能对应AWS CLI的--no-sign-request参数,仅需调整S3客户端的初始化配置即可。
针对你当前使用的v2版本AWS SDK(aws-sdk包),修改后代码如下:
import AWS from 'aws-sdk'; const s3 = new AWS.S3({ // 核心配置:指定请求不签名,跳过凭证校验流程 signatureVersion: 'unsigned', // 建议补充桶所在的区域,避免区域自动解析报错 region: '你的桶实际所在区域,例如us-east-1、cn-north-1' }); // 原有listObjectsV2调用逻辑无需修改 s3.listObjectsV2({Bucket: bucket_name, Prefix: prefix, Delimiter: "/"}, (err, data) => { // 你的业务逻辑 });
补充说明
- 配置
signatureVersion: 'unsigned'后,SDK会跳过凭证获取、请求签名的全流程,直接发起匿名请求,适配公开可访问的S3桶场景 - 需提前确认你的S3桶策略已开放匿名用户的
s3:ListBucket权限,且前缀配置符合桶策略的权限范围,否则请求仍会返回403错误
内容的提问来源于stack exchange,提问作者sygi
相关产品推荐
相关产品推荐

