'람바다 파스타 만들어요?'

지난주 AWS Slack developer 채널에서 어떤 사람이 다시 물었다. "나는 어떻게 로컬에서 Lambda를 실행합니까?"그래, 이것은 효과적인 문제지만, 너는 단지 현지의 람바다 시뮬레이터가 필요하다고 생각할 수도 있다. 왜냐하면 너는 람바다 스파게티를 만들기 때문이다.이탈리아 코드는 비구조적이고 유지하기 어려운 원본 코드를 가리킨다.나는 당신에게 더욱 간단한 로컬 테스트 Lambda 방법을 보여 주었고, 로컬 Lambda가 실행될 때 최후의 선택이 되어야 한다고 생각하는 이유도 있습니다.무엇보다 이탈리아 파이톤, Gemelli Go, Tortellini Typescript의 예를 볼 수 있다.

람바다 스파게티 문제.
지나치게 삶은 스파게티는 너의 스파게티를 끈적끈적하게 만들 것이다.Lambda 함수를 전체로 실행하면 전체가 됩니다.
작성된 Lambda 코드의 길이가 약 세 개의 논리 단계를 초과하면 한 함수에서 인코딩해서는 안 됩니다!이것은 코드급의 단일 프로그래밍이므로 각 부분은 분리해야 한다.왜 그런지 알려줄게.

이 작은 바위의 설명도를 보세요.
모든 함수를 동시에 테스트할 수 있기 때문에 긴밀하게 결합됩니다.전체 블록 (lambda 프로세서) 을 테스트하고 오류를 얻으면, 프로그램의 어느 부분에서 오류가 발생했는지 알 수 없습니다.또한 Lambda 컴퓨팅 리소스를 시뮬레이션해야 합니다.lambci 또는 sam-cli를 사용하여 로컬에서 이 자원을 시뮬레이션할 수 있습니다.그러나 이것은 보통 로컬에서 docker 용기를 실행하는 것과 관련이 있으며, 이것은 시간을 증가시키고 추가 로컬 계산 자원을 소모할 수 있다.

솔루션의 첫 번째 섹션은 Lambda 리소스 없이 Lambda 함수를 실행하는 것입니다.
빠르고 간단한 테스트를 위해 Lambda 리소스/환경 없이 코드를 직접 호출할 수 있습니다.

구렁이
작은 Lambda python 함수가 있습니다.
import json

def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }
그것을 호출하고 되돌아오는 값을 얻으려면 작은 스크립트 "call.py"만 필요합니다.
import index

ret = index.lambda_handler("","")
print(ret)
그것을 실행하면 다음과 같은 결과를 얻을 수 있습니다.
python call.py
{'statusCode': 200, 'body': '"Hello from Lambda!"'}
그뿐이야, 용기는 필요 없어!
이는 serverless invoke local의 서버 프레임워크 없음과 같습니다.

새끼양 없는 자바스크립트
exports.handler = async (event) => {
    // TODO implement
    const response = {
        statusCode: 200,
        body: JSON.stringify(event.key1),
    };

    console.log(extract.extract(event))

    return response;
};
Lambda 프로세서입니다.
'use strict';

const fs = require('fs');
const lambda = require('./lambda')

let rawdata = fs.readFileSync('event.json');
let event= JSON.parse(rawdata);
lambda.handler(event);
이 코드를 사용하여 프로세서를 호출할 수 있습니다.수신 이벤트를 로컬 파일로 저장하면 직접 매개 변수로 사용할 수 있습니다.나중에 자세히 설명할게요.

해결 방안의 두 번째 부분은 독립 테스트 함수 중의 방법이다

