Serverless Framework V4 が正式にリリースされました。今回のバージョンアップでは、開発効率を大幅に向上させるための新機能や改良点が数多く盛り込まれています。
V4 で導入された主要な変更点と、それが開発者にもたらすメリットを紹介します。
JavaScript および TypeScript で記述された AWS Lambda 関数のバンドルをネイティブサポートしました。EsBuild ベースで高速な処理を実現し、プラグインは不要です。
AWS Lambda ハンドラーで TypeScript を使用している場合は、設定不要でデプロイ時に自動的にコードがビルドされます。
ビルドのカスタマイズも可能です。新しいビルド設定では、バンドルとミニファイの制御、多数の AWS Lambda 関数にわたるビルドの同時実行制御、ソースマップのサポートなどを容易に行えます。
詳細については、公式ドキュメントのネイティブ TypeScript & ビルドサポートを参照してください。
AWS Lambda でのサーバーレスアプリケーション開発において、ローカルエミュレーションと AWS への都度デプロイという選択肢は、それぞれ複雑さや速度の面で課題がありました。
V4 では、両者の利点を組み合わせた、新しい開発モードを導入しました。serverless dev コマンドで開発モードセッションを開始すると、実際の AWS Lambda 関数はイベントをローカルコードにリダイレクトして処理し、そのレスポンスを実際の Lambda 関数に返します。
これにより、
開発モードは、サービス内のすべての AWS Lambda 関数で動作します。各呼び出しはログを識別しやすいように一意の色で表示され、HTTP パスやメソッドなどの重要なイベント詳細は自動的にログに記録されます。
開発環境向けの機能であるため、開発完了後には AWS Lambda 関数内のコードを復元するために再デプロイする必要があります。
詳細については公式ドキュメントを参照してください。
Serverless Framework では、ステージと呼ばれる、異なる環境用のサーバーレスインフラストラクチャのスタックを、1 つまたは複数の AWS アカウントに作成できます。
V4 では、stages プロパティを導入し、ステージ固有のパラメータ、オブザーバビリティ設定、統合などを指定できるようになりました。 stages プロパティでは、ステージ固有の情報に加えて、すべてのステージのフォールバックオプションとして機能するデフォルト値も指定できます。
# serverless.yml
service: hoge-fuga
stages:
prod:
params:
stripe_api_key: ${env:PROD_STRIPE_API_KEY}
default:
params:
stripe_api_key: ${env:DEV_STRIPE_API_KEY}
従来の parameters も引き続きサポートされますが、今後は stages ブロックの使用が推奨されます。
詳細については、公式ドキュメントのstages プロパティを参照してください。
Serverless Framework 変数を再設計し、HashiCorp Terraform をはじめとする複数のソースとの統合と、データおよびシークレットの取得をサポートしました。
Terraform と Serverless Framework を併用し、Terraform で共有インフラストラクチャを、Serverless Framework でアプリケーション固有のインフラストラクチャを管理するといった使い方が可能です。
V4 では、AWS S3、リモート、HTTP、クラウドバックエンドから Terraform の状態出力を取得できるようになりました。 serverless.yml ファイル内で Terraform の状態出力にアクセスすることで、RDS 接続文字列や SQS キュー ARN など、共有インフラストラクチャに関する詳細を容易に取得できます。
${terraform} 変数 (名前はカスタマイズ可能) を使用することで、これらの操作を簡単に行えます。
${terraform} 変数を使用するには、Variable Resolver を設定します。Variable Resolver は V4 で導入された新しい概念で、変数に異なるソースを使用できるようにします。
service: hoge-fuga
stages:
default:
resolvers:
terraform:
type: terraform
backend: s3
bucket: terraform-state
key: terraform.tfstate
functions:
helloWorld:
handler: handler.hello
environment:
TERRAFORM_VARIABLE: ${terraform:outputs:users_table_arn}
詳細については、公式ドキュメントのTerraform 統合を参照してください。
シークレット管理ツール HashiCorp Vault とシームレスに統合できる ${vault} 変数を導入しました。デプロイ時に HashiCorp Vault から安全にシークレットを取得できるようになり、サーバーレスサービスのセキュリティと柔軟性が向上します。ステージごとに異なる Vault インスタンスを指定することも可能です。
service: my-service
stages:
default:
resolvers:
terraform:
address: http://127.0.0.1:8200
token: ${env:VAULT_TOKEN}
version: v1
functions:
helloWorld:
handler: handler.hello
environment:
VAULT_VARIABLE: ${vault:secret/data/mongo/credentials.password}
上記の例では、Vault サーバーの secret/data/mongo パスにあるシークレットを取得しています。
詳細については、公式ドキュメントのVault 統合を参照してください。
Serverless Framework V4 のライセンスには、サポートが含まれています。
V4 では、新しい support コマンドが提供され、対話型のプロンプトを実行してエラーに関するレポートを生成したり、CLI からサポートチームにチケットを提出したりできます。
このコマンドは、前回の CLI コマンドに関するコンテキストを自動的に収集して出力します (シークレットやアカウント情報などの機密情報は除外されます)。生成されたレポートは、チームメイトと共有したり、GitHub リポジトリに投稿したりできます。
–AI フラグを使用すると、AI サービス (例: ChatGPT) のプロンプトに含めるためのコンテキストが最適化され、デバッグに役立ちます。
CLI で直接サポートチケットを開くと、サポートの質問とともにコンテキストが送信されるため、迅速なサポートが得られます。
詳細については、公式ドキュメントの support コマンド を参照してください。
V4 ライセンスでは、Serverless Framework ダッシュボードのほとんどの機能が追加費用なしで利用できるようになりました。サービスインベントリ、デプロイ履歴、パラメータ (シークレット)、AWS アクセスクレデンシャルのチーム内共有などが含まれます。CI/CD も V4 ライセンスに標準で含まれています。
これらの機能はチームメンバーに追加費用なしで提供され、AWS Lambda 関数の実行回数に基づいて価格が設定されることもありません。
ダッシュボードでは、AWS Lambda の強力なオブザーバビリティ機能も提供されています。トレースとメトリクスはオプションのアドオンとして、別途料金で利用できます。
Serverless Framework ダッシュボード からサインインできます。
V4 では、新しい AWS サーバーレスサービスや機能のサポートにも積極的に取り組んでいます。
“python3.12″、”dotnet8″、”java21” などの新しい AWS Lambda ランタイムのサポートが追加されました。
JSON でのログのキャプチャ、ログの粒度の向上、カスタムロググループの設定など、AWS Lambda の高度なログ制御もサポートしました。
service: my-service
provider:
name: aws
logs:
# Optional Configuration of Lambda Logging Configuration
lambda:
# The Log Format to be used for all lambda functions (default: Text)
logFormat: JSON
# The Application Log Level to be used, This can only be set if `logFormat` is
applicationLogLevel: ERROR
# The System Log Level to be used, This can only be set if `logFormat` is set
systemLogLevel: INFO
# The LogGroup that will be used by default. If this is set the Framework will
logGroup: /aws/lambda/global-log-group
詳細については、公式ドキュメントの新しい AWS 機能を参照してください。
Serverless Framework V4 では、開発者のフィードバックを基に、使いやすさと機能性の両面で大幅な進化を遂げました。Serverless Framework V4 を活用して、快適なサーバーレス開発を体験してください。
AWSモダナイズ開発、データ分析基盤構築とデータ活用支援、基幹業務システムのUI.UX刷新はお気軽にお問い合わせください。
スモールスタート開発支援、サーバーレス・NoSQLのことなら
ラーゲイトまでご相談ください
低コスト、サーバーレスの
モダナイズ開発をご検討なら
下請け対応可能
Sler企業様からの依頼も歓迎