Infrastructure as Code (IaC) - AWS Serverless Application Model

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 のサポート」を参照してください。

詳細