こんにちは。高知からインターンしている森田ドラゴンです。
最近は、インターンの時間にしかaws を触っていないので、個人でも触って技術力を上げていきたいです。今日はAWS SAM について勉強していました。色々詰まる所はあるものの、ぼんやりとイメージが掴めた?ような気がします。
AWS SAM を触り始める
AWS サーバーレスアプリケーションモデル (AWS SAM) は、AWS でサーバーレスアプリケーションを構築するために使用することができるオープンソースフレームワークです。サーバーレスアプリケーションを定義するために使用する AWS SAM テンプレート仕様と、サーバーレスアプリケーションの構築、テスト、デプロイに使用する AWS SAM コマンドラインインターフェイス (AWS SAM CLI) で構成されています。
- AWS サーバーレスアプリケーションモデル (AWS SAM) の使用
サーバーレスアプリケーションの認識が、これで合っているかはわかりませんが、「サーバーの存在を感じずに構築できるアプリケーション」の事だと思っています。(違っていたら後でご指摘お願いします)
実際に手を動かして色々触ってみると、コンソールを叩いたり、コマンドを打ったりせずに、Lambdaをdeployできたのは面白かったです。仕組みを覚えたら色々な事ができそうで楽しみです。 他にも、ローカル環境で Lambda を実行する際に、Dockerを触りました。いまいちDockerの仕組みと凄さを実感できていないので、経験を積んでから勉強し直したいです。
CloudFormation再び
AWS SAMの課題をやる前に、「AWS SAM分かった?」と社員の森さんに訊かれたので、とりあえず調子に乗って「わかりました」と答えましたが、案の定分かってないです。ごめんなさい。
AWS SAMは アプリケーションdeployするのに必要なリソースを、CloudFormationで生成するのですが、
Transform: AWS::Serverless-2016-10-31
という設定が書き加えられているせいで、機能が拡張されて、どこが原因か調べるのに時間がかかってしまいました。その他にも、deployの手順として
sam package \
--template-file <設定ファイル> \
--s3-bucket <Lambdaなどを保存するbucket> \
--output-template-file <CloudFormationのデザインを出力するファイル>
このコマンドで アプリケーションをパッケージ?( 1つにまとめる ) にしてから、
sam deploy \
--template-file <先ほど出力されたファイル> \
--stack-name <スタックの名前>
CloudFormationでdeployする。という templateファイル から CloudFormationのファイルへの変換を挟んでいるため、どの記述方法で書けばいいのか混乱しました。AWSコンソールに移して書いてみても、有効じゃないというエラーしか出てこなかったので、ログがどこにあるのか探し当てなければ、無限大に時間がかかりそうです。EC2であれば普段触っている分、コードで書いてもイメージが付きやすいのですが、API Gatewayは触った経験が少ないので、そういったことも影響して苦戦してます。 次はエラーログを探してから、そこを指針に動いていけたらなと思います。