AWS Lambda 함수 디버그

Node.js의 맥락에서 Serverless Offline은 가장 널리 사용되는 Lambda AWS 로컬 디버깅 모듈입니다. “Serverless Framework”용 플러그인입니다(GitHub 별 26,804개). Serverless Framework는 JS 도구이자 AWS CloudFront 위에 있는 래퍼입니다. AWS SAM과 약간 유사하지만 명확한 구문과 “SAM”에 없는 기타 여러 추가 기능을 제공합니다. 다양한 AWS(Amazon) 서비스(S3, SNS, SQS 등)의 로직을 로컬에서 에뮬레이트하는 여러 플러그인도 사용할 수 있습니다. 다른 프로그래밍 언어(예: Python, Swift, PHP 및 Golang)용 플러그인도 “Serverless”용으로 존재합니다.

AWS(Amazon)에서 Lambda 디버깅: 간단한 예

AWS Lambda 함수의 로컬 에뮬레이션을 호출하고 디버깅하려면 먼저 서버리스 및 서버리스 오프라인이라는 두 가지 NPM 패키지를 설치해야 합니다. Lambda 함수 트리거(S3, SQS, API 게이트웨이 및 기타 서비스, AWS CLI를 통한 이러한 서비스와 컴퓨터 간의 연결)의 수로 인해 이 두 패키지는 실제 프로젝트에 충분하지 않습니다.

따라서 머신에서 AWS와 서버리스 간의 연결이 필요합니다. 이를 위해 다른 서버리스 플러그인 및 기능을 설치하고 사용해야 합니다. 그러나 API 게이트웨이가 트리거(대부분의 요청이 시작되는 기본 리소스)의 형태로 사용되는 한 간단한 함수로도 Lambda 디버깅에 충분합니다.

아래에서는 serverless.yml 파일의 각 줄을 설명하지 않습니다. 약간의 온라인 조사를 통해 추가 질문에 대한 답변을 매우 빠르게 찾을 수 있습니다. 또한 “Serverless Framework” 및 “Serverless Offline”은 우수한 문서로 지원됩니다.

설명을 위해 다음 단계를 수행해 보겠습니다.

1. 런타임 옵션이 Node.js 8.10과 동일하면 컴퓨터에서 작동합니다. 또한 Node.js 버전 8.0.0 이상(8.10이 최적임)을 사용해야 합니다. 따라서 다음 명령으로 버전을 확인하십시오.

결과가 “v8.0.0”보다 낮으면 필요한 버전을 설치하십시오. 이것은 여기 얻기 쉬운.

2. 간단한 프로젝트와 해당 종속 항목이 포함됩니다.

3. serverless.yml 및 lambda-foo.js 파일을 생성합니다.

4. serverless.yml 파일에 아래 코드를 추가하여 Serverless Framework 및 Serverless Offline Plugin을 구성합니다. 후자는 다음의 동작을 모방합니다. API 게이트웨이(프록시 서버):

서버리스.yml

5. 다음으로 Lambda 함수를 사용하여 lambda-foo.js 파일에 간단한 코드를 추가합니다. 이것은 API 게이트웨이의 호출에 반응합니다. “console.log”는 파일의 아무 곳에나 배치할 수 있습니다.

람다-foo.js

6. 필요한 경우 이 파일을 다른 API Gateway 요청 핸들러로 바꿀 수도 있습니다.

7. 감시 모드에서 AWS 에뮬레이션을 시작합니다.

이것이 API 게이트웨이 에뮬레이션 프로세스가 localhost:1221에 나타나는 방식입니다.

8. 마지막 단계는 다음과 같습니다. GET localhost:1221/getresponse를 호출하고 getResponse 함수의 디버그 출력을 확인합니다. 이것은 서버리스를 시작한 터미널 창에서 수행됩니다.

서버리스 프레임워크가 사용하기 쉽다는 것을 금방 알게 될 것입니다. 그러나 가장 큰 단점을 잊지 말아야 합니다. 코드의 중단점은 배포된 버전과 동일한 출력이 없기 때문에 신뢰할 수 있는 가이드가 아닙니다. 런타임 환경은 비슷하지만 완전히 동일하지는 않습니다.

요약

1. Lambda(Amazon) AWS 함수는 격리된 환경에서 작동합니다. 이로 인해 디버깅이 점점 더 복잡해집니다. 이를 보완하기 위해 기능은 배포될 때까지 온프레미스에서 실행되고 배포 후 클라우드에서 실행될 수 있습니다.

2. 온프레미스 도구와 클라우드 배포 후 통신 방법을 명확하게 구분하는 것이 중요합니다.

3. 개발 단계에서 서버리스 오프라인 또는 서버리스 애플리케이션 모델을 사용하여 코드를 모니터링하고 디버깅합니다.

4. 서버리스와 SAM 모두 기능을 수동으로 테스트할 수 있습니다. AWS(Amazon) 클라우드에 대한 배포 및 추가 요청에 대한 비용이 없습니다.

Leave a Comment