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

React Native使用AWS SDK报错:config配置中缺少凭证

问题原因

你遇到的报错是三个配置错误共同导致的:

  • S3实例初始化时的凭证字段名写错了:AWS SDK for JavaScript v2 中,静态凭证的正确字段是accessKeyId和secretAccessKey,你写的accessKey、secretKey是无效字段,SDK识别不到有效凭证就会抛出缺失凭证的错误
  • 凭证配置重复冲突:你同时给AWS全局配置了Cognito身份池凭证,又给S3实例单独传了静态凭证,两套配置冲突导致SDK无法正常读取凭证。你提到其他业务用同一组静态密钥可以正常上传,直接保留静态凭证即可,删掉多余的Cognito配置就行
  • 异步函数没有错误捕获:downloadFromS3是异步函数,你调用的时候没有加错误捕获逻辑,所以抛出的异常会变成未处理的Promise拒绝

修正后代码

S3初始化部分

// 删掉多余的全局Cognito凭证配置,只保留必要配置
const s3 = new AWS.S3({
  region: 'us-east-2',
  // 修正凭证字段名
  credentials: {
    accessKeyId: 'MY-ACCESS-KEY',
    secretAccessKey: 'MY-SECRET-KEY',
  },
  params: {Bucket: 'rn-mobile-app-bucket'}
});

下载函数部分

async function downloadFromS3 () {
  try {
    // 已经在S3实例配置了全局Bucket参数,请求时可以不用重复传
    const file = await s3.getObject({ Key: 'Uploaded Photos/ColePic' }).promise();
    console.log(file);
    return {
      data: file.Body,
      mimetype: file.ContentType
    }
  } catch (err) {
    // 可自行补充错误提示逻辑
    console.error('S3下载失败:', err);
    return null;
  }
}

useEffect调用部分无需修改,原有逻辑可正常运行

//Fetch all users from database
useEffect(() =>{
  downloadFromS3();
  fetch('http://10.0.2.2:5000/forms').then(response =>{
    if(response.ok){
      return response.json();
    }
  }).then(data => setFormsArray(data));
}, []);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 12:15:04