Aws Lambda get Current Date Time Wrong
Chia sẻ về 1 lỗi khi sử dụng AWS Lambda
Table of Contents
1. Mô tả
Chia sẻ về 1 lỗi khi sử dụng AWS Lambda:
Mình dùng Lambda để get current timestamp, lambda này được trigger bởi Cloudwatch cứ 5 giây chạy 1 lần.
Mình phát hiện ra là lần đầu thì Lambda return kết quả đúng 2019-08-27 08:46:54.867900
.
Nhưng sau đó 5 giây vào check log trong Cloudwatch thì thấy vẫn trả về timestamp cũ 2019-08-27 08:46:54.867900
.
Cứ thế, dù 5 10 15 phút sau mình cứ chạy lại là log trả về timestamp cũ.
2. Tái hiện lỗi
Tạo 1 funtion lambda get-current-time
đơn giản như này:
import datetime, boto3, time, logging
from datetime import datetime
logger = logging.getLogger()
logger.setLevel(logging.INFO)
#Get current datetime
currentDT = datetime.now()
def lambda_handler(event, context):
logger.info("Current datetime: %s" % currentDT)
Test function Lambda trên
Lần đầu trả về đúng timestamp:
Current datetime: 2019-08-27 08:46:54.867900
Chạy lại khoảng vài giây sau, kết quả không đổi vẫn là:
Current datetime: 2019-08-27 08:46:54.867900
3. Nguyên nhân
Nguyên nhân là do Lambda đã cache lại giá trị trả về lần đầu
và bởi hàm Lambda của mình không thay đổi gì,
cả event trigger cũng ko thay đổi, thế nên Lambda cứ lấy giá trị đã cache được ở lần trước thôi.
4. Giải pháp
Mình cần tạo 1 update đối với chính hàm get-current-time
này,
để mỗi lần chạy, Lambda sẽ nhận ra là function có sự thay đổi. Khi đó nó sẽ ko lấy giá trị cũ trả về cho mình nữa.
Ở đây mình sẽ update lại phần Description của function get-current-time
.
Sửa function lambda lại như sau:
import datetime, boto3, time, logging
from datetime import datetime
logger = logging.getLogger()
logger.setLevel(logging.INFO)
#Get current datetime
currentDT = datetime.now()
def lambda_handler(event, context):
logger.info("Current datetime: %s" % currentDT)
client = boto3.client('lambda')
client.update_function_configuration(
FunctionName="get-current-time",
Description="lambda run at [%s]" % currentDT
)
Nhớ Role của Lambda function cần có quyền sau:
lambda:UpdateFunctionConfiguration
Test lại function trên:
Current datetime: 2019-08-27 13:58:52.281869
Test lại vài lần:
Current datetime: 2019-08-27 13:59:21.350455
Done!
Thank You!
Your comment has been submitted. It will appear on this page shortly! OKYikes, Sorry!
Error occured. Couldn't submit your comment. Please try again. Thank You! OK