1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Markdown AIチャレンジ!効率化と個性を活かした活用術!

AWS SAMを用いたLambdaのローカル開発×デプロイ

Last updated at Posted at 2025-01-02

はじめに

サービス概要

本記事では、旅行者向けの情報共有プラットフォーム「旅BASE」のバックエンド構築について解説します。このサービスは、Reactを用いたフロントエンドとAWSのサーバーレス技術を活用したバックエンドで構成されています。ユーザーは簡単に旅行プランを作成・共有できる機能を利用できます。

サービスの詳細は以下のリンクをご覧ください:


アーキテクチャ構成

以下は、本サービスにおけるAWSを活用した全体的なアーキテクチャ構成図です。

ブログ機能_UI設計.png

この記事のスコープ

本記事では、上記アーキテクチャのうち、バックエンドプロジェクトに焦点を当てて解説します。具体的には以下の内容をカバーします:

  1. API Gateway: HTTPエンドポイントの作成。
  2. Lambda関数: Pythonで実装されたビジネスロジック。
  3. SAMファイル: AWSリソース管理用テンプレートの生成と編集。
  4. デプロイ自動化: deploy.shスクリプトによるLambda関数の更新。

これにより、チーム開発で効率的にバックエンドプロジェクトを管理し、GitHubで共有可能な環境を構築します。


以降の記事では、このスコープに基づいて具体的な手順を説明していきます。

ステップ1: Lambda関数の作成

  1. AWSコンソールにログインし、Lambdaサービスを開きます。
  2. 「関数の作成」をクリックし、「スクラッチから作成」を選択。
    • 関数名: MyLambdaFunction
    • ランタイム: Python 3.12
    • 実行ロール: 新しいロールを作成(デフォルト設定)
  3. 関数コードに以下のPythonコードを記述します:
import json

def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }
  1. 「Deploy」をクリックして関数を保存。

ステップ2: API Gatewayの設定

  1. API Gatewayコンソールに移動し、「APIの作成」をクリック。
  2. 「REST API」を選択し、「構築」をクリック。
  3. 設定で以下を入力し、「APIの作成」をクリック:
    • APIの詳細: 新しいAPI
    • API名: 例. MyAPI
    • APIエンドポイントタイプ: リージョン
  4. リソースの作成から、以下の設定を入力して「リソースの作成」をクリック:
    • リソースパス: 例. /
    • リソース名: 例. test
  5. メソッドの作成から、以下の設定を入力して「メソッドの作成」をクリック:
    • メソッドタイプ: GET
    • 統合タイプ: Lambda関数
    • Lambda関数名: MyLambdaFunction
  6. 「デプロイ」をクリックし、ステージ名(例: dev)を入力。

ステップ3: AWS SAMプロジェクトの構築

  1. 必要なツールをインストール:
  2. AWSコンソールにログインし、Lambdaサービスを開きます。
  3. ダウンロード>両方ダウンロードをクリックし、zipファイルを取得。
  4. 任意のフォルダに解凍し、以下のようになればOK。
    .
    └── MyLambdaFunction
        ├── src
        │   └── lambda_function.py
        └── template.yml
    
  5. 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: ローカル環境でのテスト

  1. プロジェクトディレクトリに移動:
cd MyLambdaFunction
  1. ビルドコマンドを実行:
sam build
  1. ローカルAPIサーバーを起動:
sam local start-api
  1. ブラウザまたはcurlでエンドポイントをテスト:
curl http://localhost:3000/test

Hello from Updated Lambda!と返ってきたらテストは成功。


ステップ5: Lambdaコードのデプロイ

  1. 新しくdeploy.shを作成します:
    MyLambdaFunction
    ├── deploy.sh
    ├── src
    │   └── lambda_function.py
    └── template.yml
    
     
  2. 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."
    
     
  3. スクリプトの実行
    chmod +x deploy.sh
    bash deploy.sh
    

補足① AWS CLIのアカウント登録(アクセスキーの登録から)

  1. AWSコンソールにログインし、IAMサービスを開きます。
  2. 「ユーザ」から対象のユーザを選択し、「概要」からアクセスキーを作成をクリック。
  3. 任意の名前を設定し、アクセスキーシークレットアクセスキーを保存。
  4. コマンドラインで以下を実行し、アカウントを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]: {空白}
    
  5. 以下のコマンドで内容を確認:
    aws configure list
    

ステップ6: GitHubへの共有

  1. プロジェクト全体(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は効率的なサーバーレス開発環境を提供するため、チーム開発にも適しています。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?