ひとまずメモ。
課題
Docker コンテナ内で RDS のログを AWS SDK for Ruby で弄っている時に以下のようなエラーが出た。
Aws::RDS::Errors::SignatureDoesNotMatch error=#<:rds::errors::signaturedoesnotmatch: signature expired: is now earlier than min.>
RDS に限らず API コールを行う際の署名の有効期限が切れている旨のエラー。API を実行する環境の時刻がズレていると発生する。
docs.aws.amazon.com
対応
それぞれの環境の時刻をあわせることで解消。
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/*
以上
メモでした。