当前位置: 首页 > 知识库问答 >
问题:

AWS S3:我们计算的请求签名与您提供的签名不匹配

满和安
2023-03-14

我正试图上传一张使用AWS S3 SDK的图片。现在,这以前是有效的,但由于某种原因,它停止了工作,我开始得到这个错误:

现在,当我点击链接时,它会给我一个'NoSuchKey'错误:

我真的不明白这一点,因为我的键实际上只是一个字符串。我也试图上传一些东西,所以显然关键不会存在-我正在努力上传它!

function initiateBucket() {
        var albumBucketName = 'bucket_name';
        var bucketRegion = 'us-east-1';
        var IdentityPoolId = 'identity_pool_id';

        AWS.config.update({
            region: bucketRegion,
            credentials: new AWS.CognitoIdentityCredentials({
                IdentityPoolId: IdentityPoolId
            })
        });

        return new AWS.S3({
            apiVersion: '2006-03-01',
            params: {Bucket: albumBucketName}
        });

function upload(file, key, metaData) {
    var temp = 'test';
    var temp1 = "test";
    if(verifyMetaData(metaData)) {
        var s3 = vm.initiateBucket();
        console.log(s3);
        s3.upload({
            Key: temp,
            Body: temp1,
            ACL: 'public-read',
            Metadata: metaData
        }, function(err, data) {
            if (err) {
                console.log(err.message);
                return false;
            }
            else {
                console.log("Successfully Uploaded to S3");
                return true;
            }
        });
    }
    else {
        console.log("Invalid MetaData");
        console.log(metaData);
        return false;
    }
};

另一个教程来自一个博客,我没有它的链接,但我上面的代码与文档中的这个教程相同。我所做的只是把它移到一个函数中(正在被调用),而在教程中,他们把它作为一个全局变量

因为它在教程中有效,所以不可能是配置问题。我想这一定与403错误和“nosuchkey”错误有关。但同样,代码与教程中的代码相同,我只是传递字符串,所以这也没有意义。

我注意到的另一件事是403错误的链接有点奇怪。它以“https://mng-monet.s3.amazonaws.com/test”开头

共有1个答案

傅啸
2023-03-14

原来是元数据搞砸了一切。我花了两天时间才发现元数据后面的额外空间会抛出这个错误。根本不是有用的错误消息。

 类似资料: