Javascript 使用AWS sdk react native的实例差异AWS bucket
我在S3中有两个不同的Bucket(分别是ACCESS_KEY和SECRET_ACCESS_KEY,所以我需要在同一个函数中对它们进行实例验证。目前我有一个函数来实例当前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
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
})
: ''
}