AWS SAMCLI 문제 해결 - AWS Serverless Application Model

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

AWS SAMCLI 문제 해결

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

문제 해결

AWS SAM CLI 관련 문제 해결 지침은 설치 오류 문제 해결 섹션을 참조하세요.

오류 메시지

curl 오류: “curl: (6) 해결할 수 없습니다:...”

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

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

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

오류: 지정된 스택 이름으로 정확한 리소스 정보를 찾을 수 없습니다.

단일 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\"}"}%

오류: 스택 이름에서 리소스 정보를 찾을 수 없습니다.

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

Error: Can't find resource information from stack name (<stack-name>) and resource id (<function-id>)
가능한 원인: samconfig.toml 파일에 스택 이름 값이 정의되어 있습니다.

AWS SAM CLI는 먼저 samconfig.toml 파일에 스택 이름이 있는지 확인합니다. 지정된 경우 인수는 논리적 ID 값으로 전달됩니다.

해결 방법: 함수의 논리적 ID를 대신 전달합니다.

함수의 ARN 대신 함수의 논리적 ID를 인수로 전달할 수 있습니다.

해결 방법: 구성 파일에서 스택 이름 값을 제거합니다.

구성 파일에서 스택 이름 값을 제거할 수 있습니다. 이렇게 하면 AWS SAM CLI가 함수 ARN을 논리적 ID 값으로 전달하는 것을 방지할 수 있습니다.

구성 파일을 수정한 후 sam build를 실행합니다.

오류: 관리형 리소스를 생성하지 못했습니다. 자격 증명을 찾을 수 없습니다.

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

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

즉, AWS SAM CLI가 AWS 서비스를 호출할 수 있도록 AWS 보안 인증을 설정하지 않았습니다. 이 문제를 해결하려면 AWS 보안 인증을 설정해야 합니다. 자세한 내용은 AWS 보안 인증 설정 단원을 참조하십시오.

오류: Windows의 FileNotFoundError

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

Error: FileNotFoundError

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

해결 방법: 이 문제를 해결하기 위해서는 새로운 긴 경로 동작을 활성화해야 합니다. 이렇게 하려면 Microsoft Windows 앱 개발 설명서Windows 10, 버전 1607 이상에서 긴 경로 사용 활성화를 참조하세요.

오류: pip의 종속성해석기...

오류 텍스트 예:

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 SAM CLI를 설치한 다음 새로운 버전의 aws-sam-translator를 사용하는 다른 패키지를 설치하면 다음과 같은 상황이 발생합니다.

  • 새로운 버전의 aws-sam-translator가 설치됩니다.

  • aws-sam-cli의 현재 버전과 aws-sam-translator의 새로운 버전은 호환되지 않을 수 있습니다.

  • AWS SAM CLI를 사용하면 종속성 해석기 오류가 발생합니다.

솔루션
  1. AWS SAM CLI 네이티브 패키지 설치 프로그램을 사용합니다.

    1. pip를 사용하여 AWS SAM CLI 제거 지침은 AWS SAM CLI 제거 단원을 참조하십시오.

    2. 네이티브 패키지 설치 프로그램을 사용하여 AWS SAM CLI를 설치합니다. 지침은 AWS SAM CLI 설치 섹션을 참조하세요.

    3. 필요한 경우 네이티브 패키지 설치 프로그램을 사용하여 AWS SAM CLI를 업그레이드합니다. 지침은 AWS SAMCLI업그레이드 단원을 참조하십시오.

  2. pip를 사용해야 하는 경우 가상 환경에 AWS SAM CLI를 설치하는 것이 좋습니다. 이렇게 하면 설치 환경이 깔끔해지고 오류 발생 시 격리된 환경이 보장됩니다. 지침은 AWS SAM을 이용하여 가상 환경에 CLIpip 설치 단원을 참조하십시오.

오류: '원격' 명령이 없습니다.

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 SAM CLI의 버전이 오래된 버전입니다.

이 AWS SAM CLI sam remote invoke 명령은 AWS SAM CLI 버전 1.88.0과 함께 릴리스되었습니다. 버전은 sam --version 명령을 통해 확인할 수 있습니다.

해결 방법: AWS SAM CLI를 최신 버전으로 업그레이드합니다.

지침은 AWS SAMCLI업그레이드 단원을 참조하십시오.

오류: AWS SAM 프로젝트를 로컬에서 실행해야 Docker 합니다. 설치하셨습니까?

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

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

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

오류: 보안 제약 조건이 충족되지 않음

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 액세스 제어

  • 승인 없이 공개적으로 액세스할 수 있는 API 엔드포인트를 만들려면 배포를 다시 시작하고 이 질문에 Y로 응답하여 배포해도 괜찮다는 의사를 표시하세요.

인증 토큰 누락

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

{"message":"Missing Authentication Token"}

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

경고 메시지

경고:... AWS더 이상 Homebrew 설치 프로그램을 유지 관리하지 않습니다... AWS SAM

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

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 ...
잠재적 원인: AWS가 Homebrew 지원을 더 이상 유지할 수 없습니다.

2023년 9월부터 AWS는 더 이상 AWS SAM CLI의 Homebrew 설치 프로그램을 유지 관리하지 않습니다.

해결 방법: AWS 지원 설치 방법을 사용합니다.
해결 방법: 계속 Homebrew를 사용하려면 커뮤니티 관리 설치 프로그램을 사용합니다.
  • 재량에 따라 커뮤니티 관리 Homebrew 설치 프로그램을 사용할 수 있습니다. 지침은 AWS SAM로 CLIHomebrew 관리 단원을 참조하세요.