PHP 편집자 Xinyi는 "go aws-lambda 및 terraform의 실행 형식 오류"라는 일반적인 문제를 소개합니다. aws-lambda 및 terraform을 사용하여 함수를 생성할 때 Exec 형식 오류 문제가 발생할 수 있습니다. 이는 함수 코드 또는 Terraform 구성의 오류로 인한 것일 수 있습니다. 이 문서는 aws-lambda 함수를 성공적으로 생성하고 실행할 수 있도록 이 문제를 이해하고 해결하는 데 도움이 될 것입니다.
실제로 terraform을 사용하여 golang 람다를 호출할 때 매우 드문 문제에 직면했습니다. 그래서 기본적으로 저는 terraform을 사용하여 람다, golang이 포함된 API 게이트웨이와 같은 모든 리소스를 배포합니다. 문제는 terraform을 사용하여 golang 람다 바이너리 .zip 파일을 람다에 배포할 때 경로를 사용하여 요청을 확인할 때 exec 형식 오류가 반환된다는 것입니다. 간단한 js 람다 함수를 테스트한 결과 Terraform의 모든 코드는 훌륭하고 형식이 지정되었으며 제대로 작동합니다. 바이너리 아키텍처 문제인 것 같지만, 저는 aws에서 사용하는 람다와 동일한 바이너리 아키텍처를 사용하고 있습니다. 누구든지 도움을 줄 수 있다면 Provide.al2를 사용하여 동일한 문제가 있었고 exec 형식 오류가 발생했습니다.
몇 가지 디버깅 정보
1-디렉토리 구조
으아악2- Terraform 람다 함수 리소스
으아악3-빌드 명령
으아악이렇게 하면 빌드 파일 main이 생성되고 람다 terraform 파일에서 사용할 수 있도록 main.zip으로 패키징됩니다. (amd64는 x86_64의 실행 파일입니다)
amd64를 사용하여 빌드하는 것과 같은 솔루션을 제공하려고 시도했지만 람다 호출에 대해 알지 못하고 go에서 이 실행 파일로 바이너리를 실행할 수 없다고 말합니다.
환경 설정은 정확하지만 사용자가 틀렸습니다. 명령으로 설정합니다.
으아악이 동작cd
命令设置 GOOS、GOARCH 和 CGO_ENABLED,而不是为 go build
이 설정되었습니다.
이것을 시도해 보세요:
으아악위 내용은 Go aws-lambda 및 terraform의 exec 형식 오류의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!