share facebook facebook twitter menu hatena pocket slack

2011.04.12 TUE

RDSでタイムゾーン(UTC)を変更

鈴木 宏康

WRITTEN BY 鈴木 宏康

【追記】
以下に記載されている方法で、出来る場合と出来ない場合があるようです。
実施される場合は、お気を付け下さい。

Amazon RDSは、下記の通りデフォルトタイムゾーンを変更することはできません。

Amazon RDSではタイムゾーン設定を直せないので毎回SET time_zoneを呼ぶ必要あり

今回は試験的に、init_connectにSET time_zone = ‘Asia/Tokyo’;を設定してみました。

まずは、いつものAmazon RDS Command Line Toolkitでの設定ですが、
rds-modify-db-parameter-groupを試したところ、クオートや空白の問題で、設定することができませんでした。
(下記にも指摘されていました…)

Setting init_connect to a string with spaces in an Amazon RDS Parameter Group using the command line interface complains with malformed errors

ただしクオートと空白は、ツールが対応していないだけの可能性もあるので、AWS SDK for PHPでも試してみました。

コードは以下のようになります。

【PHP】

// ライブラリのインクルード
require_once("./sdk.class.php");

// RDSオブジェクトの生成
$rds = new AmazonRDS();


// リージョンの設定
$rds->set_region(AmazonRDS::REGION_APAC_NE1);

// パラメータの設定
$response = $rds->modify_db_parameter_group('suz-lab', array(
    array(
        "ParameterName"  => "init_connect",
        "ParameterValue" => "set time_zone = 'Asia/Tokyo';",
        "ApplyMethod"    => "immediate"
    ),
));

// レスポンスの確認 
var_dump($response);

すると、こちらでは無事設定が成功し、AWS Management Consoleでも確認することができました。

これで、アプリケーション側に修正してもらわなくてもよくなります。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。