AWS Lambda에서 환경 변수의 TZ를 지정하지 않는 것이 좋습니다.
5291 단어 환경 변수Python지금 일본에 있을 때.AWSlambda
Lambda에서 현재 재일시를 얻었습니다.
영역과 관계없이 기본값은 UTC입니다.
따라서 업무 등에서 사용하기 편리하도록 JST로 전환해서 활용해야 한다고 생각합니다.
그 방법으로 2022년 1월까지 현재는 2가지 패턴이 흔하다.
이 기사는 파이썬 3입니다.사용하다
다른 언어로 바꿔도 내용은 문제없다.
1. Lambda의 환경 변수를 통해 시간대를 설정하는 방법
우선 환경 변수 없이 얻으려고 시도해 보자.
from datetime import datetime
def lambda_handler(event, context):
current_at = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(current_at)
실행 결과2022-01-28 11:21:22
이 보도의 집필 시간은 20시 21분이다이렇게 하면 UTC를 빼낼 수 있다.
그럼 다음은 람다의 환경 변수를 설정해 봅시다.
키에 TZ를 설정하고 값에 Asia/Tokyo를 설정합니다.
실제로 얻어 보다.
코드는 아까와 같다.
from datetime import datetime
def lambda_handler(event, context):
current_at = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(current_at)
실행 결과2022-01-28 20:21:59
JST에서는 환경 변수의 설정만으로 현재 날짜를 가져올 수 있습니다.2. 프로그램에서 가져올 때 JST를 지정하는 방법
환경 변수에 대해 설정된 내용이 없습니다.
코드에 JST를 지정하면 현재 시간을 가져옵니다.
from datetime import datetime, timedelta, timezone
def lambda_handler(event, context):
JST = timezone(timedelta(hours=+9), 'JST')
current_at = datetime.now(JST).strftime('%Y-%m-%d %H:%M:%S')
print(current_at)
실행 결과2022-01-28 20:22:41
여기도 환경 변수의 시간대가 바뀌었을 때와 같다JST에서 받았습니다.
문제점
다음은 본론.
환경 변수의 설정은 왜 JST가 되었을까...?이런 의문을 품고 있습니다.
신경 쓰여서 찾아봤어요.
TZ는 AWS Lambda의 예약어인 것 같습니다.
그 중
미리 정의된 환경 변수
TZ - 환경의 시간대(UTC)입니다.운영 환경에서 NTP를 사용하여 시스템 시계를 동기화합니다.
이런 기술이 있다.
신중을 기하기 위해 확인했다
import os
def lambda_handler(event, context):
print(os.environ['TZ'])
실행 결과:UTC
확실히 설치했어.그 밖에
정의된 런타임 환경 변수
Lambda 실행 시간은 초기화할 때 여러 환경 변수를 설정합니다.대부분의 환경 변수는 함수나 운행 시간에 대한 정보를 제공한다.이러한 환경 변수의 키는 유지되므로 함수 설정에서 설정할 수 없습니다.
환경 변수의 키가 예약되어 함수 설정에서 설정할 수 없습니다
실제로 설정할 수 있다.
결론
스타일이 좀 미묘하지는 않지만.
문서에 명확하게 예약어로 기재되어 있어 설정할 수 없는 옵션
나는 기본적으로 그다지 좋지 않다고 생각한다.
언제 수정될지 모르기 때문에 프로그램에서 직접 받을 때는 JST를 지정하는 것이 좋다.
참고 자료
보충(2022/1/31)
선생님이 가르쳐 주셨어요.
몇 년 전에 서버 직원이 AWS 지원에 의해 확인되었습니다.
AWS에 대한 지원도 "향후 TZ가 덮어쓸 수 있을 것이라고 장담할 수 없기 때문에 환경 변수 TZ를 사용하지 마십시오"라고 확인했다.
Reference
이 문제에 관하여(AWS Lambda에서 환경 변수의 TZ를 지정하지 않는 것이 좋습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shimajiri/items/00f1da30a1c36ec26edd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)