Я столкнулся с проблемой, касающейся разрешений для моего блока, недавно созданного в AWS.
Я создал блок для AWS-S3, чтобы я мог сохранять изображения из своего приложения, загруженного пользователями. Время от времени я заходил и удалял изображения.
Проблема, с которой я сталкиваюсь, заключается в том, что Amazon рекомендует Блокировать все разрешения общего доступа для вашего хранилища, поэтому у меня возникает ошибка Доступ запрещен при попытке прочитать мои изображенияв моем приложении.
Я потратил почти 2 часа на их документацию, которая, как я признаю, немного смущает меня, и я был бы рад, если бы кто-то мог помочь мне решить проблему.
Я хочу сохранить хранилище частным и подписывать каждый запрос моего приложения секретным ключом и секретным идентификатором для предотвращения несанкционированного доступа. Ниже приведен код, который я имею, и я не знаю, что я делаю неправильно.
const awsSdk = require("aws-sdk");
const multerS3 = require("multer-s3-transform");
awsSdk.config.update({
secretAccessKey: config.AWS_SECRET_KEY,
accessKeyId: config.AWS_SECRET_ID,
region: config.AWS_REGION
});
const awsStorage = multer({
storage: multerS3({
s3: s3,
bucket: "bucketname",
acl: "public-read",
contentType: multerS3.AUTO_CONTENT_TYPE,
cacheControl: "max-age=31536000",
metadata: (req, file, cb) => {
cb(null, { fieldname: file.originalname });
},
key: (req, file, cb) => {
cb(null, new Date().toISOString() + "-" + file.originalname);
}
}),
fileFilter: (req, file, cb) => {
if (
file.mimetype === "image/jpg" ||
file.mimetype === "image/jpeg" ||
file.mimetype === "image/png"
) {
//adding the file to the body custom field
req.body.files = req.files[0].fieldname;
cb(null, true); // accept file
} else {
cb(null, false); //reject file
}
}
Политика Bucket - общедоступна (как сделать так, чтобы я мог петь со своим секретным ключом и идентификатором)
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucketname/*"
}
]
}
Спасибо за вашу помощь