1
/
5

森田ドラゴンのインターンシップ ~19日目~ SAMは苦手

こんにちは、高知からリモートインターンしている森田ドラゴンです。先日は大阪オフィスにお邪魔させていただきましたが、今日からはまた高知からインターンです。ちょっと寂しいので、meetのurlを貼りながらインターンしようかなと思います。ふらっと見に来てくれた人に、気になっていることを聞けたら勉強も捗りそうです。今回の課題は

・前回作成したLambda -> SQS -> js という仕組みをリファクタリング
・AWS SAMとcliを用いてdeployする

の2つになります。コンソールで操作することに慣れてしまっているので、割と苦手な課題です。

リファクタリング

リファクタリングといってもそれほど複雑なものではなく、不要な関数やパラメータを削除し、エラーが起きた際の処理文を書くぐらいです。

Lambdaは使用していなかった、boto3.resource('s3') 等を削除し、コードの説明を書き込みました。ほとんどのコードは、ドキュメントからそのまま持って来ているので、書き直す部分は少なくすみました。

jsの方は try catchでエラー処理をしたかったのですが、すでにif文でエラー時の分岐をしてしまっていたので、そのままif文で分岐させました。

他にもアロー関数や 変数宣言としてconstを使う、という記事を見かけましたが、どういった効果があるのかまではわからなかったので、今回は記述しませんでした。本当は一度、アロー関数に書き直したんですが「ダウンロードした音声が再生されない」というエラーが発生した際に、ロールバックしてしまったため、現在のファイルには反映されていません。

ちなみに「ダウンロードした音声が再生されない」というエラーの原因は、iTuensが誤作動を起こしていただけでした。Lambdaとjsを修正した後に起きたエラーだったので、修正した箇所を一つずつ確認し直す必要があり、かなり面倒でした。労力を割くようなタスクでもないと判断して、テストした項目を書かなかったことが裏目にでたような気がします。まあ、書いてあったとしてもiTuensのエラーだとは思わなかったと思いますけど。

SAM が苦手

次はSAMを使ってdeployするパートです。SAMの目的はどこで実行しても、同じ結果が得られるコードを書くことなので、今のURLベタ書きのjsコードでは問題があります。色々考えましたが、答えが出なかったので、とりあえずSAMでデプロイすることにしました。( SQSのURIをjsから取得する必要があるので、そこだけ悩んでいます )

とりあえずdeployすると言っても、SAMはインデントがずれただけでエラーが起きますし、パラメータも多いので苦戦しています。

Lambdaをdeploy
LambdaとS3をdeploy
LambdaとS3とSQSをdeploy
    ・
    ・
    ・

のように進めていきましたが、牛の歩みで全然進みませんでした。ただ、SAMとSAMのドキュメントの読み方を理解することができました。最初から 公式ドキュメント を読んで、チュートリアルを読んで、まる移ししながら進めれば良かった気がします。ドキュメントを読みながら「多分これは必要だろう」とあたりをつけて進めると、どこが何故エラーか特定しづらいので、まずは確実に動かせるコードを書くことが大切だと思います。というか、前回書いたコードも見れば良かったです。

感想

SAMがcloud formationの拡張であるということや( 単純ですが知りませんでした )、ドキュメントの読み方もわかったので、次は爆速で書けます。とイキっておきます。今までやった課題を忘れてしまっているところもあるので、なるほど!って思ったところだけでも、まとめておくと今後の進みが早くなりそうです。SAMで止まってるとからかわれそうなので、早めに終わらしてドヤ顔したいところです。ではまた。

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