Так что я изо всех сил пытаюсь получить изображения из корзины s3, чтобы показать клиентскую сторону в метеорном приложении. Я использую пакет узла aws-sdk. Я получаю объекты в своей консоли на стороне сервера, и если я изменяю свою политику корзины на общедоступную, это также работает. Тот факт, что объекты отображаются в консоли при запуске, но не отображаются на стороне клиента, заставляет меня думать, что это проблема с метеором. У меня просто возникают проблемы с поиском хорошей документации по этому вопросу.
server.js
Meteor.startup(() => {
AWS.config.update({
accessKeyId: Meteor.settings.AWS.S3.accessId,
secretAccessKey: Meteor.settings.AWS.S3.secret
});
s3 = new AWS.S3({
region: "<my-region>"
});
var params = {
Bucket: "<my-bucket-name>"
};
s3.listObjects(
params,
Meteor.bindEnvironment(function(err, data) {
if (err) throw err;
console.log(data);
})
);
})
Вот моя политика сегмента (когда я устанавливаю ресурс *, он работает, но я хочу, чтобы ресурс был настроен на конкретную учетную запись IAM):
{
"Version": "2008-10-17",
"Id": "Policy-some-number",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<current-iam-account-in>"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<bucket-name>/*"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<current-iam-account-in>"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::<bucket-name>/*"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<current-iam-account-in>"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::<bucket-name>"
}
]
}