

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

# AWS SAM CLI 設定ファイル
<a name="serverless-sam-cli-config"></a>

 AWS Serverless Application Model コマンドラインインターフェイス (AWS SAM CLI) は、コマンドパラメータ値の設定 AWS SAM CLIに使用できるプロジェクトレベルの設定ファイルをサポートしています。

設定ファイルの作成と使用に関するドキュメントについては、「[AWS SAM CLI の設定](using-sam-cli-configure.md)」を参照してください。

**Topics**
+ [

## デフォルトの設定ファイルの設定
](#serverless-sam-cli-config-default)
+ [

## サポートされている設定ファイル形式
](#serverless-sam-cli-config-formats)
+ [

## 設定ファイルの指定
](#serverless-sam-cli-config-specify)
+ [

## 設定ファイルの基本
](#serverless-sam-cli-config-basics)
+ [

## パラメータ値のルール
](#serverless-sam-cli-config-rules)
+ [

## 設定の優先順位
](#serverless-sam-cli-config-precedence)
+ [

## 設定ファイルの作成と変更
](#serverless-sam-cli-config-using)

## デフォルトの設定ファイルの設定
<a name="serverless-sam-cli-config-default"></a>

AWS SAM は、次のデフォルト設定ファイル設定を使用します。
+ **[Name]** (名前) – `samconfig`。
+ **場所** — プロジェクトのルートにあります。これは `template.yaml` ファイルと同じ場所です。
+ **形式** – `TOML`。詳細については、TOML のドキュメントの「[TOML](https://toml.io/en/)」を参照してください。

以下に、デフォルトの設定ファイル名と場所を含むプロジェクト構成の例を示します。

```
sam-app
├── README.md
├── __init__.py
├── events
├── hello_world
├── samconfig.toml
├── template.yaml
└── tests
```

`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
```

## サポートされている設定ファイル形式
<a name="serverless-sam-cli-config-formats"></a>

サポートされている形式は、`TOML` および `[YAML|YML]` です。次の基本構文を参照してください。

### TOML
<a name="serverless-sam-cli-config-formats-toml"></a>

```
version = 0.1
[environment]
[environment.command]
[environment.command.parameters]
option = parameter value
```

### YAML
<a name="serverless-sam-cli-config-formats-yaml"></a>

```
version: 0.1
environment:
  command:
    parameters:
      option: parameter value
```

## 設定ファイルの指定
<a name="serverless-sam-cli-config-specify"></a>

デフォルトでは、 AWS SAM CLI は次の順序で設定ファイルを検索します。

1. **カスタム設定ファイル** — `--config-file` オプションを使用してファイル名と場所を指定すると、 AWS SAM CLI は最初にこのファイルを検索します。

1. **デフォルトの `samconfig.toml` ファイル** — これはプロジェクトのルートにあるデフォルトの設定ファイル名と形式です。カスタム設定ファイルを指定しない場合、 AWS SAM CLI は次にこのファイルを検索します。

1. **`samconfig.[yaml|yml]` ファイル** — `samconfig.toml` がプロジェクトのルートに存在しない場合、 AWS SAM CLI はこのファイルを探します。

以下に、`--config-file` オプションを使用してカスタム設定ファイルを指定する例を示します。

```
$ sam deploy --config-file myconfig.yaml
```

**注記**  
設定が適用されるコンテキストを が決定する必要があるため、 AWS SAM CLI `--config-file`パラメータは AWS SAM テンプレートファイルの場所を基準にする必要があります。`samconfig.toml` ファイルは のバージョンの設定を管理し AWS SAM CLI、CLI は`samconfig.toml`ファイルの相対フォルダ内の `template.yaml` ファイル (または上書きされた設定ファイルパラメータ) を検索します。

## 設定ファイルの基本
<a name="serverless-sam-cli-config-basics"></a>

### 環境
<a name="serverless-sam-cli-config-basics-environment"></a>

**環境**とは、一意の構成設定一式を含む名前付き識別子です。1 つの AWS SAM アプリケーションに複数の環境を含めることができます。

デフォルトの環境名は `default` です。

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

### コマンド
<a name="serverless-sam-cli-config-basics-command"></a>

この**コマンド**は、パラメータ値を指定する AWS SAM CLI コマンドです。

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

 AWS SAM CLI コマンドを参照するときは、スペース (` `) とハイフン (`–`) をアンダースコア (`_`) に置き換えます。以下の例を参照してください。
+ `build`
+ `local_invoke`
+ `local_start_api`

### パラメータ
<a name="serverless-sam-cli-config-basics-parameters"></a>

**パラメータ**は、キーと値のペアとして指定されます。
+ **キー**は AWS SAM CLI コマンドのオプション名です。
+ **値**は指定する値です。

キーを指定するときは、長い形式のコマンドオプション名を使用し、ハイフン (`–`) をアンダースコア (`_`) に置き換えます。次に例を示します。
+ `region`
+ `stack_name`
+ `template_file`

## パラメータ値のルール
<a name="serverless-sam-cli-config-rules"></a>

### TOML
<a name="serverless-sam-cli-config-rules-toml"></a>
+ ブール値は `true` または `false` です。例えば、`confirm_changeset = true`。
+ 文字列値の場合、引用符 (`""`) を使用します。例えば、`region = "us-west-2"`。
+ リスト値の場合、引用符 (`""`) を使用し、各値をスペース (` `) で区切ります。例: `capabilities = "CAPABILITY_IAM CAPABILITY_NAMED_IAM"`。
+ 値にキーと値のペアのリストが含まれる場合、ペアはスペースで区切られ (` `)、各ペアの値はエンコードされた引用符 (`\" \"`) で囲まれます。例えば、`tags = "project=\"my-application\" stage=\"production\""`。
+ 複数回指定できるパラメータ値の場合、値は引数の配列になります。例: `image_repositories = ["my-function-1=image-repo-1", "my-function-2=image-repo-2"]`。

### YAML
<a name="serverless-sam-cli-config-rules-yaml"></a>
+ ブール値は `true` または `false` です。例えば、`confirm_changeset: true`。
+ 単一の文字列値を含むエントリの場合、引用符 (`""`) はオプションです。例えば、`region: us-west-2`。これには、1 つの文字列として提供される複数のキーと値のペアを含むエントリも含まれます。以下に例を示します。

  ```
  $ sam deploy --tags "foo=bar hello=world"
  ```

  ```
  default:
    deploy:
      parameters:
        tags: foo=bar hello=world
  ```
+ 値のリストを含むエントリや、1 つのコマンドで複数回使用できるエントリの場合は、それらを文字列のリストとして指定します。

  以下に例を示します。

  ```
  $ sam remote invoke --parameter "InvocationType=Event" --parameter "LogType=None"
  ```

  ```
  default:
    remote_invoke:
      parameters:
          parameter:
          - InvocationType=Event
          - LogType=None
  ```

## 設定の優先順位
<a name="serverless-sam-cli-config-precedence"></a>

値を設定する場合、次の優先順位が適用されます。
+ コマンドラインで指定したパラメータ値は、設定ファイルおよびテンプレートファイルの `Parameters` セクション内の対応する値よりも優先されます。
+ `--parameter-overrides` オプションがコマンドラインまたは設定ファイルで `parameter_overrides` キーとともに使用される場合、その値はテンプレートファイルの `Parameters` セクションの値よりも優先されます。
+ 設定ファイルでは、特定のコマンド用に指定されたエントリがグローバルエントリより優先されます。次の例では、`sam deploy` コマンドはスタック名 `my-app-stack` を使用します。

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

  ```
  [default.global.parameters]
  stack_name = "common-stack"
  
  [default.deploy.parameters]
  stack_name = "my-app-stack"
  ```

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

  ```
  default:
    global:
      parameters:
        stack_name: common-stack
    deploy:
      parameters:
        stack_name: my-app-stack
  ```

------

## 設定ファイルの作成と変更
<a name="serverless-sam-cli-config-using"></a>

### 設定ファイルの作成
<a name="serverless-sam-cli-config-using-create"></a>

`sam init` を使用してアプリケーションを作成すると、デフォルトの `samconfig.toml` ファイルが作成されます。設定ファイルを手動で作成することもできます。

### 設定ファイルの変更
<a name="serverless-sam-cli-config-using-modify"></a>

設定ファイルは手動で変更できます。また、 AWS SAM CLI のインタラクティブフローでは、設定値が括弧 (`[ ]`) 内に表示されます。これらの値を変更すると、 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
```

設定ファイルを変更する際に、 AWS SAM CLI はグローバル値を次のように処理します。
+ パラメータ値が設定ファイルの `global` セクションに存在する場合、 AWS SAM CLI はその値を特定のコマンドセクションに書き込みません。
+ パラメータ値が `global` セクションと特定のコマンドセクションの両方に存在する場合、 AWS SAM CLI はグローバル値を優先してその特定のエントリを削除します。