Я генерирую предварительно назначенные URL-адреса S3, используя NodeJS AWS SDK.Вот мой код:
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>/*"
}
]
}