はじめに
サービス概要
本記事では、旅行者向けの情報共有プラットフォーム「旅BASE」のバックエンド構築について解説します。このサービスは、Reactを用いたフロントエンドとAWSのサーバーレス技術を活用したバックエンドで構成されています。ユーザーは簡単に旅行プランを作成・共有できる機能を利用できます。
サービスの詳細は以下のリンクをご覧ください:
アーキテクチャ構成
以下は、本サービスにおけるAWSを活用した全体的なアーキテクチャ構成図です。
この記事のスコープ
本記事では、上記アーキテクチャのうち、バックエンドプロジェクトに焦点を当てて解説します。具体的には以下の内容をカバーします:
- API Gateway: HTTPエンドポイントの作成。
- Lambda関数: Pythonで実装されたビジネスロジック。
- SAMファイル: AWSリソース管理用テンプレートの生成と編集。
-
デプロイ自動化:
deploy.sh
スクリプトによるLambda関数の更新。
これにより、チーム開発で効率的にバックエンドプロジェクトを管理し、GitHubで共有可能な環境を構築します。
以降の記事では、このスコープに基づいて具体的な手順を説明していきます。
ステップ1: Lambda関数の作成
- AWSコンソールにログインし、Lambdaサービスを開きます。
- 「関数の作成」をクリックし、「スクラッチから作成」を選択。
- 関数名:
MyLambdaFunction
- ランタイム:
Python 3.12
- 実行ロール: 新しいロールを作成(デフォルト設定)
- 関数名:
- 関数コードに以下のPythonコードを記述します:
import json
def lambda_handler(event, context):
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
- 「Deploy」をクリックして関数を保存。
ステップ2: API Gatewayの設定
- API Gatewayコンソールに移動し、「APIの作成」をクリック。
- 「REST API」を選択し、「構築」をクリック。
- 設定で以下を入力し、「APIの作成」をクリック:
- APIの詳細:
新しいAPI
- API名: 例.
MyAPI
- APIエンドポイントタイプ:
リージョン
- APIの詳細:
- リソースの作成から、以下の設定を入力して「リソースの作成」をクリック:
- リソースパス: 例.
/
- リソース名: 例.
test
- リソースパス: 例.
- メソッドの作成から、以下の設定を入力して「メソッドの作成」をクリック:
- メソッドタイプ:
GET
- 統合タイプ: Lambda関数
- Lambda関数名:
MyLambdaFunction
- メソッドタイプ:
- 「デプロイ」をクリックし、ステージ名(例:
dev
)を入力。
ステップ3: AWS SAMプロジェクトの構築
- 必要なツールをインストール:
- AWS CLI
- AWS SAM CLI
- Docker
- AWSコンソールにログインし、Lambdaサービスを開きます。
- ダウンロード>両方ダウンロードをクリックし、zipファイルを取得。
- 任意のフォルダに解凍し、以下のようになればOK。
. └── MyLambdaFunction ├── src │ └── lambda_function.py └── template.yml
- lambda_function.pyを以下のように編集
src/lambda_function.py
import json def lambda_handler(event, context): return { 'statusCode': 200, 'body': json.dumps('Hello from Updated Lambda!') }
ステップ4: ローカル環境でのテスト
- プロジェクトディレクトリに移動:
cd MyLambdaFunction
- ビルドコマンドを実行:
sam build
- ローカルAPIサーバーを起動:
sam local start-api
- ブラウザまたはcurlでエンドポイントをテスト:
curl http://localhost:3000/test
Hello from Updated Lambda!
と返ってきたらテストは成功。
ステップ5: Lambdaコードのデプロイ
- 新しく
deploy.sh
を作成します:MyLambdaFunction ├── deploy.sh ├── src │ └── lambda_function.py └── template.yml
-
deploy.sh
スクリプトの作成deploy.sh#!/bin/bash ZIP_FILE="lambda.zip" FUNCTION_NAME="MyLambdaFunction" SRC_DIR="./src" # ./src配下のファイルとフォルダをzip化 echo "Zipping source files from $SRC_DIR..." cd $SRC_DIR zip -r ../$ZIP_FILE ./* cd .. # Lambda関数の更新 echo "Updating Lambda function $FUNCTION_NAME with $ZIP_FILE..." aws lambda update-function-code --function-name $FUNCTION_NAME --zip-file fileb://$ZIP_FILE # zipファイル削除 echo "Deleting zip file $ZIP_FILE..." rm $ZIP_FILE echo "Deployment complete."
- スクリプトの実行
chmod +x deploy.sh bash deploy.sh
補足① AWS CLIのアカウント登録(アクセスキーの登録から)
- AWSコンソールにログインし、IAMサービスを開きます。
- 「ユーザ」から対象のユーザを選択し、「概要」からアクセスキーを作成をクリック。
- 任意の名前を設定し、アクセスキーとシークレットアクセスキーを保存。
- コマンドラインで以下を実行し、アカウントをAWS CLIに登録:
aws configure --profile biz AWS Access Key ID [None]: {アクセスキー} AWS Secret Access Key [None]: {シークレットアクセスキー} Default region name [None]: ap-northeast-1 Default output format [None]: {空白}
- 以下のコマンドで内容を確認:
aws configure list
ステップ6: GitHubへの共有
- プロジェクト全体(
sam-app
ディレクトリ)をGitHubリポジトリにプッシュします:git init git add . git commit -m "Initial commit" git branch -M main git remote add origin <your-repo-url> git push -u origin main
まとめ
この手順では、AWS LambdaとAPI Gatewayを使用したバックエンド構築からローカル開発、デプロイ、GitHub共有まで一連の流れを紹介しました。AWS SAMは効率的なサーバーレス開発環境を提供するため、チーム開発にも適しています。