【发布时间】:2020-08-31 15:16:48
【问题描述】:
我正在开发适用于 iOS 和 Android 的 react-native 移动应用程序。我正在尝试使用aws-sdk 访问AWS S3 存储桶以获取javascript
以下是我执行的步骤:
- 在我的
react-native代码上安装npm - 使用
import AWS from 'aws-sdk/dist/aws-sdk-react-native在我的javascript类上导入库 - 使用我的
accessKeyId和secretAccessKey初始化S3 - 尝试列出我的
S3文件夹中的存储桶。但是我收到以下错误:
{"message: The request signature we calculated does not match the signature you provided. Check your signing key and signing method, "code": "SignatureDoesNotMatch}
代码片段:
var awsCred = new AWS.Credentials({
accessKeyId: 'xxxxxxx',
secretAccessKey: 'xxxxxxxxxxxxxx',
});
const s3 = new AWS.S3({
region: 'my-region',
apiVersion: '2006-03-01',
signatureVersion: 'v4',
credentials: awsCred,
});
var bucketParams = {
Bucket: 'bucket_name',
};
s3.listObjects(bucketParams, function(err, data) {
if (err) {
Alert.alert('Error', JSON.stringify(err));
} else {
Alert.alert('Success', JSON.stringify(data));
}
});
任何想法将不胜感激!
【问题讨论】:
-
再次检查密钥对于给定的访问密钥是否正确。并确保这组凭据适用于 awscli (
aws s3 ls mybucket --region x)。 -
@jarmod:我确信
accessKeyId和secretAccessKey组合可以正常工作。我尝试使用其中一个 Chrome 扩展程序的凭据检索数据,并且能够毫无问题地访问存储桶。但问题仍然存在于我的react-native应用程序中
标签: amazon-web-services react-native amazon-s3 aws-sdk-js aws-sdk-nodejs