【AWS】Lambda 함수를 격주(2주마다)로 자동 실행
소개
AWS Lambda 함수를 격주로 실행하는 방법을 찾았을 때의 메모.
CloudWatch Event에서는 격주나 격월의 스케줄로 처리를 트리거하는 cron식을 기술할 수 없기 때문에, 방법을 고안할 필요가 있었다.
이하, 3 패턴의 방법을 소개한다.
방법 1 CloudWatch Event(cron식에 의한 매주 실행) + Lambda 함수 코드 내에서 격주 판정
설정 예
2019년 4월 26일(금)을 기준일로 격주 금요일 18시(JST)에 Lambda 함수 「MyLambdaFunc1」(Python 런타임)을 실행하는 경우
CloudWatch 이벤트
매주 금요일 18시 (JST)에 Lambda 함수 "MyLambdaFunc1"을 실행하는 규칙 "MyRule1"을 작성
$ aws events put-rule --schedule-expression "cron(0 9 ? * FRI *)" --name MyRule1
$ aws events put-targets --rule MyRule1 --targets MyLambdaFunc1
람다
Lambda 함수 「MyLambdaFunc1」의 코드내에서 실제로 실행하고 싶은 처리의 앞에, 함수 실행일이 2019년 4월 26일부터 짝수 주 경과한 날인 경우는 처리를 계속, 홀수주 경과한 날인 경우 처리를 종료하는 격주 판정 처리를 기술
lambda_function.py
from datetime import datetime
def lambda_handler(event, context):
## 隔週判定処理 ##
if (datetime.now() - datetime.strptime('2019/4/26', '%Y/%m/%d')).days % 14 != 0:
return()
## 以降、隔週で実行したい処理 ##
방법 2 API Gateway + 외부 스케줄 기능(예: Microsoft Flow)
설정 예
격주 금요일 18시(JST)에 Lambda 함수 「MyLambdaFunc2」를 실행하는 경우
API 게이트웨이
Lambda 함수 「MyLambdaFunc2」의 트리거가 되는 API를 작성. 배포한 API의 엔드포인트 URI와 API 키 인증을 설정한 경우에는 키 값을 삼가한다.
API는 GUI로부터 작성해도 좋지만, 나의 과거 기사의 방법 로 한발로 작성하는 것도 가능.
///過去記事の方法///
$ function_name=MyLambdaFunc2
$ aws lambda invoke --function-name agdep --payload {\"functionName\":\"${function_name}\"} outfile;cat outfile | jq .;rm outfile
///実行結果に作成されたAPIのエンドポイントURIとAPIキーが出力される///
[
"https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/dev/test-func_api_rsc",
"XXXXXXXXXXXXXXXXXXXX"
]
Microsoft Flow
Microsoft Flow 로 플로우를 신규 작성해, 반복 트리거를 이하와 같이 설정.
속성 이름
값
설명
간격
2
빈도
주
시간대
모든 시간대
시작 시간
현재 날짜와 시간 이후에 흐름을 처음 실행하고 싶은 날짜와 시간 이전의 모든 날짜와 시간
※
yyyy-MM-ddTHH:mm:ss.sss
형식. 시간 말미에 Z
는 불필요설정요일
금요일
설정 시간(시간)
18
설정 시간(분)
0
HTTP 액션을 다음과 같이 설정.
속성 이름
값
설명
방법
POST
URI
API 엔드포인트 URI
API Gateway에서 API를 만들 때 가져온 URI 지정
헤더
{"x-api-key": "API 인증 키"}
※API Gateway에서 API 키 인증을 설정한 경우에만. API 작성시에 취득한 API 키를
x-api-key
헤더로 지정방법 3 CloudWatch Event(rate식에 의한 격주 실행)
설정 예
규칙 작성시 및 작성시부터 격주로 Lambda 함수 「MyLambdaFunc3」를 실행하는 경우
CloudWatch 이벤트
격주로 Lambda 함수 "MyLambdaFunc3"을 실행하는 규칙 "MyRule3"을 만듭니다.
$ aws events put-rule --schedule-expression "rate(5 minutes)" --name MyRule3
$ aws events put-targets --rule MyRule3 --targets MyLambdaFunc3
참고
htps : // 코 m / 바르 탄 G / ms / b14 베 f93c004f90c0 세 4
htps : // 이 m / 똥 r_조 / ms / 아 15 예 2760 아 1d9 796b67
htps : // / cs. 아 ws. 아마존. 이 m/cぃ/ぁてst/레후에렌세/에ㄔㅇts/이어 x. HTML
htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 아마 존 C ぉ 우도 tch / ぁ st / 에 ぇ ts / S 치 즈 ぇ ゔ ぇ ts. HTML
Reference
이 문제에 관하여(【AWS】Lambda 함수를 격주(2주마다)로 자동 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/r-wakatsuki/items/3ad5fad697d5f7453789텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)