

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

# AWS SAMCLI 문제 해결
<a name="sam-cli-troubleshooting"></a>

이 섹션에서는 AWS Serverless Application Model 명령줄 인터페이스()를 사용, 설치 및 관리할 때 오류 메시지를 해결하는 방법에 대한 세부 정보를 제공합니다AWS SAM CLI.

**Topics**
+ [

## 문제 해결
](#install-sam-cli-troubleshooting)
+ [

## 오류 메시지
](#sam-cli-troubleshoot-messages)
+ [

## 경고 메시지
](#sam-cli-troubleshoot-warning)

## 문제 해결
<a name="install-sam-cli-troubleshooting"></a>

관련 문제 해결 지침은 섹션을 AWS SAM CLI참조하세요[설치 오류 문제 해결](install-sam-cli.md#sam-cli-troubleshoot-install).

## 오류 메시지
<a name="sam-cli-troubleshoot-messages"></a>

### curl 오류: “curl: (6) 해결할 수 없습니다:...”
<a name="sam-cli-troubleshoot-messages-curl"></a>

API Gateway 엔드포인트를 호출하려고 하면 다음 오류가 표시됩니다.

```
curl: (6) Could not resolve: endpointdomain (Domain name not found)
```

이는 유효하지 않은 도메인으로 요청을 보내려고 시도했음을 의미합니다. 이는 서버리스 애플리케이션이 성공적으로 배포되지 않았거나 **curl** 명령에 오타가 있는 경우 발생할 수 있습니다. CloudFormation 콘솔 또는를 사용하여 애플리케이션이 성공적으로 배포되었는지 AWS CLI확인하고 **curl** 명령이 올바른지 확인합니다.

### 오류: 지정된 스택 이름으로 정확한 리소스 정보를 찾을 수 없습니다.
<a name="sam-cli-troubleshoot-messages-exact-resource"></a>

단일 Lambda 함수 리소스가 포함된 애플리케이션에서 `sam remote invoke` 명령을 실행하면 다음 오류가 표시됩니다.

```
Error: Can't find exact resource information with given <stack-name>. Please provide full resource ARN or --stack-name to resolve the ambiguity.
```

**가능한 원인: `--stack-name` 옵션을 제공하지 않았습니다.**  
함수 ARN이 인수로 제공되지 않은 경우 `sam remote invoke` 명령을 실행하려면 `--stack-name` 옵션을 제공해야 합니다.

**해결 방법: `--stack-name` 옵션을 제공합니다.**  
다음은 예제입니다.  

```
$ sam remote invoke --stack-name sam-app

Invoking Lambda Function HelloWorldFunction                                                                                                                                                                                                                     
START RequestId: 40593abb-e1ad-4d99-87bd-ac032e364e82 Version: $LATEST
END RequestId: 40593abb-e1ad-4d99-87bd-ac032e364e82
REPORT RequestId: 40593abb-e1ad-4d99-87bd-ac032e364e82  Duration: 11.31 ms      Billed Duration: 12 ms  Memory Size: 128 MB     Max Memory Used: 67 MB  Init Duration: 171.71 ms
{"statusCode":200,"body":"{\"message\":\"hello world\"}"}%
```

### 오류: 스택 이름에서 리소스 정보를 찾을 수 없습니다.
<a name="sam-cli-troubleshoot-messages-stack-name"></a>

`sam remote invoke` 명령을 실행하고 Lambda 함수 ARN을 인수로 전달하면 다음 오류가 표시됩니다.

```
Error: Can't find resource information from stack name (<stack-name>) and resource id (<function-id>)
```

**가능한 원인: `samconfig.toml` 파일에 스택 이름 값이 정의되어 있습니다.**  
 AWS SAMCLI는 먼저 `samconfig.toml` 파일에 스택 이름이 있는지 확인합니다. 지정된 경우 인수는 논리적 ID 값으로 전달됩니다.

**해결 방법: 함수의 논리적 ID를 대신 전달합니다.**  
함수의 ARN 대신 함수의 논리적 ID를 인수로 전달할 수 있습니다.

**해결 방법: 구성 파일에서 스택 이름 값을 제거합니다.**  
구성 파일에서 스택 이름 값을 제거할 수 있습니다. 이렇게 하면 AWS SAMCLI가 함수 ARN을 논리적 ID 값으로 전달하는 것을 방지할 수 있습니다.  
구성 파일을 수정한 후 `sam build`를 실행합니다.

### 오류: 관리형 리소스를 생성하지 못했습니다. 자격 증명을 찾을 수 없습니다.
<a name="sam-cli-troubleshoot-messages-credentials"></a>

**sam deploy** 명령을 실행할 때 다음 오류가 표시됩니다.

```
Error: Failed to create managed resources: Unable to locate credentials
```

즉,에서 AWS 서비스를 호출할 수 있도록 AWS AWS SAM CLI 자격 증명을 설정하지 않았습니다. 이 문제를 해결하려면 AWS 자격 증명을 설정해야 합니다. 자세한 내용은 [AWS 자격 증명 설정](serverless-getting-started-set-up-credentials.md) 단원을 참조하십시오.

### 오류: Windows의 FileNotFoundError
<a name="sam-cli-troubleshoot-messages-filenotfound-win"></a>

Windows의 AWS SAM CLI에서 명령을 실행할 때 다음 오류가 발생할 수 있습니다.

```
Error: FileNotFoundError
```

가능한 원인:는 AWS SAM CLI Windows 최대 경로 제한을 초과하는 파일 경로와 상호 작용할 수 있습니다.

해결 방법: 이 문제를 해결하기 위해서는 새로운 긴 경로 동작을 활성화해야 합니다. 이렇게 하려면 Microsoft Windows 앱 개발 설명서**의 [Windows 10, 버전 1607 이상에서 긴 경로 사용 활성화](https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=powershell#enable-long-paths-in-windows-10-version-1607-and-later)를 참조하세요.

### 오류: pip의 종속성해석기...
<a name="sam-cli-troubleshoot-messages-pip"></a>

*오류 텍스트 예:*

```
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. 
aws-sam-cli 1.58.0 requires aws-sam-translator==1.51.0, but you have aws-sam-translator 1.58.0 which is incompatible. 
aws-sam-cli 1.58.0 requires typing-extensions==3.10.0.0, but you have typing-extensions 4.4.0 which is incompatible.
```

**가능한 원인: pip를 사용하여 패키지를 설치하는 경우 패키지 간 종속성이 충돌할 수 있습니다.**  
각 `aws-sam-cli` 패키지의 버전은 `aws-sam-translator` 패키지 버전에 따라 달라집니다. 예를 들어 `aws-sam-cli` v1.58.0은 `aws-sam-translator` v1.51.0에 따라 달라질 수 있습니다.  
pip를 사용하여 AWS SAMCLI를 설치한 다음 새로운 버전의 `aws-sam-translator`를 사용하는 다른 패키지를 설치하면 다음과 같은 상황이 발생합니다.  
+ 새로운 버전의 `aws-sam-translator`가 설치됩니다.
+ `aws-sam-cli`의 현재 버전과 `aws-sam-translator`의 새로운 버전은 호환되지 않을 수 있습니다.
+ 를 사용하면 AWS SAM CLI종속성 해석기 오류가 발생합니다.

**솔루션**

1.  AWS SAMCLI 네이티브 패키지 설치 프로그램을 사용합니다.

   1. pip를 사용하여 AWS SAM CLI 제거 지침은 [AWS SAM CLI 제거](manage-sam-cli-versions.md#manage-sam-cli-versions-uninstall) 섹션을 참조하세요.

   1. 네이티브 패키지 설치 프로그램을 사용하여 AWS SAMCLI를 설치합니다. 지침은 [AWS SAM CLI 설치](install-sam-cli.md) 섹션을 참조하세요.

   1. 필요한 경우 네이티브 패키지 설치 프로그램을 사용하여 AWS SAMCLI를 업그레이드합니다. 지침은 [AWS SAMCLI업그레이드](manage-sam-cli-versions.md#manage-sam-cli-versions-upgrade) 섹션을 참조하세요.

1. pip를 사용해야 하는 경우 가상 환경에 AWS SAM CLI를 설치하는 것이 좋습니다. 이렇게 하면 설치 환경이 깔끔해지고 오류 발생 시 격리된 환경이 보장됩니다. 지침은 [AWS SAM을 이용하여 가상 환경에 CLI pip 설치](manage-sam-cli-versions.md#manage-sam-cli-versions-install-virtual) 섹션을 참조하세요.

### 오류: '원격' 명령이 없습니다.
<a name="sam-cli-troubleshoot-messages-command-remote"></a>

`sam remote invoke` 명령을 실행할 때 다음 오류가 표시됩니다.

```
$ sam remote invoke ...
2023-06-20 08:15:07 Command remote not available
Usage: sam [OPTIONS] COMMAND [ARGS]...
Try 'sam -h' for help.

Error: No such command 'remote'.
```

**가능한 원인: AWS SAMCLI의 버전이 오래된 버전입니다.**  
이 `sam remote invoke` 명령은 AWS SAM CLI 버전 1.88.0에서 AWS SAM CLI 릴리스되었습니다. 버전은 `sam --version` 명령을 통해 확인할 수 있습니다.

**해결 방법: AWS SAMCLI를 최신 버전으로 업그레이드합니다.**  
지침은 [AWS SAMCLI업그레이드](manage-sam-cli-versions.md#manage-sam-cli-versions-upgrade) 섹션을 참조하세요.

### 오류: 로컬에서 AWS SAM 프로젝트를 실행하려면가 필요합니다Docker. 설치하셨습니까?
<a name="sam-cli-troubleshoot-messages-docker"></a>

**sam local start-api** 명령을 실행할 때 다음 오류가 표시됩니다.

```
Error: Running AWS SAM projects locally requires Docker. Have you got it installed?
```

Docker가 제대로 설치되지 않았음을 의미합니다. 애플리케이션을 로컬에서 테스트하는 데 Docker가 필요합니다. 이 문제를 해결하려면 개발 호스트용 Docker 설치 지침을 따르세요. 자세한 내용은 [Docker 설치](install-docker.md) 단원을 참조하십시오.

### 오류: 보안 제약 조건이 충족되지 않음
<a name="sam-cli-troubleshoot-messages-security-constraints"></a>

**sam deploy --guided** 실행 중에 질문 `Function may not have authorization defined, Is this okay? [y/N]`을 묻는 메시지가 표시됩니다. 이 프롬프트에 **N**(기본 응답)으로 응답하면 다음 오류가 표시됩니다.

```
Error: Security Constraints Not Satisfied
```

이 프롬프트는 배포하려는 애플리케이션에 공개적으로 액세스할 수 있는 Amazon API Gateway API가 승인 없이 구성되어 있을 수 있다는 메시지를 표시합니다. 이 프롬프트에 **N**으로 응답하는 것은 괜찮지 않다고 말하는 것입니다.

이 문제를 해결할 수 있도록 다음 옵션이 제공됩니다.
+ 권한 부여를 통해 애플리케이션을 구성하세요. 권한 부여 구성에 대한 자세한 내용은을 잠조하세요[AWS SAM 템플릿을 사용하여 API 액세스 제어](serverless-controlling-access-to-apis.md)
+ 승인 없이 공개적으로 액세스할 수 있는 API 엔드포인트를 만들려면 배포를 다시 시작하고 이 질문에 **Y**로 응답하여 배포해도 괜찮다는 의사를 표시하세요.

### 인증 토큰 누락
<a name="sam-cli-troubleshoot-messages-auth-token"></a>

API Gateway 엔드포인트를 호출하려고 하면 다음 오류가 표시됩니다.

```
{"message":"Missing Authentication Token"}
```

이는 올바른 도메인으로 요청을 보내려고 했지만 URI를 인식할 수 없음을 의미합니다. 이 문제를 해결하려면 전체 URL을 확인하고 올바른 URL로 **curl** 명령을 업데이트합니다.

## 경고 메시지
<a name="sam-cli-troubleshoot-warning"></a>

### 경고: ... AWS 에 대한 Homebrew 설치 프로그램을 더 이상 유지 관리하지 않습니다 AWS SAM .
<a name="sam-cli-troubleshoot-warning-homebrew"></a>

Homebrew를 사용하여 AWS SAMCLI를 설치할 때 다음과 같은 경고 메시지가 나타납니다.

```
Warning: ... AWS will no longer maintain the Homebrew installer for AWS SAM (aws/tap/aws-sam-cli). 
				For AWS supported installations, use the first party installers ...
```

**잠재적 원인: 더 이상 Homebrew 지원을 유지하지 AWS 않습니다.**  
2023년 9월부터 AWS 는 더 이상에 대한 Homebrew 설치 프로그램을 유지 관리하지 않습니다 AWS SAM CLI.  

**해결 방법: AWS 지원되는 설치 방법을 사용합니다.**
+  AWS 지원되는 설치 방법은에서 찾을 수 있습니다[AWS SAM CLI 설치](install-sam-cli.md).

**해결 방법: 계속 Homebrew를 사용하려면 커뮤니티 관리 설치 프로그램을 사용합니다.**
+ 재량에 따라 커뮤니티 관리 Homebrew 설치 프로그램을 사용할 수 있습니다. 지침은 [AWS SAM로 CLI Homebrew 관리](manage-sam-cli-versions.md#manage-sam-cli-versions-homebrew) 단원을 참조하세요.