【问题标题】:Using AWS SDK in React Native - Missing credentials in config在 React Native 中使用 AWS 开发工具包 - 配置中缺少凭证
【发布时间】:2021-05-20 18:28:29
【问题描述】:

我正在尝试下载存储在 Expo React Native 应用程序的 Amazon Web Services S3 存储桶中的图像。我会包含我用来执行此操作的文档,但我不得不使用大量不同文档的合并,以至于我无法找到所有文档。

我相信我在这里拥有所有正确的信息,并且代码看起来应该对我有用,但我收到一个未处理的承诺拒绝说 [Unhandled promise rejection: CredentialsError: Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1] 我将在下面发布完整的消息。

这就是我现在正在尝试的(我已经替换了身份池、访问密钥和密钥,但我确信它们都是正确的,因为我正在使用访问和密钥将图像上传到应用程序):

  AWS.config.update({region: 'us-east-2'});
  AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: "MY-IDENTITY-POOL" }) //No idea if this is right
  const s3 = new AWS.S3({
    region: 'us-east-2',
    credentials: {accessKey: 'MY-ACCESS-KEY', secretKey: 'MY-SECRET-KEY',},
    params: {Bucket: 'rn-mobile-app-bucket'}
  });

  async function downloadFromS3 () {
    const file = await s3.getObject({ Bucket: 'rn-mobile-app-bucket', Key: 'Uploaded Photos/ColePic' }).promise();
    console.log(file);
    return {
     data: file.Body,
     mimetype: file.ContentType
    }
   }

然后我在 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));
  }, []);

您可以忽略该 fetch 方法,它工作正常且几乎不相关,但我不想省略代码。

我在这里遗漏了什么或者我做错了什么?

【问题讨论】:

    标签: amazon-web-services react-native amazon-s3 expo


    【解决方案1】:

    您不应该那样使用 aws,如果这样可以正常工作并且应用程序在商店中,那么任何人都可以下载 apk,解压缩并获得对您 aws 帐户的完全访问权限。

    至于实际的实现:

    配置中缺少凭据,如果使用 AWS_CONFIG_FILE,请设置 AWS_SDK_LOAD_CONFIG=1

    显然基于库仅支持节点(或至少您正在使用的那部分功能)的错误消息。您不能在手机上使用 env 变量,即使您手动替换 process.env 中的该值,该库也会尝试使用 fs 包(来自节点标准库),这当然不适用于 react-native

    我不知道您为什么要这样做,要从 aws s3 安全地下载图像,您还需要:

    • 将其公开,然后使用 fetch 下载
    • 设置 http 服务器,从 aws 下载该图像并将其发送给用户,但要使这种方法有意义,您还需要登录/注册,因为没有任何身份验证,此选项相当于将其公开。

    【讨论】:

    • 嗯,这不是我想要或希望的,但感谢您提供这些信息。也许我应该重新考虑我的策略。我很感激!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 2019-04-24
    • 1970-01-01
    • 2017-08-31
    相关资源
    最近更新 更多