

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Infrastructure as Code (IaC)
<a name="what-is-iac"></a>

Infrastructure as Code (IaC) を使用すると、サーバーレスアプリケーションを含む AWS リソースのデプロイと管理を自動化できます。IaC ではコードを使用してインフラストラクチャを定義できるため、デプロイのバージョニング、共有、レプリケートが容易になります。このアプローチは、以下に役立ちます。
+ 開発サイクルを高速化する
+ 設定管理を簡素化する
+ デプロイの信頼性と一貫性を向上する

## AWS サーバーレスアプリケーション用の IaC ツール
<a name="iac-tools-aws"></a>

AWS には、クラウドリソースの構築、デプロイ、管理に役立つ IaC ツールがいくつか用意されています。このセクションでは、 がこのエコシステムにどのように AWS SAM 適合し、他の AWS IaC ツールと連携するかについて説明します。

**AWS CloudFormation**  
を使用すると[CloudFormation](https://aws.amazon.com/cloudformation/)、YAML または JSON テンプレートを使用して AWS インフラストラクチャ全体をモデル化およびプロビジョニングできます。 は、リソースの作成、更新、削除を自動的に CloudFormation 処理します。 AWS SAM アプリケーションをデプロイすると、 は変換されたテンプレート CloudFormation を処理してリソースを作成および管理します。

**AWS Serverless Application Model (AWS SAM)**  
AWS SAM は、サーバーレスリソースを定義するためのシンプルな構文でサーバーレスアプリケーションを構築するのに役立ちます。 AWS SAM テンプレートを使用して、簡潔な YAML 構文を使用して Lambda 関数、APIs、データベース、イベントソースをプロビジョニングできます。 は、デプロイ中にこれらのテンプレートを CloudFormation テンプレート AWS SAM に変換します。  
はサーバーレスアプリケーションを AWS SAM 専門としていますが、 AWS SAM テンプレートでは任意の CloudFormation リソースタイプを使用できます。これにより、必要に応じて非サーバーレスリソースを含める柔軟性が得られます。

**AWS クラウド開発キット (AWS CDK)**  
[AWS CDK](https://aws.amazon.com/cdk/) を使用すると、TypeScript、Python、Java、C\$1/.Net、または Go などの使い慣れたプログラミング言語を使用してサーバーレスインフラストラクチャを定義できます。ループや条件などのプログラミングコンストラクトを使用してインフラストラクチャを定義し、デプロイ用の CloudFormation テンプレート AWS CDK を生成できます。を使用して AWS SAM CLI、 で作成されたアプリケーションをローカルでテストおよびデバッグできます AWS CDK。詳細については、「[Testing CDK applications locally](https://docs.aws.amazon.com/cdk/v2/guide/testing-locally.html)」を参照してください。

## サーバーレスアプリケーション用の IaC ツールの比較
<a name="comparing-iac-tools"></a>

サーバーレスアプリケーション用の 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 SAM CLI Terraform のサポート](terraform-support.md)」を参照してください。

## 詳細情報
<a name="iac-learn-more"></a>
+ での DevOps プラクティスの詳細については AWS、「 での [DevOps の概要」を参照してください。 AWS](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html)
+ さまざまな IaC ツールで Lambda を使用する方法については、「[Lambda と Infrastructure as Code (IaC) の使用](https://docs.aws.amazon.com/lambda/latest/dg/foundation-iac.html)」を参照してください。