1
/
5

森田ドラゴンのインターンシップ 8日目 試しながら進める課題

 こんにちは、高知からリモートでインターンしている森田ドラゴンです。前半は色々と理解が深まって満足だったんですが、後半はAWS SAMと戦っていたせいで、終わりませんでした。今日中に終わってIoT課題に取り組めると思っていたぶん悔しかったです。次までにこっそり進めて終わらせておきます。前回に引き続き、API Gateway->Lambda->DynamoDB のシステム構築をするところから始まりました。

API Gatwayは試しながら

 最初の段階では詰まりました。というのも、API Gatewayの項目がどのように関連しあっているのか謎だったからです。なので、そもそもパスパラメータが送れているのか、いないのか。その確認方法はどうするのか。pythonで受け取るeventには何が入ってるのか?様々な疑問を解消するところから始めました。

 マッピングテンプレートと、 メソッドリクエストを追加すれば、パスパラメータは取得できるみたいです。終わってみれば、初期値から編集する値は驚くほど少なく、簡単な内容だったことに気づきました。そのわりに時間がかかってしまったのは、LambdaとAPI gatewayを交互にみながら作業していたせいだと思います。問題を整理して、一つ一つ進めるのが大事ですね。

DynamoDBからデータの取得

boto3というものをimportして、チュートリアルから抜き出して書けば完了しました。その過程でエラーがいくつか出たので箇条書きします。

・AccessDeniedExceptionのエラー

DynamoDBを動かすのに権限が必要Lambdaに新しいを付与しようとしましたが、結局もともと付与してあったロールにDBを動かす権限を付与して解決しました。

・get_itemしようとしたらエラー

get_item(~~)しようとしたらエラーが、ログをみてみると
The provided key element does not match the schema"
primary_keyが合ってないのか? と思ってテーブルを見るとデータはしっかり来ている。よく見るとkeyの値が ""(ダブルクォーテーション)でくくってありました。元のDynamoDBのテーブルに合わせて、型は数値型でなければいけないので、int型にcastして解決しました。

AWS SAMの書き方が難しい

 AWS SAMは細かいエラーが多くて大変でした。自分の中で試さなくてはいけないことが多すぎて、エラーが増えてしまった気がします。前回触った時にはなかった"<unicode string>" ~~ というエラーもありました。どこでunicodeが混ざったのか、謎でした。
凡ミスの話をすれば、

Type: AWS:: ~~
Properties:
~~~

と書くところを順番が逆に書いていたり、Propertiesを字下げしたりしていて、エラーが起きてました。

他にも、deployする段階で

Failed to create/update the stack. Run the following command
to fetch the list of events leading up to the failure

と言われ、(実行してもどこが原因かわからなかったです。CloudFormationのエラーの見方も勉強したい )
解消されたと思ったら

str has no object (str は objectじゃないよー)

というエラーが。いや、strなんて値どこにあるんですか・・・。

どこからエラーが出ているのか、検討もつかなくなったので、今は問題を整理して最初から確認しながら進めています。


SAMを触っている時のエラーの出方がひどかったです。勘を頼りに作業を進めるのも、そろそろ限界が来ているのかもしれません。そもそも勘に頼るのが間違いなんですけどね。早くIoTの方も触りたいので、この課題は自分のアカウントでもやってみます。

それではまた来週、よろしくお願いします。

株式会社サーバーワークスでは一緒に働く仲間を募集しています
1 いいね!
1 いいね!
同じタグの記事
今週のランキング
株式会社サーバーワークスからお誘い
この話題に共感したら、メンバーと話してみませんか?