みんな待ってた「amazon-ecs + 署名認証」
railsでamazon-ecsを使ってamazon APIを使用している方は多いと思います。もちろん私もその一人。
すでにamazonからのメールでご存知かと思いますが、2009年8月15日までにリクエストに電子署名を含めないと一切のリクエストが無視されてしまいます。
署名認証に対応したruby-aawsはruby1.8.7以上のバージョンでないと動作しないし、そもそもruby-aaws用に作り直すのが手間だな〜と考えていました。
そんな中、amazon-ecsを改良して署名認証を含めてしまう改造を行っている方を発見。
これぞ私が探していたものです!
ということで、私が趣味でやってるサービスに組み込んでみました。
インストール
sudo gem uninstall amazon-ecs gem source -a http://gems.github.com sudo gem install willnet-amazon-ecs
設定
/config/environment.rbに追記します。
require 'amazon/ecs' Amazon::Ecs.options = { :aWS_access_key_id => "XXXXXXXXXXXXXXXXXXXX", :associate_tag => "xxxx-22", :country => :jp, :secret_access_key => "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" #ここにアクセスキーを追記 }
自分のAccessKeyとSecretAccessKeyはここでチェックできます。
https://aws-portal.amazon.com/gp/aws/developer/account/index.html?ie=UTF8&action=access-key
確認
リクエストURLにSignatureが追加されているか確認してみましょう。
Amazon::Ecsを使用している箇所でデバッグモードをOnにします。
Amazon::Ecs.debug = true
これでrailsのlogにリクエストが保存されるはずです。
「Request URL:」で検索してみましょう。
こんな感じでSignatureがついていればOKです。
Request URL: http://webservices.amazon.co.jp/onca/xml?AWSAccessKeyId=X XXXXXXXXXXXXXXXXXXX&AssociateTag=xxxx-22&BrowseNode=13321821&Keywords= %E7%8B%BC%E3%81%A8%E9%A6%99%E8%BE%9B%E6%96%99&Operation=ItemSearch&Res ponseGroup=Medium&SearchIndex=Toys&Service=AWSECommerceService&Timestamp= 2009-07-19T07%3A14%3A35Z&Version=2009-01-06& Signature=2xNUNBRLOw5raOJIAiYfBv3kN1umzY6qD9Ub%2B0x4XBM%3D
結論
id:willnetさんのおかげですごく簡単に署名認証を付けることができました。
ありがとうございました!
追記
×著名認証
○署名認証
お恥ずかしい限りです。