

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS SAMCLI구성 파일
<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 는 다음과 같은 기본 구성 파일 설정을 사용합니다.
+ **이름** – `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 SAMCLI는 다음과 같은 순서로 구성 파일을 찾습니다.

1. **사용자 지정 구성 파일** - `--config-file` 옵션을 사용하여 파일 이름과 위치를 지정하는 경우, AWS SAMCLI는 이 파일을 먼저 찾습니다.

1. **기본 `samconfig.toml` 파일** - 이는 귀하의 프로젝트의 루트에 있는 기본 구성 파일 이름 및 형식입니다. 사용자 지정 구성 파일을 지정하지 않는 경우 AWS SAMCLI는 다음으로 이 파일을 찾습니다.

1. **`samconfig.[yaml|yml]`파일** – 귀하의 프로젝트 루트에 `samconfig.toml`이 없는 경우, AWS SAMCLI는 이 파일을 찾습니다.

다음은 `--config-file` 옵션을 사용하여 사용자 지정 구성 파일을 지정하는 예시입니다.

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

**참고**  
는 구성이 적용되는 컨텍스트를 결정해야 하므로 `--config-file` AWS SAM CLI 파라미터는 AWS SAM 템플릿 파일의 위치를 기준으로 해야 합니다. `samconfig.toml` 파일은 버전의 구성 설정을 관리하며 AWS SAM CLICLI는 `samconfig.toml` 파일의 상대적 폴더에서 `template.yaml` 파일(또는 재정의된 구성 파일 파라미터)을 찾습니다.

## 구성 파일 기본 사항
<a name="serverless-sam-cli-config-basics"></a>

### 환경
<a name="serverless-sam-cli-config-basics-environment"></a>

**환경**은 고유한 구성 설정 세트를 포함하는 명명된 식별자입니다. 단일 AWS SAM 애플리케이션에 여러 환경을 보유할 수 있습니다.

환경 이름 기본은 `default`입니다.

`--config-env` 옵션을 사용하여 AWS SAM CLI 사용할 환경을 지정합니다.

### 명령
<a name="serverless-sam-cli-config-basics-command"></a>

**명령**은 파라미터 값을 지정하는 AWS SAMCLI 명령입니다.

모든 명령의 파라미터 값을 지정하려면 `global` 식별자를 사용합니다.

 AWS SAMCLI명령을 참조할 때는 공백(` `)과 하이픈(`–`)을 밑줄(`_`)로 바꿉니다. 다음 예를 참조하세요.
+ `build`
+ `local_invoke`
+ `local_start_api`

### Parameters
<a name="serverless-sam-cli-config-basics-parameters"></a>

**파라미터**는 키-값 페어로 지정됩니다.
+ **키**는 AWS SAMCLI명령 옵션 이름입니다. 
+ **값**은 지정할 값입니다.

키를 지정할 때는 긴 형식의 명령 옵션 이름을 사용하고 하이픈(`–`)을 밑줄(`_`)로 바꿉니다. 예를 들어, 다음과 같습니다.
+ `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`입니다. 여기에는 단일 문자열로 제공되는 여러 키-값 쌍을 포함하는 항목이 포함됩니다. 다음은 예제입니다.

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

  ```
  default:
    deploy:
      parameters:
        tags: foo=bar hello=world
  ```
+ 값 목록이 포함된 항목 또는 단일 명령으로 여러 번 사용할 수 있는 항목의 경우 해당 항목을 문자열 목록으로 지정합니다.

  다음은 예제입니다.

  ```
  $ 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 SAMCLI 대화형 흐름 중에 구성된 값은 대괄호(`[ ]`) 안에 표시됩니다. 이 값을 수정하면 AWS SAMCLI는 구성 파일을 업데이트합니다.

다음은 `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 SAMCLI는 다음과 같이 글로벌 값을 처리합니다.
+ 파라미터 값이 구성 파일 `global` 섹션에 있는 경우 AWS SAMCLI는 해당 값을 특정 명령 섹션에 기록하지 않습니다.
+ 파라미터 값이 특정 명령 `global` 섹션과 특정 명령 섹션 모두에 있는 경우 AWS SAMCLI는 특정 항목을 삭제하고 글로벌 값을 취합니다.