Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用AWS sdk react native的实例差异AWS bucket_Javascript_Amazon Web Services_React Native_Amazon S3 - Fatal编程技术网

Javascript 使用AWS sdk react native的实例差异AWS bucket

Javascript 使用AWS sdk react native的实例差异AWS bucket,javascript,amazon-web-services,react-native,amazon-s3,Javascript,Amazon Web Services,React Native,Amazon S3,我在S3中有两个不同的Bucket(分别是ACCESS_KEY和SECRET_ACCESS_KEY,所以我需要在同一个函数中对它们进行实例验证。目前我有一个函数来实例当前Bucket(取决于环境),如下所示 import S3 from "aws-sdk/clients/s3"; import { S3_BUCKET, S3_SECRET_ACCESS_KEY, S3_ACCESS_KEY } from 'react-native-dotenv' const getSignedURL = k

我在S3中有两个不同的Bucket(分别是ACCESS_KEY和SECRET_ACCESS_KEY,所以我需要在同一个函数中对它们进行实例验证。目前我有一个函数来实例当前Bucket(取决于环境),如下所示

import S3 from "aws-sdk/clients/s3";
import { S3_BUCKET, S3_SECRET_ACCESS_KEY, S3_ACCESS_KEY } from 'react-native-dotenv' 

const getSignedURL = key => {
    s3I = new AWS.S3({
        accessKeyId: S3_ACCESS_KEY,
        secretAccessKey: S3_SECRET_ACCESS_KEY,
        Bucket: S3_BUCKET
    })
    return key !== undefined && key !== '' && key !== null
        ? s3I.getSignedUrl('getObject', {
            Bucket: S3_BUCKET,
            Key: key
        })
        : ''
}

export default {
  getSignedURL
};

并且工作得很好,但只检索当前存储桶(即开发)的图像

我怎样才能同时举出这两个例子呢

谢谢

发布数据 我尝试在S3对象中使用或,但没有成功(仅检索到第一个):

发布数据2 我也尝试过以下方法,但没有成功:

const getSignedURL = key => {
    s3IProd = new AWS.S3({
        accessKeyId: S3_ACCESS_KEY_PROD,
        secretAccessKey: S3_SECRET_ACCESS_KEY_PROD,
        Bucket: S3_BUCKET_PROD
    })
    s3IDev = new AWS.S3({
      accessKeyId: S3_ACCESS_KEY_DEV,
      secretAccessKey: S3_SECRET_ACCESS_KEY_DEV,
      Bucket: S3_BUCKET_DEV
  })
    return key !== undefined && key !== '' && key !== null
        ? s3IProd.getSignedUrl('getObject', {
            Bucket: S3_BUCKET_PROD,
            Key: key
        }) && s3IDev.getSignedUrl('getObject', {
          Bucket: S3_BUCKET_DEV,
          Key: key
        })
        : ''
}

对于这两种环境,您可能有两个单独的函数。例如
getSignedURLDev()
getSignedProd()
。理想情况下,您只需为正在使用的特定环境传递密钥即可。env。由于这是react native,因此您可能需要使用
babel plugin transform inline environment variables
包来实现此目的。

两种环境可能都有两个单独的函数。例如
getSignedURLDev()
getSignedProd()
。理想情况下,您应该只需要为正在使用的特定环境传递密钥。
process.env
。由于这是react native,您可能需要使用
babel插件转换内联环境变量包来实现这一点。

我也尝试过,但没有成功。例如:当我定义对象时取消函数,只检索第一个
照片:getSignedURLDev(photoKey)| getSignedURLProd(photoKey)
。但是,如果照片在第二个存储桶中,则不会显示。我也尝试过,但没有起作用。例如:当我定义一个实例化函数的对象时,只检索第一个
照片:getSignedURLDev(photoKey)| | getSignedURLProd(photoKey)
。但是,如果照片在第二个存储桶中,则不会显示。
const getSignedURL = key => {
    s3IProd = new AWS.S3({
        accessKeyId: S3_ACCESS_KEY_PROD,
        secretAccessKey: S3_SECRET_ACCESS_KEY_PROD,
        Bucket: S3_BUCKET_PROD
    })
    s3IDev = new AWS.S3({
      accessKeyId: S3_ACCESS_KEY_DEV,
      secretAccessKey: S3_SECRET_ACCESS_KEY_DEV,
      Bucket: S3_BUCKET_DEV
  })
    return key !== undefined && key !== '' && key !== null
        ? s3IProd.getSignedUrl('getObject', {
            Bucket: S3_BUCKET_PROD,
            Key: key
        }) && s3IDev.getSignedUrl('getObject', {
          Bucket: S3_BUCKET_DEV,
          Key: key
        })
        : ''
}