我想将 Amazon S3 存储桶设置为网站,如下所述:
http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTwebsite.html?r=5271
但使用 ruby API,最好是用于 ruby 的 aws-sdk。是否有可能做到这一点/一个已经支持它的库?在 aws-sdk 和 right-aws 中找不到任何东西,但也许我只是瞎了眼?
我想将 Amazon S3 存储桶设置为网站,如下所述:
http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTwebsite.html?r=5271
但使用 ruby API,最好是用于 ruby 的 aws-sdk。是否有可能做到这一点/一个已经支持它的库?在 aws-sdk 和 right-aws 中找不到任何东西,但也许我只是瞎了眼?
可以使用 ruby API 将您的存储桶配置为网站。我确实找到了解决方案,但这使用的是aws-s3
gem,而不是aws-sdk
gem。我在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
gem 来完成此操作。
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
AWS SDK for Ruby 版本一具有#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 上托管一个静态网站,但不能运行任何类型的应用程序。