

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

# AWS SAM CLI
<a name="using-sam-cli"></a>

AWS Serverless Application Model コマンドラインインターフェイス (AWS SAM CLI) は、サーバーレスアプリケーションのローカル開発とテストのためのコマンドラインツールです。 AWS SAM CLI を使用すると、クラウドにデプロイする前に、サーバーレスアプリケーションをローカルで構築、変換、デプロイ、デバッグ、パッケージ化、初期化、同期できます。

AWS SAM CLI は、さまざまなフレームワークとInfrastructure as Code (IaC) ツールを使用して定義されたサーバーレスアプリケーションで動作し、さまざまなレベルのサポートを提供します。
+ **AWS SAM テンプレート** – ローカルテスト、デバッグ、パッケージング、デプロイ機能など、完全な機能セットでネイティブサポートを提供します。
+ **AWS CDK アプリケーション** – cdk synth コマンドを使用して AWS CDK アプリケーションを CloudFormation テンプレートに合成した後、Lambda 関数のローカルテストをサポートします。
+ **CloudFormation テンプレート** – は AWS SAM を拡張し CloudFormation、標準 CloudFormation テンプレートで定義されているサーバーレスリソースをサポートするため、直接的な互換性を提供します。
+ **Terraform アプリケーション** – Lambda 関数の構築とローカルテストに対する限定的なサポートを提供します。Terraform で定義された Lambda 関数を表す AWS SAM テンプレートアーティファクトを生成する必要があります。

最も包括的な機能サポートと効率的な開発者エクスペリエンスを得るには、ネイティブ AWS SAM テンプレートを使用することをお勧めします。

