弹弓流星s3错误

时间:2018-08-23 00:31:05

标签: amazon-s3 meteor-slingshot

恐怕我根本不明白该怎么做。弹弓如何知道找到我的s3存储桶的地址?这完全取决于访问键吗?

这是我在server / files.js中的代码:

var imageDetails = new Mongo.Collection('images');

Slingshot.fileRestrictions("myImageUploads", {
  allowedFileTypes: ["image/png", "image/jpeg", "image/gif"],
  maxSize: 2 * 1024 * 1024,
});


Slingshot.createDirective("myImageUploads", Slingshot.S3Storage, {
AWSAccessKeyId: "AWSAccessKeyId",
AWSSecretAccessKey: "AWSSecretAccessKey",
bucket: "mybucketname",
acl: "public-read",
region: "us-west-1",

authorize: function () {
  if (!this.userId) {
    var message = "Please login before posting images";
    throw new Meteor.Error("Login Required", message);
  }
  return true;
  },

  key: function (file) {
    var currentUserId = Meteor.user().emails[0].address;
    return currentUserId + "/" + file.name;
   }
    });

这是我的settings.json文件

{
  "AWSAccessKeyId" : "my access key",
  "AWSSecretAccessKey" : "my secret access key",
  "AWSBucket" : "mybucketname"

}

我在浏览器中收到此错误:

跨域请求被阻止:“同源起源”策略禁止读取https://mybucketname.s3-us-west-1.amazonaws.com/处的远程资源。 (原因:CORS标头“ Access-Control-Allow-Origin”缺失)。

但是我的portdata存储桶中有一个CORS配置。

我想第一步是要检查我的应用程序是否与我的s3存储桶建立联系吗?就像我说的那样,我不太了解弹弓如何找到水桶。

1 个答案:

答案 0 :(得分:1)

已解决 将“地区:us-west-1”更改为“地区:us-west-2”,它可以正常工作。 也不需要AWSAccessKeyId和AWSSecretAccessKey,因为弹弓会从settings.json自动找到它。 显然,地址所需要的只是存储区名称和区域。 https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html