

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

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

AWS Serverless Application Model 명령줄 인터페이스(AWS SAM CLI)는 서버리스 애플리케이션의 로컬 개발 및 테스트를 위한 명령줄 도구입니다. 를 AWS SAM CLI 사용하면 클라우드에 배포하기 전에 서버리스 애플리케이션을 로컬에서 빌드, 변환, 배포, 디버깅, 패키징, 초기화 및 동기화할 수 있습니다.

AWS SAMCLI은(는) 다양한 프레임워크 및 코드형 인프라(IaC) 도구를 사용하여 정의된 서버리스 애플리케이션과 함께 작동하며, 지원 수준은 다음과 같이 다릅니다.
+ **AWS SAM 템플릿** - 로컬 테스트, 디버깅, 패키징 및 배포 기능을 포함한 전체 기능 세트를 기본적으로 지원합니다.
+ **AWS CDK 애플리케이션** - cdk synth 명령을 사용하여 AWS CDK 애플리케이션을 CloudFormation 템플릿에 합성한 후 Lambda 함수의 로컬 테스트를 지원합니다.
+ **CloudFormation 템플릿** -는 표준 CloudFormation 템플릿에 정의된 서버리스 리소스를 AWS SAM CloudFormation지원하므로 직접적인 호환성을 제공합니다.
+ **Terraform 애플리케이션** - Lambda 함수의 빌드 및 로컬 테스트에 대한 제한된 지원을 제공합니다. Terraform 정의 Lambda 함수를 나타내는 AWS SAM 템플릿 아티팩트를 생성해야 합니다.

가장 포괄적인 기능 지원과 간소화된 개발자 경험을 위해 기본 AWS SAM 템플릿을 사용하는 것이 좋습니다.

**Topics**
+ [AWS SAMCLI 명령을 문서화하는 방법](#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 SAMCLI 명령을 문서화하는 방법
<a name="using-sam-cli-documentation"></a>

AWS SAMCLI 명령은 다음 형식을 사용하여 문서화됩니다.
+ **프롬프트** - Linux 프롬프트는 기본적으로 문서화되며 (`$ `)로 표시됩니다. Windows와 관련된 명령의 경우 (`> `)가 프롬프트로 사용됩니다. 명령을 입력할 때 프롬프트를 포함시키지 마세요.
+ **디렉터리** - 특정 디렉터리에서 명령을 실행해야 하는 경우 프롬프트 기호 앞에 디렉터리 이름이 표시됩니다.
+ **사용자 입력** - 명령줄에 입력하는 명령 텍스트는 **user input**으로 형식이 지정됩니다.
+ **교체 가능한 텍스트** - 파일 이름 및 파라미터와 같은 변수 텍스트는 *교체 가능한 텍스트* 형식으로 지정됩니다. 특정 키보드 입력이 필요한 여러 줄 명령에서는 키보드 명령도 대체 가능한 텍스트로 표시될 수 있습니다. 예를 들면 *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>

의 이점 중 하나는 반복적인 작업을 제거하여 개발자의 시간을 최적화한다는 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 SAMCLI구성 파일](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>

 AWS SAM CLI 구성 파일(파일 이름 `samconfig`)은 일반적으로 TOML 구조를 사용하지만 YAML 형식일 수도 있는 텍스트 파일입니다. AWS 빠른 시작 템플릿을 사용하는 경우이 파일은 **sam init** 명령을 실행할 때 생성됩니다. 애플리케이션을 배포할 때 **sam deploy -\$1-guided** 명령을 사용하여 이 파일을 업데이트할 수 있습니다.

기본값을 사용하여 배포를 완료하면 `samconfig` 파일에 `default`라는 프로파일이 포함됩니다. **deploy** 명령을 다시 실행하면가이 프로파일의 저장된 구성 설정을 AWS SAM 적용합니다.

`samconfig` 파일의 이점은 배포 명령 외에도 사용 가능한 다른 명령에 대한 구성 설정을 AWS SAM 저장하는 것입니다. 새 배포에서 생성된 이러한 값 외에도를 사용하여 개발자 워크플로의 다른 측면을 단순화할 수 있도록 `samconfig` 파일에 설정할 수 있는 여러 속성이 있습니다 AWS SAM CLI.

## 프로젝트 설정 구성
<a name="using-sam-cli-configure-project"></a>

에 사용할 구성 파일에서 명령 파라미터 값과 같은 AWS SAM CLI 프로젝트별 설정을 지정할 수 있습니다 AWS SAM CLI. 이 구성에 대한 자세한 정보는 [AWS SAMCLI구성 파일](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. 구성 파일의 파라미터 섹션에서 파라미터 값을 키-값 쌍으로 지정합니다.

   다음은 `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 SAMCLI 명령을 지정합니다. 모든 AWS SAMCLI 명령의 파라미터 값을 구성하려면 `global` 식별자를 사용합니다.

   다음은 `default` 환경 `sam deploy` 명령에 대한 파라미터 값을 지정하는 예제입니다.

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

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

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

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

------

   다음은 `default` 환경의 모든 AWS SAMCLI 명령에 대한 파라미터 값을 지정하는 예입니다.

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

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

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

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

------

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

자세한 내용은 [구성 파일 생성 및 수정](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 SAMCLI와 함께 사용할 수 있습니다. 자세한 내용은 *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/ko_kr/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/ko_kr/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/ko_kr/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/ko_kr/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/ko_kr/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/ko_kr/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/ko_kr/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 

# AWS SAM CLI을(를) 사용한 로컬 테스트
<a name="using-sam-cli-local-testing"></a>

 AWS SAMCLI은(는) 다양한 코드형 인프라(IaC) 도구에서 서버리스 애플리케이션을 로컬로 테스트할 수 있도록 지원합니다. 이 가이드는 다양한 IaC 프레임워크와 함께 AWS SAM CLI 을(를) 사용하여 로컬 테스트를 수행하는 방법을 설명합니다.

 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 Template Anatomy](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 AWS SAM CLIsynth 명령을 사용하여 AWS CDK 애플리케이션을 CloudFormation 템플릿으로 합성한 후를 사용하여 로컬에서 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)
+ [AWS SAM CLI을(를) Terraform과 함께 사용하여 로컬 디버깅 및 테스트](using-samcli-terraform.md)