ひとまずメモ。
課題
Docker コンテナ内で RDS のログを AWS SDK for Ruby で弄っている時に以下のようなエラーが出た。
Aws::RDS::Errors::SignatureDoesNotMatch error=#<Aws::RDS::Errors::SignatureDoesNotMatch: Signature expired: 20160506T021015Z is now earlier than 20160506T021408Z (20160506T022908Z - 15 min.)>
RDS に限らず API コールを行う際の署名の有効期限が切れている旨のエラー。API を実行する環境の時刻がズレていると発生する。
対応
それぞれの環境の時刻をあわせることで解消。
boot2docker 側
sudo ntpd -q -p 1.jp.pool.ntp.org
を実行する。
% docker-machine ssh dev01 ## . ## ## ## == ## ## ## ## ## === /"""""""""""""""""\___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\_______/ _ _ ____ _ _ | |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __ | '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__| | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ | |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_| Boot2Docker version 1.11.0, build HEAD : 32ee7e9 - Wed Apr 13 20:06:49 UTC 2016 Docker version 1.11.0, build 4dc5990 docker@dev01:~$ sudo ntpd -q -p 1.jp.pool.ntp.org
コンテナ側(Alpine Linux の場合)
boot2docker 側を修正したら直す必要は無いと思われるが、せっかくなのでコンテナの時刻を JST にしてみた。
RUN apk --no-cache --update add \ tzdata && \ cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \ apk del tzdata && \ rm -rf /tmp/* /var/tmp/* /var/cache/apk/*
以上
メモでした。