AWSのサーバーレスアーキテクチャを活用して開発環境と本番環境を効率的に管理する方法をご紹介します。
Lambda関数のバージョニングとエイリアス、そしてAPI Gatewayのステージ変数を組み合わせることで、安全で管理しやすい環境を構築できます。
開発プロジェクトでは、開発環境と本番環境を適切に分離することが重要です。
AWSのサーバーレスサービスを使用する場合、Lambda関数のバージョニング機能とAPI Gatewayのステージ機能を組み合わせることで、効率的な環境分離を実現できます。
この記事では、以下の手順で環境構築を行います:
- Lambda関数のバージョン管理設定
- 開発用と本番用のエイリアス作成
- API Gatewayの設定とデプロイ
Lambda関数のバージョン管理
バージョンの作成
Lambda関数のバージョン管理を開始するには:
- Lambda関数のコンソールにアクセス
- 「アクション」メニューから「バージョンの発行」を選択
- バージョンの説明を入力(任意)
- 「発行」をクリック
これにより、現在のコードのスナップショットが作成され、固有のバージョン番号が割り当てられます。
エイリアスの設定
次に、開発環境(dev)と本番環境(prod)用のエイリアスを作成します:
- 「エイリアス」タブを選択
- 「エイリアスの作成」をクリック
- 以下の設定で2つのエイリアスを作成:
- 開発環境:
- 名前:dev
- バージョン:$LATEST
- 本番環境:
- 名前:prod
- バージョン:安定版の番号(例:1)
API Gatewayの設定
API作成とLambda統合
- API Gatewayコンソールで新しいAPIを作成
- リソースとメソッドを追加する際、Lambda関数の指定で以下の形式を使用:
arn:aws:lambda:リージョン:アカウントID:function:関数名:${stageVariables.alias}
Lambda実行権限の設定
API GatewayからLambdaを呼び出すための権限を設定します。以下のコマンドを開発環境と本番環境それぞれで実行:
aws lambda add-permission \
--function-name "関数名:dev" \
--source-arn "arn:aws:execute-api:リージョン:アカウントID:api-id/*/HTTP_METHOD/resource-path" \
--principal apigateway.amazonaws.com \
--statement-id apigateway-dev \
--action lambda:InvokeFunction
本番環境用:
aws lambda add-permission \
--function-name "関数名:prod" \
--source-arn "arn:aws:execute-api:リージョン:アカウントID:api-id/*/HTTP_METHOD/resource-path" \
--principal apigateway.amazonaws.com \
--statement-id apigateway-prod \
--action lambda:InvokeFunction
ステージのデプロイ
- 「APIのデプロイ」を選択
- 新しいステージの作成:
- 開発環境(dev):
- ステージ変数の設定:
- キー:alias
- 値:dev
- 本番環境(prod):
- ステージ変数の設定:
- キー:alias
- 値:prod
まとめ
このセットアップにより、以下のメリットが得られます:
- 開発環境と本番環境の完全な分離
- Lambda関数のバージョン管理による安全なデプロイ
- ステージ変数を使用した柔軟な環境切り替え
- デプロイプロセスの自動化が容易
この方法を活用することで、より安全で効率的なサーバーレスアプリケーションの開発・運用が可能になります。