[amazon-web-services] AWS Lambda 예약 된 작업

아마존은 AWS Lambda ( http://aws.amazon.com/lambda/ )를 발표했다 .

제품 설명에는 다음이 포함됩니다.

예약 된 일들

AWS Lambda 함수는 외부 이벤트 타이머에 의해 트리거 될 수 있으므로 정기적으로 예약 된 유지 관리 시간 또는 피크가 아닌 시간 동안 함수를 실행할 수 있습니다. 예를 들어, 바쁜 시간 동안 야간 아카이브 정리를 수행하도록 AWS Lambda 함수를 트리거 할 수 있습니다.

이 글을 읽었을 때 마침내 “크론 같은”작업을 일관되게 수행 할 수있는 방법을 알았습니다. 매일 오후 5시에 특정 쿼리를 실행하고 싶습니다.

그러나 설명서의 어느 곳에서도 이것을 찾을 수 없습니다. 프로그래밍 이벤트 또는 다른 AWS 서비스의 이벤트에 대한 트리거 만 언급합니다.

내가 오해 했습니까? 아니면 누군가 나를 문서화 할 수 있습니까?



답변

2015 년 10 월 8 일에 추가 된 예정된 이벤트에 대한 기본 지원 :

AWS 블로그 게시물 에서 발표 한 바와 같이 , 스케줄링은 이제 ” CloudWatch Events-Schedule ” 이라는 이벤트 소스 유형 (트리거라고도 함) 으로 지원되며 속도 또는 크론 식으로 표현할 수 있습니다.

새로운 람다에 예정된 이벤트 추가

생성의 ‘트리거 구성’단계로 이동하고 ‘CloudWatch Event-Schedule’트리거를 지정하십시오. 아래 구성 예 :

UTC 5pm에 스케줄 된 이벤트를 작성하기위한 구성을 보여주는 이미지.

기존 람다에 예약 된 이벤트 추가

람다의 ‘트리거’탭으로 이동하여 ‘트리거 추가’를 선택하고 ‘CloudWatch Event-Schedule’트리거를 지정하십시오. SNS 트리거가있는 기존 람다가있는 스크린 샷 예 :

Lambda 콘솔에서 트리거 UI를 추가하기 위해 탐색하는 방법을 보여주는 이미지입니다.

일단로드되면이 트리거를 구성하기위한 UI는 위의 “새 람다에 예약 된 이벤트 추가”섹션의 스크린 샷과 동일합니다.

토론

예를 들어의 cron()대신 을 사용하고 싶을 것입니다 rate(). 람다의 Cron 표현식에는 모든 필드가 필요하며 UTC로 표시됩니다. 따라서 매일 오후 5시 (UTC)에 함수를 실행하려면 다음 cron 표현식을 사용하십시오.

cron(0 17 * * ? *)

추가 자료

노트

  • 이 기능이 처음 릴리스 된 이후이 이벤트 유형의 이름이 “Scheduled Event”에서 “CloudWatch Events-Schedule”로 변경되었습니다.
  • 이 기능이 릴리스되기 전에이 문제에 대한 권장 솔루션 ( 42 분 50 초에 “AWS Lambda 시작”에 따라 )은 SWF를 사용하여 타이머 를 생성하거나 외부 애플리케이션으로 타이머를 생성하는 것이 었습니다.
  • 예정된 이벤트 블로그 게시물이 나온 이후 Lambda UI가 점검되었으며 스크린 샷이 더 이상 정확하지 않습니다. 최신 개정판은 2017 년 3 월 10 일부터 업데이트 된 스크린 샷을 참조하십시오.

답변

이 게시물 이후로 다른 솔루션이 등장한 것 같습니다 . 저자가 SNS 주제 Unreliable Town Clock을 구독하도록 제안하는 UTC (Unreliable Town Clock)반복되는 AWS Lambda 호출 일정 . SWF 나 SNS를 사용하지 않았지만 SNS 솔루션이 더 간단한 것 같습니다. 여기 기사에서 발췌 한 내용이 있습니다.

신뢰할 수없는 도시 시계 (UTC)

Unreliable Town Clock (UTC)은 매 분기마다“chime”메시지를 모든 가입자에게 브로드 캐스트하는 새로운 무료 공개 SNS 주제 (Amazon Simple Notification Service)입니다. 차임벨을 AWS Lambda 함수, SQS 대기열 및 이메일 주소로 보낼 수 있습니다.

차임 속성을 사용하여 15 분마다 코드를 실행하거나 한 시간에 한 번 (예 : 분 == “00”일 때) 또는 하루에 한 번 (예 : 시간 == “00”및 분 = 일 때만) 코드를 실행할 수 있습니다. = “00”) 또는 다른 일련의 간격.

