ユーザデータを利用して、Windowsインスタンスの時刻を東京標準時に設定する

アイキャッチ AWS EC2

はじめに

AWSチームのすずきです。

AWSが提供するAMIを利用して起動したWindowsインスタンス、デフォルトではOSのタイムゾーンはUTCとなります。

このタイムゾーンを東京標準時に変更する設定方法については下記の記事にて紹介されていますが、 今回、Ec2インスタンスの起動時にユーザデータ(UserData)を指定し、Windowsインスタンスの時刻を東京標準時に 設定する機会がありましたので、紹介させて頂きます。

Windowsインスタンスの時刻を東京標準時に設定する

環境

今回AWS公式が東京リージョンで提供していた以下のAMIを利用し、動作確認を実施しました。

  • Windows_Server-2012-R2_RTM-Japanese-64Bit-Base-2017.04.12 - ami-fdcce49a
  • Windows_Server-2016-English-Full-Containers-2017.04.12 (ami-1e1f3d79)

2017現在AWSからの提供は終了していますが、Windows Server 2008、2008 R2 用として2013年2月22日以前に提供されていたAMIを利用する場合には、別途Hotfixの適用が必要となる点はご注意ください。

設定方法

AWSコンソール(Ec2)

「ステップ 3: インスタンスの詳細の設定」より「高度な詳細」を開き、ユーザデータの指定を行います。

ec2-win-change-timezone-userdata-2

  • ユーザデータの設定内容(テキスト)
<powershell>
tzutil /s "Tokyo Standard Time"
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f 
</powershell>

CloudFormation

CloudFormationテンプレート、YAML表記のサンプルです。

Parameters:
  Ec2InstanceKeyName:
    Description: EC2 SSH KEY
    Type: AWS::EC2::KeyPair::KeyName
  Ec2InstanceType:
    Description: EC2 InstanceType
    Type: String
    Default: t2.small
  Ec2ImageId:
    Description: EC2 ImageID(AMI)
    Type: String
    Default: ami-fdcce49a
    # Windows_Server-2012-R2_RTM-Japanese-64Bit-Base-2017.04.12 - ami-fdcce49a
  VpcSubnetId:
    Description: VPC subnet ID
    Type: AWS::EC2::Subnet::Id
Resources:
  Ec2Instance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: !Ref 'Ec2InstanceType'
      KeyName: !Ref 'Ec2InstanceKeyName'
      SubnetId: !Ref 'VpcSubnetId'
      ImageId: !Ref 'Ec2ImageId'
      UserData:
        Fn::Base64: !Sub |
          <powershell>
          tzutil /s "Tokyo Standard Time"
          reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f 
          </powershell>

確認

AWSコンソールで起動したEC2を指定し、EC2インスタンスのスクリーンショットにて、OS時刻が東京時間である事を確認できました。

Windows2012R2

ec2-win-change-timezone-userdata-4

Windows2016

ec2-win-change-timezone-userdata-3

まとめ

OSのタイムゾーン指定に設定漏れが合った場合、アプリの動作不良を招いたり、 複数のシステムを跨ぐログ調査が必要な場合の妨げとなるなどの問題が生じる事があります。

ユーザデータを利用する事で、Windows インスタンス時刻を設定が実現できますので、 EC2で起動したWindowsサーバのタイムゾーンを変更する機会がありましたら、今回の手順をお試しください。

参考リンク