ようへいの日々精進XP

よかろうもん

2018 年 04 月 30 日(月)

ジョギング

  • 香椎浜 x 2 周
  • なぜか両足全体が筋肉痛

日課

  • (腕立て x 50 + 腹筋 x 30) x 3

夕飯

  • 奥さんが作った新玉ねぎのスープ, 焼いたベーコンを入れるとコクが出てとても美味しかった
  • 自分がトメイトパスタを作る

今日のるびぃ ~ AWS SDK for Ruby に issue を出した件 ~

経緯

同僚の O さんから, awspec の s3_bucket リソースで lifecycle_configuration をテストする際に, lifecycle_configuration 定義の tag を指定した際に awspec 自体が落ちる (厳密には NotImplementedError 例外となる)という指摘を頂いたので調査していたら, そもそも SDK で tag を想定した実装になっていないんじゃいか疑惑が出てきたというもの.

github.com

確かに, 以下のようなシンプルなコードでも例外が起きてしまっていた.

require 'pp'
require 'aws-sdk-s3'

s3 = Aws::S3::Client.new(
  region: 'ap-northeast-1',
  profile: 'my-profile'
)

bcl = s3.get_bucket_lifecycle_configuration(bucket: ARGV[0])
pp bcl

実行すると...

Traceback (most recent call last):
        32: from s3_test.rb:9:in `<main>'
        31: from /Users/OreOre/s3_check/vendor/bundle/ruby/2.5.0/gems/aws-sdk-s3-1.9.1/lib/aws-sdk-s3/client.rb:1834:in `get_bucket_lifecycle_configuration'
...
         3: from /Users/OreOre/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rexml/parsers/streamparser.rb:34:in `parse'
         2: from /Users/OreOre/s3_check/vendor/bundle/ruby/2.5.0/gems/aws-sdk-core-3.19.0/lib/aws-sdk-core/xml/parser/engines/rexml.rb:27:in `tag_start'
         1: from /Users/OreOre/s3_check/vendor/bundle/ruby/2.5.0/gems/aws-sdk-core-3.19.0/lib/aws-sdk-core/xml/parser/stack.rb:18:in `start_element'
/Users/OreOre/s3_check/vendor/bundle/ruby/2.5.0/gems/aws-sdk-core-3.19.0/lib/aws-sdk-core/xml/parser/frame.rb:150:in `child_frame': NotImplementedError (NotImplementedError)

ウギャー.

issue

ということで, 以下のような issue を投げてみたら, やはりバグだったというオチ.

github.com

英語自体は過去の issue を参考にして切り貼りして体裁を整えることが出来たwww ので, 意図はちゃんと伝わったと思われる.

どんなバグだったのか

修正して頂いて, 作成されたプルリクエストを自分なりに見てみたけど...

github.com

ざっくりとした原因は「AWSAPI レスポンス (XML) を解析するパーサーに問題があった」ようだ...変更されたファイルを眺めてみたけど, 変更されたファイルだけ見ても何をやっているのか全く解らず...なので, 時間があったら Aws::Xml::Parser::Frame を読んでみたいと思う.

ツライ.

そもそもだけど, AWSAPI レスポンスは XML なんだなーと今更ながらに思ったりした.

docs.aws.amazon.com

フムフム.