Не удается загрузить рогатку на S3
Пакет Slingshot используется с Meteor для загрузки изображений в S3 непосредственно с клиента. Тот же код, который я использовал в других проектах, утвержденных для работы. Даже прилокальной настройке я могу загружать изображения в облако, но не с развернутой версией, которая идентична. Ошибка заключается в следующем:
Failed to upload file to cloud storage [Bad Request - 400]
the region 'us-east-1' is wrong; expecting 'eu-central-1'
(но это не говорит, где...)
Есть идеи?
Это инициализация директивы Meteor Slingshot:
const s3Settings = Meteor.settings.private.S3settings;
Slingshot.createDirective("userProfileImages", Slingshot.S3Storage, {
AWSAccessKeyId: s3Settings.AWSAccessKeyId,
AWSSecretAccessKey: s3Settings.AWSSecretAccessKey,
bucket: s3Settings.AWSBucket,
region: s3Settings.AWSRegion,
acl: "public-read",
authorize: function () {
if (!this.userId) {
const message = "Please login before posting images";
throw new Meteor.Error("Login Required", message);
}
return true;
},
key: function (file) {
const user = Meteor.users.findOne(this.userId);
return user.username + "/" + file.name;
}
});
Это моя конфигурация Amazon S3 CORS:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<MaxAgeSeconds>10000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
У меня нет политики ведра. Контроль доступа все публично.
Помощь приветствуется.
1 ответ
Проблема была во мне. Я определил регион в моих настройках как AWSregion
(r
), тогда как я назвал это AWSRegion
(R
) в моем коде для настройки. Так что это было неопределенным и не сработало.
Решение состоит в том, чтобы убедиться, что дела напечатаны правильно.