« MOLESKINE モレスキン プレーンノートブック・無地・ポケット を新調 | トップページ | 息子の六歳の誕生日をポケモンセンタートウキョーで満喫する »

2010.01.14

AmazonAPIを使ったRubyアプリでSecret Access Key対応してなかったのでその改修

AmazonAPIを使ったRubyアプリでSecret Access Key対応(2009/08/15にすでにAPI変更された)してなかったのでその改修。環境でちょとハマったので、履歴。

とりあえずRubyのAmazonAPIラッパであるruby-aawsを0.7.0にupdate。READMEを読んで、~/.amazonrcにSecret Access Key設定を入れるも、ruby-aaws-0.7.0/test配下のテスト(ts_aws.rb)でEEEEEってなって盛大にコケる。

まあまずは試しにとサンプルRequestをirbで作ってみるが、HTTP Response Error 400番で落ちる。クエリがちゃんと作れてないらしい。ruby-aaws-0.7.0を眺めてるとdprintfにいろいろ出しているようなので、irbやら%ruby -d test.rbとかでデバグメッセージを読むと

#<Amazon::AWS::Search::Request:0x88caf5c
@encoding=nil,
@tag="XXXXXXXXX-22",
@config={"secret_key_id"=>"XXXXXXXXXX", "cache"=>"false", "key_id"=>"XXXXXXXXXX", "locale"=>"jp", "associate"=>"XXXXXXXXXX-22"},
@api=nil,
@key_id="XXXXXXXXXX"
@conn=nil,
@cache=nil,
@locale="jp",
@user_agent="Ruby/Amazon/AWS 0.7.0"

設定ファイルはちゃんと読めているようだがSHA256利用の判別で落ちている。

require 'openssl'
    DIGEST_SUPPORT = OpenSSL::Digest.constants.include?( 'SHA256' ) ||   OpenSSL::Digest.constants.include?( :SHA256 )

このへん。Rubyのリファレンスを確認。

ruby 1.8.3 feature: システムにインストールされている openssl が 0.9.8 以降ならば以下のアルゴリズムも利用できます。
OpenSSL::Digest::SHA256

はて…たしか、その要件は満たしている気がするのだが…と思って確認。

% ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-freebsd6.1]

→Good

% openssl
OpenSSL> version
OpenSSL 0.9.8e 23 Feb 2007

→Good

% irb
irb(main):001:0> require 'openssl'
=> true
irb(main):002:0> OpenSSL::Digest
=> OpenSSL::Digest
irb(main):003:0> OpenSSL::Digest::SHA256
NameError: uninitialized constant OpenSSL::Digest::SHA256
from (irb):3

→Bad

openssl自体は呼べるようだが、SHA256が定義されていない模様。

irb(main):004:0> require 'openssl/digest'
=> false

OpenSSL::Digest::SHA は?

irb(main):005:0> OpenSSL::Digest::SHA
=> OpenSSL::Digest::SHA

SHA224 SHA256 SHA384 SHA512 がない。openssl が 0.9.8 以降とrubyにみなされてないっぽい。最近さくらのOSがリファインされて今のOpenSSLのバージョンになったのかもというわけでrubyの同じバージョン1.8.7の最新パッチレベルを再インストール。

http://www.ruby-lang.org/ja/news/2009/12/25/ruby-1-8-7-p248-/
$ cd ~/local/src
$ curl -O ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p248.tar.gz
$ tar xvfz ruby-1.8.7-p248.tar.gz
$ cd ruby-1.8.7-p248
$ ./configure --prefix=$HOME/local
$ make && make install-all

ついでに、Rubyにiconv,readlineも念のため組み込みして概ね動いた。

■iconv-ruby
$ cd ext/iconv
$ ruby extconf.rb --with-iconv-dir=/usr/local
$ make && make install

■readline-ruby

$ cd ../readline
$ ruby extconf.rb
$ make && make install


« MOLESKINE モレスキン プレーンノートブック・無地・ポケット を新調 | トップページ | 息子の六歳の誕生日をポケモンセンタートウキョーで満喫する »

パソコン・インターネット」カテゴリの記事

記録」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« MOLESKINE モレスキン プレーンノートブック・無地・ポケット を新調 | トップページ | 息子の六歳の誕生日をポケモンセンタートウキョーで満喫する »

twitter

サイト内検索
ココログ最強検索 by 暴想

最近のトラックバック

2013年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
無料ブログはココログ

このブログの注目記事

friends

tools







  • blog seo tool : track word
    blog SEO tool


  • RSS feed meter for http://yokoyamen.cocolog-nifty.com/boku/

なかのひと

あわせてよみたい

  • あわせて読みたい
フォト

みんぽす