나중에 특정 시간에 한 번만 실행하려는 함수를 구독 할 수도 있습니다. 함수는 원하는 시간이 끝날 때까지 모든 호출을 무시하도록합니다. 시간이되면 작업을 수행 한 다음 SNS 주제에서 구독을 취소 할 수 있습니다.

Unreliable Town Clock에 코드를 연결하는 것은 빠르고 쉽습니다. 신청 절차 나 계정 생성이 필요하지 않습니다


답변

새로운 솔루션 : Lambda 예약 된 작업

Werner Vogel은 re : Invent에서 오늘 밤 (10/08)에 발표했습니다.

2015-10-08AWS Lambda 릴리스 정보 :

AWS Lambda 콘솔을 사용하여 정기적으로 예약 된 코드를 호출하도록 AWS Lambda를 설정할 수도 있습니다. 고정 비율 (시간, 일 또는 주 수)을 지정하거나 cron 표현식을 지정할 수 있습니다. 예를 들어 연습 5 : Lambda 함수를 사용하여 예약 된 이벤트 처리 (Python)를 참조하십시오 .


기존 솔루션 : AWS Data Pipeline을 사용한 예약

AWS Data Pipeline을 사용 하여 지정된 기간의 작업 을 예약 할 수 있습니다 . ShellCommandActivity로 파이프 라인을 구성 할 때 조치는 모든 명령이 될 수 있습니다 .

예를 들어 AWS CLI 명령을 실행하여 다음을 수행 할 수 있습니다.

  • SQS에 메시지를 보내십시오
  • 또는 Lambda 함수를 직접 호출 하십시오 ( invoke 참조 ).

AWS 콘솔에서 직접 AWS Data Pipeline 예약 작업을 쉽게 생성 할 수 있습니다 (예 : AWS CLI 명령 사용).

여기에 이미지 설명을 입력하십시오

API를 사용 하여 예약 을 정의 할 수도 있습니다 .

{
 "pipelineId": "df-0937003356ZJEXAMPLE",
 "pipelineObjects": [
    {
      "id": "Schedule",
      "name": "Schedule",
      "fields": [
        { "key": "startDateTime", "stringValue": "2012-12-12T00:00:00" },
        { "key": "type", "stringValue": "Schedule" },
        { "key": "period", "stringValue": "1 hour" },
        { "key": "endDateTime", "stringValue": "2012-12-21T18:00:00"  }
       ]
     }, {
      "id": "DoSomething",
      "name": "DoSomething",
      "fields": [
        { "key": "type", "stringValue": "ShellCommandActivity" },
        { "key": "command", "stringValue": "echo hello" },
        { "key": "schedule", "refValue": "Schedule" }
      ]
    }
  ]
}

제한 : 최소 예약 간격은 15 분입니다.

가격 : 한달에 약 $ 1.00.


답변

내가하는 방법은 다음과 같습니다.

  • 다음을 수행하는 Lambda를 만듭니다.

  • 다음에 대한 CloudWatch 경보 생성 : ApproximateNumberOfMessagesVisible> 1 분 동안 0

  • 경보에 SNS 주제 구독
  • SNS 주제에 Lambda 구독

이제 약 15 분 해상도의 타이머가 있습니다.

그런 다음 다른 Lambda 함수는 SNS 주제에 가입하고 15 분마다 호출됩니다.


답변

HTTP를 통해 람다 함수를 쉽게 트리거 할 수 있기 때문에 (예 : GET 또는 curl 사용) 간단한 해결책은 easycron과 같은 관리되는 CRON을 사용하는 것입니다 : https://www.easycron.com/ 람다 함수가 실행되도록 트리거하십시오.

동일한 문제가 발생하여 CRON 작업 자체에서 더 많은 유연성과 복잡성을 허용했기 때문에 파이썬으로 Google App Engine에서 cron 서비스를 실행했습니다.


답변

기능 페이지의 트리거 추가에서 CloudWatch Events를 추가하고 일정 유형으로 만들 수 있습니다.

여기에 이미지 설명을 입력하십시오


답변

cloudWatch 이벤트로 예약 할 수도 있습니다. 규칙 작성-> 대상 (람다) 첨부 및 규칙에 cron / rate wise 스케줄을 설정하십시오.