LINE bot作成チュートリアルをやってみたPart4

前回LINE bot作成チュートリアルをやってみたPart3~開発編~の続き

f:id:hedgehogweeklyreport:20190211160855j:plain

最終的にコケてたので問題の切り分けをしていく

まあ、Controllerに書いたコードなんだろうなとは思う

なのでオリジナル要素を排除して元々のチュートリアルコードをコピペしてデプロイしてみようと思う。

これで駄目だったら別の問題でコケているとなる

チュートリアル版でデプロイ

environment.rbの追記

※前回実施した際に別件エラーが出力されていて、キャプチャ取り忘れていたので追記

Amazon::Ecs.options = {
  associate_tag: ENV['ASSOCIATE_TAG'],
  AWS_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
  AWS_secret_key: ENV['AWS_SECRET_KEY']
}

これを設定しないと、AWSのアキセスキーを寄越せと怒られます

既存のcontroller.rbをコピーして 控えておいてチュートリアル版に書き換えてgitとherokuにpushする

gitとherokuにcontrollerファイル更新をpush

git add controller.rb
git commit -m "Tutorial"
git push origin master
git push heroku master

herokuサーバに無事pushされたかを確認

heroku run bash

上記コマンドによりbash形式でherokuにデプロイした中身を確認する事ができる ※exitで終了

f:id:hedgehogweeklyreport:20190211145904p:plain

herokuのログを確認しながら動作確認

heroku logs -t
コマンド/オプション 概要
heroku logs herokuのログを確認する
-tで更新があったら出力

f:id:hedgehogweeklyreport:20190211150805p:plain

そしてエラる…

因みにREST リクエストの構造

http://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService&Operation=ItemSearch& AWSAccessKeyId=[アクセスキー ID]&AssociateTag=[ID]&SearchIndex=Apparel& Keywords=Shirt

見るも無残なLINEの結果画面…反応が返ってこない!

f:id:hedgehogweeklyreport:20190211150535p:plain:w350

logのエラーを引っ張る

< Error>< Code>RequestThrottled< / Code>< Message>AWS Access Key ID: <アクセスキー>. You are submitting requests too quickly. Please retry your requests at a slower rate.

You are submitting requests too quickly. Please retry your requests at a slower rate.が明らかに怪しいので調べる

参考
AmazonのProduct Advertising APIで503エラーになる件

Amazonで商品情報や検索結果を返してくれるProduct Advertising APIについてですが、なぜか503エラーが10%位の確率で発生します。 初期状態で1秒1回まで、1時間に2000回の制限までとのことですが、これを守っても、それどころか数時間空けても503エラーが一定確率で出てきます。

これだよなあと思いつつ、制限が掛かるほどリクエスト送る処理じゃなくてもなるものなのかと頭を悩ます。

回避方法が載っていたので試すも状況は変わらず…

現状で分かるのは、

  • LINE経由でリクエストは送れている
  • しかし、AmazonAPIの部分でエラーが発生して処理が止まっている
  • 処理が止まっている為レスポンスが返ってこない
  • エラーの内容はリクエスト数制限に引っ掛かっている為
  • controller.rb単体の問題ではなさそう

何故引っかかるのか不明だけどリクエスト制限なので一端時間を置いてみるのもありかもしれないので少し塩漬ける 悔しみ…