【问题标题】:slingshot meteor s3 error弹弓流星s3错误
【发布时间】:2018-08-24 03:42:15
【问题描述】:

恐怕我根本不明白这应该如何工作。 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 存储桶联系?就像我说的,我不太明白 slingshot 是如何找到水桶的。

【问题讨论】:

    标签: amazon-s3 meteor-slingshot


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-17
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多