**Topics**
+ [AWS SAM CLI コマンドを文書化する方法](#using-sam-cli-documentation)
+ [AWS SAM CLI の設定](using-sam-cli-configure.md)
+ [AWS SAM CLI コアコマンド](using-sam-cli-corecommands.md)
+ [AWS SAM CLI によるローカルテスト](using-sam-cli-local-testing.md)

## AWS SAM CLI コマンドを文書化する方法
<a name="using-sam-cli-documentation"></a>

AWS SAM CLI コマンドは、次の形式で文書化されています。
+ **プロンプト** – Linux プロンプトはデフォルトで文書化され、(`$ `) として表示されます。Windows 固有のコマンドの場合、(`> `) がプロンプトとして使用されます。コマンドを入力した場合はプロンプトを含めないでください。
+ **ディレクトリ** – 特定のディレクトリからコマンドを実行する必要がある場合は、プロンプト記号の前にディレクトリ名が表示されます。
+ **ユーザー入力** – コマンドラインに入力するコマンドテキストは、**user input** としてフォーマットされます。
+ **置換可能なテキスト** – ファイル名やパラメータなどの可変テキストは、*replaceable text* としてフォーマットされます。複数行のコマンドまたは特定のキーボード入力が必要なコマンドの場合、キーボード入力も置き換え可能なテキストとして表示できます。例えば *ENTER* のようになります。
+ **出力** – コマンドに対するレスポンスとして返される出力は、`computer output` としてフォーマットされます。

次の `sam deploy` コマンドと出力は例です。

```
$ sam deploy --guided --template template.yaml

Configuring SAM deploy
======================

    Looking for config file [samconfig.toml] :  Found
    Reading default arguments  :  Success

    Setting default arguments for 'sam deploy'
    =========================================
    Stack Name [sam-app]: ENTER
    AWS Region [us-west-2]: ENTER
    #Shows you resources changes to be deployed and require a 'Y' to initiate deploy
    Confirm changes before deploy [y/N]: ENTER
    #SAM needs permission to be able to create roles to connect to the resources in your template
    Allow SAM CLI IAM role creation [Y/n]: ENTER
    #Preserves the state of previously provisioned resources when an operation fails
    Disable rollback [y/N]: ENTER
    HelloWorldFunction may not have authorization defined, Is this okay? [y/N]: y
    Save arguments to configuration file [Y/n]: ENTER
    SAM configuration file [samconfig.toml]: ENTER
    SAM configuration environment [default]: ENTER
```

1. `sam deploy --guided --template template.yaml` は、コマンドラインで入力するコマンドです。

1. **sam deploy --guided --template** はそのまま指定する必要があります。

1. *template.yaml* は、特定のファイル名に置き換えることができます。

1. 出力は `Configuring SAM deploy` から始まります。

1. 出力では、*ENTER* と *y* は、指定した置換可能な値を示します。

# AWS SAM CLI の設定
<a name="using-sam-cli-configure"></a>

の利点の 1 AWS SAM つは、反復タスクを削除して開発者の時間を最適化することです。 AWS SAM CLI には、`samconfig`この目的のために という名前の設定ファイルが含まれています。デフォルトでは、 の設定 AWS SAM CLIは必要ありませんが、 が代わりに設定ファイル内のカスタマイズされたパラメータ AWS SAM を参照できるようにすることで、より少ないパラメータでコマンドを実行できるように設定ファイルを更新できます。次の表にある例では、コマンドを最適化する方法を示しています。


| 元 | `samconfig` を使用した最適化 | 
| --- | --- | 
| **sam build --cached --parallel --use-containers** | **sam build** | 
| **sam local invoke --env-vars locals.json** | **sam local invoke** | 
| **sam local start-api --env-vars locals.json --warm-containers EAGER** | **sam local start-api** | 

 AWS SAM CLI には、デベロッパーがサーバーレスアプリケーションを作成、開発、デプロイするのに役立つ、一連のコマンドが用意されています。これらの各コマンドには、オプションのフラグを使用して、アプリケーションとデベロッパーの好みに基づいた設定が可能です。詳細については、[GitHub のAWS SAM CLI のコンテンツ](https://github.com/aws/aws-sam-cli)を参照してください。

このセクションのトピックでは、作成した [AWS SAM CLI 設定ファイル](serverless-sam-cli-config.md) のデフォルト設定をカスタマイズして、サーバーレスアプリケーションの開発時間を最適化する方法について説明しています。

**Topics**
+ [設定ファイルを作成する方法 (`samconfig` ファイル）](#using-sam-cli-configure-create)
+ [プロジェクト設定を構成する](#using-sam-cli-configure-project)
+ [認証情報と基本設定を構成する](#using-sam-cli-configure-basic)

## 設定ファイルを作成する方法 (`samconfig` ファイル）
<a name="using-sam-cli-configure-create"></a>

設定ファイル (ファイル名 `samconfig`) AWS SAM CLIは、通常 TOML 構造を使用するテキストファイルですが、YAML でも使用できます。 AWS クイックスタートテンプレートを使用する場合、このファイルは **sam init** コマンドの実行時に作成されます。**sam deploy -\$1-guided** コマンドを使用してアプリケーションをデプロイする際、このファイルを更新することができます。

デプロイの完了後、デフォルト値を使用しているのであれば、`samconfig` ファイルには `default` という名前のプロファイルが含まれています。**deploy** コマンドを再実行すると、 はこのプロファイルから保存された設定 AWS SAM を適用します。

`samconfig` ファイルの利点は、deploy コマンドに加えて使用可能な他のコマンドの設定 AWS SAM を保存することです。新しいデプロイで作成されたこれらの値以外にも、 を使用してデベロッパーワークフローの他の側面を簡素化できる多数の属性を `samconfig` ファイルで設定できます AWS SAM CLI。

## プロジェクト設定を構成する
<a name="using-sam-cli-configure-project"></a>

で使用する設定ファイルで、コマンドパラメータ値などの AWS SAM CLIプロジェクト固有の設定を指定できます AWS SAM CLI。この設定ファイルの詳細については、「[AWS SAM CLI 設定ファイル](serverless-sam-cli-config.md)」を参照してください。

### 設定ファイルの使用
<a name="using-sam-cli-configure-project-using"></a>

設定ファイルは、環境、コマンド、およびパラメータ値で構成されます。詳細については、「[設定ファイルの基本](serverless-sam-cli-config.md#serverless-sam-cli-config-basics)」を参照してください。

**新しい環境を設定するには**

1. 設定ファイルに新しい環境を指定します。

   以下に、新しい `prod` 環境を指定する例を示します。

------
#### [ TOML ]

   ```
   [prod.global.parameters]
   ```

------
#### [ YAML ]

   ```
   prod:
     global:
       parameters:
   ```

------

1. 設定ファイルの parameters セクションで、パラメーター値をキーと値のペアとして指定します。

   以下に、`prod` 環境のアプリケーションのスタック名を指定する例を示します。

------
#### [ TOML ]

   ```
   [prod.global.parameters]
   stack_name = "prod-app"
   ```

------
#### [ YAML ]

   ```
   prod:
     global:
       parameters:
         stack_name: prod-app
   ```

------

1. `--config-env` オプションを使用して、使用する環境を指定します。

   以下に例を示します。

   ```
   $ sam deploy --config-env "prod"
   ```

**パラメータ値を設定するには**

1. パラメータ値を設定したい AWS SAM CLI コマンドを指定します。すべての AWS SAM CLI コマンドのパラメータ値を設定するには、`global` 識別子を使用します。

   以下に、`default` 環境の `sam deploy` コマンドにパラメーター値を指定する例を示します。

------
#### [ TOML ]

   ```
   [default.deploy.parameters]
   confirm_changeset = true
   ```

------
#### [ YAML ]

   ```
   default:
     deploy:
       parameters:
         confirm_changeset: true
   ```

------

   以下に、`default` 環境のすべての AWS SAM CLI コマンドにパラメータ値を指定する例を示します。

------
#### [ TOML ]

   ```
   [default.global.parameters]
   stack_name = "sam-app"
   ```

------
#### [ YAML ]

   ```
   default:
     global:
       parameters:
         stack_name: sam-app
   ```

------

1.  AWS SAM CLI のインタラクティブフローを使用して、パラメータ値を指定することや、設定ファイルを変更することもできます。

   `sam deploy --guided` インタラクティブフローの例を次に示します。

   ```
   $ sam deploy --guided
   
   Configuring SAM deploy
   ======================
   
       Looking for config file [samconfig.toml] :  Found
       Reading default arguments  :  Success
   
       Setting default arguments for 'sam deploy'
       =========================================
       Stack Name [sam-app]: ENTER
       AWS Region [us-west-2]: ENTER
       #Shows you resources changes to be deployed and require a 'Y' to initiate deploy
       Confirm changes before deploy [Y/n]: n
       #SAM needs permission to be able to create roles to connect to the resources in your template
       Allow SAM CLI IAM role creation [Y/n]: ENTER
       #Preserves the state of previously provisioned resources when an operation fails
       Disable rollback [y/N]: ENTER
       HelloWorldFunction may not have authorization defined, Is this okay? [y/N]: y
       Save arguments to configuration file [Y/n]: ENTER
       SAM configuration file [samconfig.toml]: ENTER
       SAM configuration environment [default]: ENTER
   ```

詳細については、「[設定ファイルの作成と変更](serverless-sam-cli-config.md#serverless-sam-cli-config-using)」を参照してください。

### 例
<a name="using-sam-cli-configure-project-examples"></a>

#### 基本的な TOML の例
<a name="using-sam-cli-configure-project-examples-toml"></a>

以下は `samconfig.toml` 設定ファイルの例です。

```
...
version = 0.1

[default]
[default.global]
[default.global.parameters]
stack_name = "sam-app"

[default.build.parameters]
cached = true
parallel = true

[default.deploy.parameters]
capabilities = "CAPABILITY_IAM"
confirm_changeset = true
resolve_s3 = true

[default.sync.parameters]
watch = true

[default.local_start_api.parameters]
warm_containers = "EAGER"

[prod]
[prod.sync]
[prod.sync.parameters]
watch = false
```

#### 基本的な YAML の例
<a name="using-sam-cli-configure-project-examples-yaml"></a>

以下は `samconfig.yaml` 設定ファイルの例です。

```
version 0.1
default:
  global:
    parameters:
      stack_name: sam-app
  build:
    parameters:
      cached: true
      parallel: true
  deploy:
    parameters:
      capabilities: CAPABILITY_IAM
      confirm_changeset: true
      resolve_s3: true
  sync:
    parameters:
      watch: true
  local_start_api:
    parameters:
      warm_containers: EAGER
prod:
  sync:
    parameters:
      watch: false
```

## 認証情報と基本設定を構成する
<a name="using-sam-cli-configure-basic"></a>

 AWS Command Line Interface (AWS CLI) を使用して、 AWS 認証情報、デフォルトのリージョン名、デフォルトの出力形式などの基本設定を行います。構成が完了すると、これらの設定を AWS SAM CLI で使用できるようになります。詳細については、「*AWS Command Line Interface ユーザーガイド*」で次を参照してください。
+ [設定の基本](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html)
+ [設定ファイルと認証情報ファイルの設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
+ [の名前付きプロファイル AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
+ [IAM Identity Center が有効な名前付きプロファイルの使用](https://docs.aws.amazon.com/cli/latest/userguide/sso-using-profile.html)

簡単な設定手順については、「[ステップ 5: AWS CLI を使用して AWS 認証情報を設定する](prerequisites.md#prerequisites-configure-credentials)」を参照してください。

# AWS SAM CLI コアコマンド
<a name="using-sam-cli-corecommands"></a>

AWS SAM CLI には、サーバーレスアプリケーションの作成、構築、テスト、デプロイ、同期に使用する、いくつかの基本的なコマンドが備わっています。次の表に、これらのコマンドの一覧と、それぞれの詳細情報のリンク先を示します。

 AWS SAM CLI コマンドの完全なリストについては、「[AWS SAM CLI コマンドリファレンス](serverless-sam-cli-command-reference.md)」を参照してください。


| コマンド | その内容 | 関連トピック | 
| --- | --- | --- | 
| **sam build** | ローカルテストや AWS クラウドへのデプロイなど、デベロッパーワークフローの以降のステップのためにアプリケーションを準備します。 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 
| **sam deploy** | を使用してアプリケーションを AWS クラウドにデプロイします CloudFormation。 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 
| **sam init** | 新しいサーバーレス アプリケーションを作成および初期化するためのオプションを提供します。 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 
| **sam local** | サーバーレスアプリケーションをローカルでテストするためのサブコマンドを提供します。 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 
| **sam remote invoke** |  AWS クラウドでサポートされている AWS リソースを操作する方法を提供します。 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 
| **sam remote test-event** |  AWS Lambda 関数の共有可能なテストイベントにアクセスして管理する方法を提供します。 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 
| **sam sync** | ローカルアプリケーションの変更を AWS クラウドにすばやく同期するオプションを提供します。 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 

# AWS SAM CLI によるローカルテスト
<a name="using-sam-cli-local-testing"></a>

 AWS SAM CLI を使用すると、さまざまな Infrastructure as Code (IaC) ツールでサーバーレスアプリケーションのローカルテストを実行できます。このガイドでは、 AWS SAM CLI を使用してさまざまな IaC フレームワークでローカルテストを行う方法について説明します。

 AWS SAM CLI をローカルのテストに使用する主な利点は次のとおりです。
+ **迅速な開発** - にデプロイせずにコードの変更をテストする AWS
+ **コスト効率** - AWS 料金を発生させずに開発してテストする
+ **オフライン機能** - インターネット接続なしでアプリケーションを操作する
+ **デバッグの簡素化** - デバッガーを使用して Lambda 関数コードをローカルでステップスルーする
+ **現実的なテスト** - AWS サービスのローカルエミュレーションを使用してアプリケーションをテストする

## ローカルで AWS SAM アプリケーションをテストする
<a name="using-sam-cli-local-testing-sam"></a>

 AWS SAM テンプレートを使用して定義されたアプリケーションのテストについては、このガイド[のサーバーレスアプリケーションのテストとデバッグ](serverless-test-and-debug.md)を参照してください。

## CloudFormation テンプレートをローカルでテストする
<a name="using-sam-cli-local-testing-cfn"></a>

で AWS SAM CLIのローカルテスト機能を使用するには CloudFormation、 AWS SAM 変換を CloudFormation テンプレートに追加します。詳細については、「[AWS SAM テンプレートの分析](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-specification-template-anatomy.html)」を参照してください。
+  CloudFormation テンプレートへの AWS SAM 変換の追加
+ テンプレートの互換性を理解する
+ サーバーレスリソース構文の検証

## AWS CDK アプリケーションをローカルでテストする
<a name="using-sam-cli-local-testing-cdk"></a>

cdk synth コマンドを使用して AWS CDK アプリケーションを CloudFormation テンプレートに合成した後、 を使用して AWS SAM CLI AWS CDK アプリケーションをローカルでテストできます。

詳細については、[AWS CDK デベロッパーガイドの「 を使用して CDK アプリケーションをローカルでテストおよび構築 AWS SAM CLI](https://docs.aws.amazon.com/cdk/v2/guide/testing-locally.html)する」を参照してください。 AWS これには、以下が含まれます。
+ [ローカルテストの開始方法](https://docs.aws.amazon.com/cdk/v2/guide/testing-locally.html#testing-locally-getting-started)
+ [を使用した AWS CDK アプリケーションのローカルテスト AWS SAM](https://docs.aws.amazon.com/cdk/v2/guide/testing-locally.html#testing-locally-sam)

## Terraform アプリケーションをローカルでテストする
<a name="using-sam-cli-local-testing-terraform"></a>

 AWS SAM CLI は Terraform プロジェクトと Terraform Cloud をサポートしています。これを使用して、Lambda 関数とレイヤー、Amazon API Gateway HTTP、REST API のデバッグとテストをローカルに実行できます。

環境をセットアップし、利用可能なすべての機能については、本ガイドの「[Terraform サポート](terraform-support.md)」を参照してください。これには、以下が含まれます。
+ [AWS SAM CLI での Terraform のサポートの準備](gs-terraform-support.md)
+ [ローカルでのデバッグとテストのための Terraform と AWS SAM CLI の使用](using-samcli-terraform.md)