AWS Lambda 시간 초과 파악

6091 단어 lambdaserverlessaws
(클릭해주세요 :D)

어이,

AWS Lambda는 아마도 가장 유명한 AWS 컴퓨팅 서비스 중 하나일 것입니다. 사실 Lambda는 비즈니스 로직을 매우 쉽고 간단하게 구현할 수 있기 때문에 제가 가장 좋아하는 AWS 서비스이기도 합니다. 하지만 Lambda의 timeout이 너무 낮아서 코드가 완전히 실행되지 않는 문제가 몇 번 있었습니다. 이 오류를 디버깅하거나 포착하는 것도 종종 힘들고 성가신 일이었습니다. 저에게 좋은 솔루션은 Lambda Duration Metrics를 사용하여 경보를 정의하는 것이었습니다.

import * as cw from 'aws-cdk-lib/aws-cloudwatch';
import * as lambdajs from 'aws-cdk-lib/aws-lambda-nodejs';
import * as sns from 'aws-cdk-lib/aws-sns';
import * as subscriptions from 'aws-cdk-lib/aws-sns-subscriptions';

const exampleLambda = new lambdajs.NodejsFunction(this, 'ExampleLambda', {
    timeout: core.Duration.seconds(10),
});

new timeoutAlarm - new cw.Alarm(this, 'TimeoutAlarm') {
    metric: exampleLambda.metricDuration({ statistic: 'max' }),
    threshold: exampleLambda.timeout?.toMilliseconds() ?? 1,
    evaluationPeriods: 1,
}

const topic = new sns.Topic(
    this,
    'ErrorTopic',
);
topic.addSubscription(
    new subscriptions.EmailSubscription('[email protected]')
);
timeoutAlarm.addAlarmAction(
    new actions.SnsAction(topic)
);


여기에서 볼 수 있듯이 처음에 간단한 Lambda JS 함수가 생성됩니다. 그런데 NodejsFunction construct도 TypeScript를 지원합니다. 그런 다음 지속 시간 지표와 구성할 Lambda의 시간 초과 값을 사용하는 시간 초과 경보가 정의됩니다.

그런 다음 EmailSubscription을 사용하여 트리거된 경보가 이메일로 전달되는 오류 주제가 생성됩니다.

장점



이 솔루션의 장점은 Lambda 코드를 수정할 필요가 없으며 인프라 수준 또는 AWS CDK 수준에서 문제가 해결된다는 것입니다. 이 솔루션은 Python 또는 Java와 같은 다른 Lambda 언어에도 적용할 수 있습니다.

결론



Lambda 시간 초과 캐싱은 성가신 일입니다. 약간의 AWS CDK 코드와 Lambda Duration 메트릭을 사용하면 문제가 빠르게 해결됩니다.

저는 오픈 소스 프로젝트 작업을 좋아합니다. 이미 https://github.com/mmuller88에서 사용할 수 있는 많은 것들이 있습니다. 내 작업과 내 블로그 게시물이 마음에 들면 다음에서 나를 지원하는 것을 고려하십시오.



또는



그리고 내 사이트를 방문하는 것을 잊지 마세요

좋은 웹페이지 즐겨찾기