만약 우리가 Lambda 함수를 가지고 계산한다면Body Mass Index.Lambda 분식을 사용하면 계산을 프로세서에 직접 쓸 수 있습니다.
더 좋은 방법은 별도로 테스트할 수 있는 작은 모듈을 작성하는 것입니다.
function bmi(age, weight, height) {
  height_m = height/100;
  bmi = weight / (height_m * height_m);
  bmi = Math.round(bmi);
  return bmi;
}
module.exports = bmi;
bmi.jslambda 프로세서에서 다음 메서드를 호출할 수 있습니다.
const bmi=require('./bmi');

// Handler
exports.handler = async function(event, context) {

  age = event.age;
  weight= event.weight;
  height= event.height;
  return bmi(age, weight, height);
}
index.js현재, 이 bmi 함수를 독립적으로 호출하고 테스트하거나, 단원 테스트를 더 잘 작성할 수 있습니다.
const bmi = require('./bmi');

test("Bmi Übergewicht", () => {
  expect(bmi(42,113,188)).toBe(32);
});
이 예는 jest 테스트 프레임워크를 사용하여 완성합니다.

파이썬 테스트
samecan은python으로 실현할 수 있습니다. 예를 들어 pytest

테스트하러 가다
자세한 내용은 go-on-aws

어떻게 실제 테스트 데이터를 얻습니까?
방법을 테스트하려면 함수에 테스트 매개 변수를 제공해야 합니다.AWS의 Lambda 함수는 JSON 이벤트를 통해 호출됩니다.어떻게 이 데이터를 얻습니까?

json 이벤트 가져오기
비결은 덤프 함수를 먼저 쓴 다음 이렇게 데이터를 저장하는 것이다.
exports.handler = async (event) => {
    console.log(JSON.stringify(event))
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda '),
    };
    return response;
};

AWS API 호출에서 테스트 데이터 가져오기
AWS 호출의 경우 AWS CLI를 사용하여 API를 호출하고 JSON을 파일로 저장할 수 있습니다.
예를 들어, 설명 인스턴스 API를 호출하려면 다음과 같이 하십시오.
aws ec2 describe-instances >event.json

테스트 수준
너의 테스트 개념은 부작용이 없는 특정한 기능을 테스트하는 것을 확보해야 한다.당신은 실제 생산 환경에 가까운 곳에서 테스트를 진행할 수 있습니다.
워크스테이션에서 로컬로 Lambda 함수를 실행하면 이러한 작업은 전체적으로 수행되지 않습니다.

특정 기능 테스트
이것은 단지 그것이 효과가 있는지 없는지를 시험하기 위해서이다.
  • 단일 기능 테스트
  • 인코딩 테스트부터 일정 시간 후 테스트 프레임워크 사용을 고려

  • Lambda를 하나로 테스트합니다.
    '모든 것이 협동하여 일할 수 있다'와'그것이 실제 환경에서 일하는가'를 시험하기 위해서다.
  • AWS
  • 에서 Lamvda 상향 조정
  • Lambda IAM 권한 테스트
  • 생산지연과 정시
  • 디스크 액세스 제한 /tmp 공간
  • CPU 코어
  • 에 제한
  • 메모리 제한

  • 요약
    비전체식이나 비이태리 국수식 프로그래밍을 시작하려면 학습 곡선을 피하려면 단원 테스트와 테스트 프레임워크부터 시작할 필요가 없다.lambda 프로세서에서 방법을 재구성하고 하나씩 호출하기만 하면 됩니다.이렇게 하면, 당신은 더욱 좋은 코드를 작성할 것입니다.
    나는 네가 일부 식욕을 돋우는 요리를 가지고 단원 테스트를 하기를 바란다. 로컬에서 전체 lambda를 실행하는 것이 아니라!그러니 트위터에서 저를 팔로우하고 GO-on-AWS 사이트를 방문해 주십시오. 아직 그렇게 하지 않으셨다면:).

    피드백 및 토론
    토론이 필요하시면 트위터에 연락 주세요.

    더 알아보기
    AWS에서 GOLANG을 사용하는 것에 대해 더 알고 싶으세요? -AWS에서 학습: here

    좋은 웹페이지 즐겨찾기