Я создаю заранее подписанный URL-адрес, используя метод aws -sdk nodejs / createPresignedPost. Все работает через плагин serverless-offline на моем локальном компьютере, потому что у моего личного ключа доступа есть все доступы. Но когда я развертываю его через бессерверную структуру, он выдает ошибку с HTTP 403, и ошибка в браузере читается следующим образом bucket.
Мой шлюз Api и лямбда-выражения, возвращающие подписанный URL-адрес, находятся в регионе us-east-1, а сегмент - в регионе ap-south-1.
Я Конечно, мне не хватает некоторых разрешений IAM, но я не могу понять, что это наш. Может ли кто-нибудь помочь мне здесь?
Вот моя функция, которая возвращает обещание о получении предварительно подписанного URL-адреса сообщения
function getSignedUploadUrl() {
const params = {
Expires: 600,
Bucket: process.env.AWS_S3_BUCKET_NAME,
Fields: {
key: s3FilePathKey,
acl: acl,
"content-type": contentType,
},
conditions: [
{ acl: acl },
{ "content-type": contentType },
["content-length-range", 1000000, 75000000],
],
};
return new Promise((resolve, reject) => {
const s3 = new S3({
region: AWS_REGION
});
s3.createPresignedPost(params, (err, data) => {
if (err) {
console.log(err);
reject({
message: "Something went wrong",
});
}
resolve(data);
});
});
}