2012-05-27 5 views
7

を使用して、ウェブサイトとしてS3バケットを設定します。は、私がここで説明するように、ウェブサイトなどのAmazon S3バケットを設定したいルビーSDK

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

が、RubyのAPIを使用して、ルビーのために好ましくはAWS-SDK 。 それを行う可能性はありますか、それを既にサポートしている図書館ですか? aws-sdkとright-awsで何も見つかりませんでしたが、おそらく私は盲目でしたか?

答えて

6

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 
+0

これは理想的ではありませんが、残念なことにhttpレベルに落とされることなく、rightscaleまたはaws ruby​​ SDKがこれをサポートしているようです。 – davidjnelson

+0

私は 'aws-sdk'でこの機能を追加することができると思います。私はまだそれを完了するための時間がなかったが、[この要点](http://gist.github.com/3712325)を見てください。 's3.client.set_bucket_website'で認証エラーが発生します。 – hjblok

+0

hjblok - 素晴らしい考え! appfog ruby​​ sdkを使って完全に解決しました!ありがとうございました!! – davidjnelson

-3

@Aljoscha AWS S3は、すべてのファイルを保存するための単なるストレージソリューションです。それは任意の種類の実行時の解決策を提供しません。あなたのRubyベースのアプリケーションをホストするためにはEc2インスタンスが必要です。あるいはRuby APIを使用する必要があります。あなたはS3上で静的なWebサイトをホストすることができますが、あらゆる種類のアプリを実行することはできません。

+0

は、残念ながら、あなたが質問を誤解しているように見えます。私は上記のAmazon APIを使用してバケットをウェブサイトに変えたいと思っています。私はバケットオブジェクトでこの操作をサポートするルビーライブラリを探しています。このコードは、「S3上で」実行する必要はないことは明らかです。ストレージソリューションだけであり、正しくリマークしたのと同じです。 – MoMolog

+0

Hey Jeevan、Alojschaはこのhttp要求と同等のものをruby sdkラッパーで作ろうとしています:http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTwebsite.html – davidjnelson

1

Ruby用AWS SDKのバージョン1には、バケットオブジェクトのメソッド#configure_websiteがあります。したがって、このようなものは動作します:

​​

(ブロックを省略することができるconfigure_websiteするデフォルト以外のオプションを設定する必要がない場合)

+0

残念ながら、このアプローチは現在のAPIではもう機能しません。 AWS :: S3は未定義です... Aws :: S3はモジュール –

+1

この回答は、まだサポートされているRuby AWS SDKのバージョン1用であり、依然として問題なく動作しています。あなたの 'Gemfile'に' gem 'aws-sdk-v1''または 'gem' aws-sdk '、'〜1.0''を使って入手するか、詳細についてはドキュメントを参照してください。 – Guss

関連する問題