使用ruby SDK将S3 bucket设置为网站

我想将这个Amazon S3存储桶设置为一个网站,如下所述:

http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTwebsite.html?r=5271

但使用红宝石API,最好是红宝石的aws-sdk。 有没有可能做到这一点/一个库已经支持? 在aws-sdk和right-aws中找不到任何东西,但也许我只是瞎了?


可以使用ruby API将您的存储桶配置为网站。 我确实找到了解决方案,但是它使用aws-s3宝石,而不是aws-sdk宝石。 我在ponyhost gem中找到了这个解决方案:

body = '<?xml version="1.0" encoding="UTF-8"?>
<WebsiteConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <IndexDocument><Suffix>index.html</Suffix></IndexDocument>
  <ErrorDocument><Key>404.html</Key></ErrorDocument>
</WebsiteConfiguration>'

res = AWS::S3::Base.request(:put, "/#{bucketname}?website", {}, body)

编辑你也可以使用fog宝石来实现这一点。

storage = Fog::Storage.new({
  :provider   => 'AWS',
  :aws_access_key_id => 'YOUR_KEY',
  :aws_secret_access_key => 'YOUR_SECRET',
  :region => 'eu-west-1'
})

if storage.kind_of?(Fog::Storage::AWS::Real)
  storage.put_bucket_website("YOUR_BUCKET", "index.html", :key => "404.html")
end

适用于Ruby的AWS SDK的第一个版本的bucket对象具有#configure_website方法。 所以这样的事情会起作用:

s3 = AWS::S3.new
b = s3.buckets.create(name, acl: :public_read)
b.configure_website do |cfg|
  cfg.options[:index_document] = { suffix: 'index.html' }
end

(如果您不需要设置非默认选项,则可以省略configure_website的块)


@Aljoscha AWS S3只是一个存储解决方案,用于存储所有文件。 它不提供任何类型的运行时解决方案。 你需要一个Ec2实例来托管基于ruby的应用程序,或者使用ruby API。 您可以在S3上托管一个静态网站,但无法运行任何类型的应用程序。

链接地址: http://www.djcxy.com/p/59813.html

上一篇: Set up S3 bucket as website using ruby SDK

下一篇: How to get the nodes inner text in java script?