在Rails 4.2.1中为s3存储桶提供资源

时间:2015-05-12 12:53:47

标签: css ruby-on-rails ruby amazon-s3

我只是想知道配置设置是否完全改变(自Rails 4以来)关于设置asset_sync和从s3存储桶提供我的资产。

我似乎无法提供我的css或js资产(虽然图片,jpg,png)都可以。我可以将所有内容上传到我的s3桶中。

在我投入生产之前,我试图在开发环境中使用它。

因此我的asset_sync.rb初始化程序设置如此

if defined?(AssetSync)
  AssetSync.configure do |config|
    config.fog_provider = 'AWS'
    config.aws_access_key_id = ENV['AWS_ACCESS_KEY_ID']
    config.aws_secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
    config.fog_directory = ENV['FOG_DIRECTORY']
    config.existing_remote_files = "delete"
    config.gzip_compression = true
    config.manifest = true
    config.custom_headers = { '.*' => { cache_control: 'max-age=315576000', expires: 1.year.from_now.httpdate } }
  end
end

所以我知道这部分是可以的,因为资产被上传到存储桶,但是当我尝试渲染我的页面时,没有显示css / js或图像。我在我的development.rb

中设置了这个
config.action_controller.asset_host = "https://#{ENV['FOG_DIRECTORY']}.s3.amazonaws.com"

我现在回过头来看每个资产都是403被禁止的错误。

这是我的IAM政策,也许有人可以在这里找到一些不正确的东西?

{
 "Version": "2012-10-17",
  "Statement": [
     {
        "Action": [
            "s3:ListAllMyBuckets",
            "s3:GetObject"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:s3:::*"
    },
    {
        "Action": "s3:*",
        "Effect": "Allow",
        "Resource": "arn:aws:s3:::mybucket"
    },
    {
        "Action": "s3:*",
        "Effect": "Allow",
        "Resource": "arn:aws:s3:::mybucket/*"
    }
 ]
}

我还添加了一个存储桶策略

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::mybucket/*"]
    }
  ]
}

我正在寻找的是有人展示他们如何使用asset_sync设置他们的Rails应用程序,请查看我是否遗漏了任何内容。

0 个答案:

没有答案