Codebuild에서 타임존을 바꿔보자!(Lambda도 가능)

정의찬·2023년 3월 16일
2
post-thumbnail

1줄요약!!

1. 빌드 프로젝트 편집에서 환경 변수에 Name: TZ, Value: Asia/Seoul로 설정하면 된다!

아래는 CodeBuild로 파이썬으로 작성된 파일을 도커파일로 빌드하는 buildspec.yml 파일이다.

version: 0.2
phases:
  install:
    runtime-versions:
      python: 3.7
  pre_build:
    commands:
      - echo Logging in to Amazon ECR... 
      - aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin <your-account>.dkr.ecr.ap-northeast-2.amazonaws.com
      - date=$(date +%y%m%d%H%M%S)
  build:
    commands:
      - python3 -m compileall src/app.py
      - ls src/__pycache__/*.pyc
      - mv src/__pycache__/*.pyc ./app.pyc
      - echo Build started on `date`
      - docker build -t wsi-api-ecr .
      - docker tag wsi-api-ecr:latest <your-account>.dkr.ecr.ap-northeast-2.amazonaws.com/wsi-api-ecr:$date
  post_build:
    commands:
      - docker push <your-account>.dkr.ecr.ap-northeast-2.amazonaws.com/wsi-api-ecr:$date
artifacts:
  files:
    - app.pyc
    - appspec.yml
    - script/*

도커 이미지의 태그를
"한국시간 기준 현재날짜 – 2자리 년도, 월, 일, 시, 분, 초 형식" ex) 23년 3월 16일 15시 3분 30초 이라면 230316151330
이렇게 주려고 하는데 Codebuild런타임 이미지는 UTC를 기본 타임존으로 하고 timedatectl 같은 명령을 지원하지 않는다는 것을 알았다.

아래는 한국시간 14시에 푸시 했지만 UTC 기준으로 적용돼서 이미지 태그가 05시로 생기는 사진 ㅠㅠ

그렇다고 방법이 없나?
그건 또 아니다 2가지 방법을 들고 왔다.

방법1. 타임존을 UTC에서 KST(Seoul)로 바꿔주기

Codebuild 프로젝트 빌드 편집을 누르고 환경 선택 후

환경 변수에 Name: TZ, Value: Asia/Seoul을 넣어주면 된다. (타임존이 Asia/Seoul로 변경됨.)

방법2. UTC와의 시차만큼 수동으로 가감하기(권장 X)

buildspec.yml에 date 명령어만 조금 수정하면 된다

	  - date=$(date +%y%m%d%H%M%S) ->
      - date=$(date -d '+9 hour' +%Y%m%d%H%m%S)

시간 전체를 바꾸고 싶은 것이 아니라 파일 하나의 이름만 바꾸고 싶을때 자주 사용한다.
ex)

mv <기존-파일-이름> ~~~-$(date +%Y%m%d_%H%m%S).<확장자>

두 방법 모두 아주 잘 작동한다.

account id, default_region같은 것들도 환경변수로 등록하여 편하게 사용할 수 있다.

또한 Codebuild 뿐만 아니라 람다에서도 사용할 수 있다

profile
Have a dream!

0개의 댓글