我正在使用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>/*"
}
]
}