Ruby APIを使用してバケットをウェブサイトとして設定することは可能です。私は解決策を見つけましたが、これはaws-sdk
の宝石ではなくaws-s3
の宝石を使用しています。
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)
EDITあなたも、これを達成するためにfog
宝石を使用することができ:私はponyhost 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
これは理想的ではありませんが、残念なことにhttpレベルに落とされることなく、rightscaleまたはaws ruby SDKがこれをサポートしているようです。 – davidjnelson
私は 'aws-sdk'でこの機能を追加することができると思います。私はまだそれを完了するための時間がなかったが、[この要点](http://gist.github.com/3712325)を見てください。 's3.client.set_bucket_website'で認証エラーが発生します。 – hjblok
hjblok - 素晴らしい考え! appfog ruby sdkを使って完全に解決しました!ありがとうございました!! – davidjnelson