预签名putObject返回SignatureDoesNotMatch错误-Node.js AWS开发工具包S3

时间:2019-09-27 22:13:23

标签: node.js amazon-web-services amazon-s3

我正在使用NodeJS AWS开发工具包生成预签名的S3网址。这是我的代码:

const s3 = new AWS.S3({accessKeyId: process.env.S3_ACCESS_KEY, secretAccessKey: process.env.S3_SECRET_KEY, region: process.env.S3_REGION});

const params = {Bucket: process.env.S3_BUCKET, Key: myKey, Expires: signedUrlExpireSeconds};

s3.getSignedUrl('putObject', params, (err, url) =>{
   console.log(url);
});

当我使用浏览器访问URL时,会显示此错误

  

我们计算出的请求签名与您的签名不匹配   提供。检查您的密钥和签名方法。

当我使用getObject而不是putObject时,没有错误,这意味着没有错误,这意味着问题不是凭据中的错字,我迷失了问题所在。这是我的水桶政策

{
    "Version": "2012-10-17",
    "Id": "Policy1569445631515",
    "Statement": [
        {
            "Sid": "Stmt1569445628329",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::206282324005:user/<user-name>"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::<bucket-name>/*"
        }
    ]
}

0 个答案:

没有答案