LINE bot作成チュートリアルをやってみたPart4
前回LINE bot作成チュートリアルをやってみたPart3~開発編~の続き
最終的にコケてたので問題の切り分けをしていく
まあ、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で終了
herokuのログを確認しながら動作確認
heroku logs -t
コマンド/オプション | 概要 |
---|---|
heroku logs | herokuのログを確認する -tで更新があったら出力 |
そしてエラる…
http://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService&Operation=ItemSearch& AWSAccessKeyId=[アクセスキー ID]&AssociateTag=[ID]&SearchIndex=Apparel& Keywords=Shirt
見るも無残なLINEの結果画面…反応が返ってこない!
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単体の問題ではなさそう
何故引っかかるのか不明だけどリクエスト制限なので一端時間を置いてみるのもありかもしれないので少し塩漬ける 悔しみ…