Infrastructure as Code (IaC)
Infrastructure as Code (IaC) を使用すると、サーバーレスアプリケーションを含む AWS リソースのデプロイと管理を自動化できます。IaC ではコードを使用してインフラストラクチャを定義できるため、デプロイのバージョニング、共有、レプリケートが容易になります。このアプローチは、以下に役立ちます。
-
開発サイクルを高速化する
-
設定管理を簡素化する
-
デプロイの信頼性と一貫性を向上する
AWS サーバーレスアプリケーション用の IaC ツール
AWS には、クラウドリソースの構築、デプロイ、管理に役立つ IaC ツールがいくつか用意されています。このセクションでは、AWS SAM がこのエコシステムにどのように適合し、他の AWS IaC ツールと連携するかについて説明します。
- AWS CloudFormation
-
CloudFormation
を使用することで、YAML または JSON テンプレートを使用して AWS インフラストラクチャ全体をモデル化およびプロビジョニングできます。CloudFormation はリソースの作成、更新、削除を自動的に処理します。AWS SAM アプリケーションをデプロイすると、CloudFormation が変換されたテンプレートを処理してリソースを作成および管理します。 - AWS Serverless Application Model (AWS SAM)
-
AWS SAM は、サーバーレスリソースを定義するためのシンプルな構文でサーバーレスアプリケーションを構築するのに役立ちます。AWS SAM テンプレートを使用することで、簡潔な YAML 構文を用いた Lambda 関数、API、データベース、イベントソースをプロビジョニングを行えます。AWS SAM は、デプロイ中にこれらのテンプレートを CloudFormation テンプレートに変換します。
注記
AWS SAM はサーバーレスアプリケーションを専門としていますが、AWS SAM テンプレートでは任意の CloudFormation リソースタイプを使用できます。これにより、必要に応じて非サーバーレスリソースを含める柔軟性が得られます。
- AWS クラウド開発キット (AWS CDK)
-
AWS CDK
を使用すると、TypeScript、Python、Java、C#/.Net、または Go などの使い慣れたプログラミング言語を使用してサーバーレスインフラストラクチャを定義できます。ループや条件などのプログラミングコンストラクトを使用してインフラストラクチャを定義でき、AWS CDK がデプロイ用の CloudFormation テンプレートを生成できます。AWS SAM CLI を使用して AWS CDK で作成されたアプリケーションをローカルにテストし、デバッグできます。詳細については、「Testing CDK applications locally」を参照してください。
サーバーレスアプリケーション用の IaC ツールの比較
サーバーレスアプリケーション用の IaC ツールを選択するときは、チームの好み、プロジェクト要件、既存のワークフローを考慮してください。次の表は、サーバーレス開発用の AWS IaC ツールの主な特性を比較したものです。
ツール |
主な使用 |
最適な用途 |
AWS SAM との連動 |
いつ選択するか |
|---|---|---|---|---|
CloudFormation |
複雑な AWS インフラストラクチャの管理 |
AWS リソースの詳細な制御を必要とするアプリケーション |
AWS SAM テンプレートはデプロイ中に CloudFormation テンプレートに変換されます |
非サーバーレスリソースのきめ細かな制御 |
AWS SAM |
サーバーレスアプリケーション開発 |
Lambda を使用してサーバーレスアプリケーションを構築するチーム |
ネイティブ機能 |
Lambda 関数、API Gateway API、およびその他のサーバーレスリソースを使用するサーバーレスアーキテクチャに主な焦点とする場合 |
AWS CDK |
プログラミング言語を使用したインフラストラクチャ定義 |
型付き言語とコードファーストアプローチを優先するチーム |
AWS SAM テンプレートを生成し、テストのため AWS SAM CLI を使用する |
プログラムによるインフラストラクチャ定義または複雑なリソース設定ロジックが必要な場合 |
注記
本ガイドでは AWS ネイティブ IaC ツールに焦点を当てていますが、Terraform はサーバーレスアプリケーションの定義に使用できるもう 1 つの一般的な IaC ソリューションです。AWS SAM CLI は、Terraform で定義された Lambda 関数のローカルテストをサポートしています。詳細については、「AWS SAMCLITerraform のサポート」を参照してください。
詳細
-
AWS での DevOps プラクティスの詳細については、「Introduction to DevOps on AWS」を参照してください。
-
さまざまな IaC ツールで Lambda を使用する方法については、「Lambda と Infrastructure as Code (IaC) の使用」を参照してください。