[小ネタ] ECS Fargate でコンテナのタイムゾーンを変更する方法

環境変数のTZ をお試しください。
2024.04.17

アノテーション・テクニカルサポートチームの hato です。

「ECS Fargate でコンテナ内のタイムゾーンを JST(日本標準時)に変更したい」とお問い合わせをいただくことがあり、変更する方法を少し調べてみました。

「環境変数:TZ」をお試しください

ベースイメージやアプリケーション次第ですが、環境変数TZと、その値としてタイムゾーン(例:Asia/Tokyo)を指定すると、任意のタイムゾーンとなります。

環境変数を設定する方法は

  • ECS タスク定義で指定する方法
  • Dockerfile の ENV 命令で指定する方法

があります。

ECS タスク定義で指定

コンテナ定義の環境変数として、次の値を設定します

# キー
TZ

# 値(任意のタイムゾーン)
Asia/Tokyo

なお、環境変数(environment)の設定はdocker run--envマッピングされます。

Dockerfile の ENV 命令 で指定する方法

タスク定義と設定する内容は同じですが、Dockerfile で設定します。

Dockerfileの例

FROM public.ecr.aws/amazonlinux/amazonlinux:2023

# タイムゾーンを JST に
ENV TZ Asia/Tokyo

環境変数:TZ で変更されない場合もあります

Alpine Linux 等の一部ベースイメージは 環境変数:TZ では変更されないためご注意ください。

変更する方法はベースイメージのドキュメント等をご確認ください。

Alpineの変更方法例

FROM public.ecr.aws/docker/library/alpine:latest

# タイムゾーンを JST に
RUN apk --no-cache add tzdata && cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

参考資料

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。