2017-12-11 14 views
0

3 AWS 람다 함수 (볼륨 백업 모니터링 기능)가 있습니다. 각 함수가 단 하나의 루프 만 가지도록 3 가지 함수를 만들었으므로 실행 시간 (및 청구액)이 적습니다. 각 람다 함수는 SQS에서 다음 람다 함수를 호출합니다. 또한 대기열에서 메시지를 가져와 요청 된 람다 함수를 실행하는 람다 함수가 있습니다.AWS 람다 일정 - 람다 범위 내에서 일정을 사용/사용 중지 할 수 있습니까?

제 질문은 일정 계획에 대한 것입니다. 원하는 주파수 (예 : 10 분마다)로 실행되도록 Lambda1을 예약 할 수 있습니다. 대기열을 읽는 람다를 어떻게 예약합니까? n 분마다 실행하도록 예약 할 수 있지만 대기열이 비어지면 하루가 끝날 때까지 실행이 필요 없습니다. 어떻게 든 람다 함수에서 AWS 람다 일정을 비활성화 할 수 있습니까? 그렇지 않다면 무엇이 대안입니까?

답변

0

SQS는 람다를 직접 트리거 할 수 없습니다. Lambda는 Cloudwatch Timer를 사용하여 SQS를 폴링해야합니다. 그러나 나는 그것이 당신의 문제를 해결하지 않는다는 것을 안다. 하나의 옵션을 시도해 볼 수는 있지만 최선의 방법으로 제안 할 수는 없으며 비용 효율적인 방법이 아닙니다.

SQS에 메시지를 게시하는 동안 SQS에 메시지를 SNS에 게시 할 트리거를 추가하십시오. 이제 SNS에서 람다 함수가 실행되거나 메시지를 직접 SNS에 게시하고 람다를 트리거 할 수 있습니다.

더 좋은 또 다른 옵션은 kinesis입니다. 샤드 (shard)를 생성하고 일괄 처리를 수행함으로써 비용면에서 더 효과적이기 때문입니다. 또한 그것은 람다에게 방아쇠를 당긴다.

1

큐 (SQS) 기능이 필요합니까? 그렇지 않다면 SNS를 사용하는 것이 좋습니다 (키네 시스 스트림과 비교하면 가격이 저렴합니다). 그러면 람다를 직접 실행할 수 있습니다. 그렇게하면 대기열을 들여다보고 다른 람다를 트리거하는 람다를 피할 수 있습니다.이 람다는 반 패턴처럼 느껴집니다.

주의 : SNS는 AWS 내부에서 최소한 한 번 보증 (메시지를 여러 번 수신 할 수 있음) 할 수 있으므로 Samba를 사용해야합니다. 람다는 멱등환이어야합니다.