Open30

APIGateway + LambdaをGithubで管理してGithubActionsでデプロイするまでのフローを学ぶ

まなさすまなさす

やりたいこと

  • 構成はAPIGateway + Lambda。言語は普通にnode 14の予定
  • 『ローカルでコード書く→Gitにpush & developへマージ→CICDまわってデプロイ → 🎉』というフローをしたい
  • optional) デプロイするものがローカルで確認できるなら最高

遠い目標

  • フルスタック向けミニマムプロダクトの想定なので、フロントエンドも含めたmonorepo構成にしたい
  • デプロイはdevelopにマージされたらフロントエンドもサーバサイドもstg環境にデプロイされるが理想
  • フロントエンドはamplify
まなさすまなさす

これが1番近そうなのでこれをとりあえず真似て調整していく
https://toranoana-lab.hatenablog.com/entry/2021/12/17/132947

まなさすまなさす

とらのあなといったら同人誌というイメージだけど、最近よく開発文脈でも聞くので、とらのあなのバックエンドって結構すごいんだな…と思いつつ、確かに『一時的にトラフィックが激増する』のすごい良い例なのでクラウドサーバの柔軟性の恩恵をすごい受けるプロダクトだし、AWS対応するのも納得だ

まなさすまなさす

IAMもしかして必要なもの1個1個手で設定しないといかんのか??え、lambda deply roleみたいなのないの…?え?マジ?
AWSCodeDeployRoleForLambdaってのあった。これでいけるかな

まなさすまなさす

sam deploy --guidedがいけぬ!!!
が、多分このPC、AWSのconfigureとか通してないんでそんなところだろう
ついでにaws-valutとかもいれておくか

まなさすまなさす

これのエラーは、cloudformationのスタックのログを見るのがいいみたい。
見てみたらS3の書き込み権限が足りないってかいてあるし、確かにAWSCodeDeployRoleForLambdaはS3の読み込み権限しかないけど、このRoleは一体何ならできるんだろう
iamポリシーを適切に設定できる人への道のりはめっちゃ険しそうだな…。

まなさすまなさす

cloudformationは成功してるのにコンソールではエラーという謎の事態が…と思ったら↓で同じ壁にぶつかった先人がいた。ありがてえ。
ServerlessRestApi がないよみたいなエラーなんだけど、これも自分で書き込んでおかないといけないらしい。テンプレとは何なのか。

https://qiita.com/gonbe/items/8c2deb647ea343386cae

まなさすまなさす

やったお!!できたお!!!でもめちゃマジフルアクセス許可しまくりゴリラしたのであんまよくないけど、今は一旦いい!!!!わたしがやりたいのはそこじゃないのや

まなさすまなさす

結論からいうと
・書き換えなくてよかった
・エラーがでてたのは前のスタックが残ってたせい。前のスタックを消すのと書き換えのQiitaを同時にやってしまった→書き換えによって動くようになった!と誤認してしまったので混乱に陥った
という感じ。

まなさすまなさす

なんか、monorepoにすると1個のリポジトリにまとまって良いのは確かなんだけど、デプロイちょっとややこしくなっちゃうな
どっかでもmonorepoの文脈で話してたけど、『フロントしかなおさなくていいのにサーバサイドのデプロイも走っちゃう』はやっぱめんどくさみあるし、別々にしようかなやっぱり

まなさすまなさす

元サイトのConfigure AWS credentials入れ忘れてるだけだった…途中の手順にあるやつだけコピペしてしまったので足りてない奴がいくつかあるがまあこれだけで大丈夫だろう うん

まなさすまなさす

やった!!!!やっと寝れる!!!!!!!!!おやすみ!!!!!!!!!!!!!

まなさすまなさす

動いたけどどこではろーわーるどしてるのかよくわかってないので、これを書き換えまでやってこのスクラップは終わりにしよ 何はともあれ今日はねる

まなさすまなさす

書き換えは普通にそれっぽい部分書き換えればOKな感じね
これlambda用のexpressみたいなフレームワークってあるのかしら、このままだと大規模開発になってくるとちと書きづらいような気がするけど