Linux上でAWS SDK for Rubyを使って開発したRubyスクリプトをWindowsで動かそうとしたところ、SSL_connectのエラーが出てハマったので、対応メモです。
例えばこんな感じのスクリプトを実行します。
require 'aws-sdk-core' cred = Aws::SharedCredentials.new client = Aws::EC2::Client.new(credentials:cred, region:'ap-northeast-1') client.describe_instances
そうすると以下のようなエラーがでました。
Seahorse::Client::NetworkingError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate v ify failedfrom C:/Ruby22/lib/ruby/2.2.0/net/http.rb:923:in `connect'
色々調べたところ、Windows版のRubyにバンドルされている証明書に問題があるとのことです。そんな時のためにAWSのSDKには証明書がバンドルされているようです。使い方は以下の通り。
Aws.use_bundled_cert!
具体的に先ほどのスクリプトに組み込むとすると以下のようになります。
require 'aws-sdk-core' cred = Aws::SharedCredentials.new Aws.use_bundled_cert! client = Aws::EC2::Client.new(credentials:cred, region:'ap-northeast-1') client.describe_instances