メインコンテンツまでスキップ

AWS Lambdaで最強のWebAPI開発環境をつくる!

· 約6分
時雨風
箱庭の管理者

こんにちは時雨風です。

最近は、アニメにハマってました。リコリス・リコイルっていうんですけどご存じですか?
あまりの面白さにtwitterでは最終回の後にアニメ難民が大量発生したようです。なかには幻の15話を見たという報告が多数あがるなど集団幻覚の可能性もあるとか…。まあ、冗談だと思います。たぶん。

今期は、水星の魔女もおもしろそうで毎週ワクワクです。

この記事では、最近の発見したAWS Lambdaによるサーバーレス開発とDev Containersが相性めっちゃよくね?ていうのを紹介する記事です。
サンプルをつくりましたので、ぜひそれだけでも確認してみてください。

いいところ

  • 多数のツールやライブラリを簡単にセットアップ
  • 環境をDockerで隔離し、PCの環境を汚さない
  • チームと簡単に共有できる
  • 設定してしまえばボタン一つで環境が自動構築

わるいところ

  • パソコンによってはDockerの処理が重い
  • プロジェクト最初の設定段階で少し面倒
    (でもこれについてはやらない時の面倒のほうが多いと思っている)

サンプルプロジェクトで使っているもの

AWS

サンプルプロジェクトで使用するサービスを列挙します。

  • Lambda
  • API Gateway
  • CloudWatch
  • CloudFormation

開発ツールなど

開発に使用するツールやライブラリを列挙します。

IDE

  • Visual Studio Code
  • 拡張機能 Dev Containers

開発仮想環境

  • Docker Desktop

開発言語及び周辺ツール、ライブラリ

  • Python 3.9
  • Poetry
  • Black
  • Pylance
  • mypy
  • pytest
  • aws-lambda-powertools

AWS公式ツール

AWSのリソース管理ツール:

  • SAM
  • CDK

操作用のコマンドラインツール:

  • AWS CLI
  • AWS SAM CLI
  • AWS CDK CLI

サンプルプロジェクトの確認

用意したサンプルプロジェクトをローカルにて実行します。
実際に使っていただいた方がわかることがたくさんあると思います。

必要ツールのインストール

docker、vscode、Dev Containersのインストールが必要です。

  • Docker Desktop
  • Dev Containers

Windowsの場合

Windows Terminalを使用します。

winget install -q vscode
code --install-extension MS-CEINTL.vscode-language-pack-ja
code --install-extension ms-vscode-remote.remote-containers

Docker Desktopを手動でインストールし、再起動を行なってください。

Macの場合

ターミナルを使用します。Terminal.appはランチャーのその他にまとめられています。

Homebrewを使用します。インストールされていない場合は、トップページのスクリプトからインストールを行なってください。

brew install --cask visual-studio-code
brew install --cask docker

ランチャーにvscodeとDockerアプリが追加されるので起動します。

vscodeにてcmd(ctrl) + shift + pでコマンドパレットを開き、>shell Command: Install 'code' command in PATHを検索して選択します。

プロジェクトのクローンとvscodeでの立ち上げ

Dockerが正常に動作していることを確認してください。

git clone https://github.com/tokiukaze/i-am-the-strongest.git
code i-am-the-strongest

サービスの開始とローカルテスト

awsアカウント設定

awsアカウントの設定を行います。
ターミナルにてaws configureを入力してください。

CDK デプロイ

デプロイの準備

cdk synth
cdk bootstrap

CDK デプロイ

cdk deploy

途中でyを入力する必要があります。

CDK デストロイ

cdk destroyにてスタックを削除することができます。

プロジェクトのテスト

unitテストを行う場合

左メニューからテストを選択します。
再生ボタンを押すことでテストを実行することができます。デバックも可能です。
テストファイルは下記になります。

tests/unit/test_i_am_the_strongest_stack.py

ローカルでaws環境を再現してテストする場合

cdk synth
sam local start-api -t ./cdk.out/IAmTheStrongestStack.template.json

まとめ

いかがでしたでしょうか?
面倒ですが、最初にここまでやっておけば開発途中で困ることはないと思います。

ここまで読んでいただきありがとうございました。