いつ来るの?Amazon Relational Database Service (RDS)/Amazon Auroraの「保留中のメンテナンス」の「next window」について

マネジメントコンソールに「New」が点る季節になりましたね。

▲ 個人的にはこんなイメージ

キラキラしたものを見ると心が踊ります。Lチカとか。
こんにちは、AWS事業本部のShirotaです。
そんな今日は、コンソールに点るNew以外の情報のお話をしたいと思います。

CA証明書のアップデートに関するお知らせが出始めた

早速ですが、以下の画像をご覧下さい。

▲ 何か出ている

RDSのダッシュボードとデータベース一覧にCA証明書のアップデートに関するお知らせが、このように表示されるようになりました。
前回ブログを投稿した際にはまだ出ていなかった情報として、「 2020年1月14日以降に作成されたデータベースでは、デフォルトで新しいCA証明書が使われるようになる 」が公式から発表されましたね。
CA証明書の更新手段や、今までに発表されているCA証明書の強制適用までのスケジュールについては以下のブログを参照して下さい。

【早めに準備を!】2020年にAmazon Relational Database Service (RDS)/Amazon AuroraでSSL/TLS証明書をアップデートする必要が生じます

▲ 対象のインスタンスのメンテナンス欄や、左カラムにも表示されている

「あれ?next windowって表示されているけど、次のメンテナンスウィンドウで更新されちゃうの?」と言う事が気になった為、実際に手を動かして挙動を調べてみました。

実際に触ってみる

まずは、Certificate updateを確認してみます。

▲ 更新が必要だと言われている

「更新が必要」と言うステータスの状態で、DBインスタンスのメンテナンスタブの「保留中のメンテナンス」を確認してみます。

▲ ちょっと読んでいきましょう

保留中のメンテナンスとして、今回のCA証明書のアップデートが来ています。
また、アップデートの適用が始まる日付の記載があります。
この日付より、「next window」と表示されていた場合としても、 今の日付から見た次のメンテナンスウィンドウと言う訳では無く、2020年2月5日以降の最初のメンテナンスウィンドウだと言う事が分かります
同様の事をAWS CLIで調査すると、次のように出力されます。

  
$ aws rds describe-pending-maintenance-actions
{
    "PendingMaintenanceActions": [
        {
            "ResourceIdentifier": "arn:aws:rds:ap-northeast-1:XXXXXXXXXXXX:db:test-cert-instance-1",
            "PendingMaintenanceActionDetails": [
                {
                    "Action": "ca-certificate-rotation",
                    "AutoAppliedAfterDate": "2020-02-04T22:03:06Z",
                    "OptInStatus": "next-maintenance",
                    "CurrentApplyDate": "2020-02-04T22:03:06Z",
                    "Description": "Rotation of CA certificate"
                }
            ]
        },
        {
            "ResourceIdentifier": "arn:aws:rds:ap-northeast-1:XXXXXXXXXXXX:db:test-cert-instance-1-ap-northeast-1a",
            "PendingMaintenanceActionDetails": [
                {
                    "Action": "ca-certificate-rotation",
                    "AutoAppliedAfterDate": "2020-02-04T22:03:06Z",
                    "OptInStatus": "next-maintenance",
                    "CurrentApplyDate": "2020-02-04T22:03:06Z",
                    "Description": "Rotation of CA certificate"
                }
            ]
        }
    ]
}

対象のDBインスタンスが多い環境では、JSONを整形して見たい要素のみ表示するようにしたり、describe-pending-maintenance-actionsのオプションである--filtersでクラスターやインスタンスを絞り込んで表示すると欲しい情報が見やすくなると思いますので、お試し下さい。
今回、コンソールよりも詳細なステータスが得られたので、アップデートの日程にまつわる値に関して少し解説致します。

  • AutoAppliedAfterDate: メンテナンスウィンドウにメンテナンスが自動で追加される日時。この日以降の最初のメンテナンスウィンドウの時間にメンテナンスが追加されると考えて良い
  • ForcedApplyDate: メンテナンスが自動的に適用される日時。 メンテナンスウィンドウに依存しない為、この日時が来ると自動的にメンテナンスが実行される
  • CurrentApplyDate: 現状、メンテナンスがメンテナンスウィンドウに追加される日時。能動的にメンテナンスの実行を設定していなく、AutoAppliedAfterDateとForcedApplyDateが設定されていない場合には空白になる

と言う訳で改めて今の情報から分かる事は、「 2020年2月5日以降の最初のメンテナンスウィンドウで証明書更新のメンテナンスが実行される 」となります。

ここで、保留中のメンテナンスの画面に戻ってみましょう。

▲ 今度は右上を見ていきます

デフォルトの状態では、証明書更新のメンテナンスは2020年2月5日以降の最初のメンテナンスウィンドウで実施されるようになっている事が分かります。
では、証明書更新をこれより前に実施する設定をしてみます。
その場ですぐに更新を実施したい場合は「Apply now」を、次のメンテナンスウィンドウでの更新を設定したい場合は「Apply at next maintenance window」を選択します。
今回は、「Apply at next maintenance window」を選択してみます。

▲ 選択するとこのようなポップアップが出る

ここで、「証明書のアップデートしてもクライアントが対応できる環境に準備できているね?」と確認の再押しをしてもらえます。了承する際は、チェックをつけてから「Confirm」しましょう。

すると、証明書更新のメンテナンスの日程が変更されました。

▲ next maintenance windowになった

同様の作業をCLIでやってみると以下のようになります。

$ aws rds apply-pending-maintenance-action --resource-identifier arn:aws:rds:ap-northeast-1:XXXXXXXXXXXX:db:test-cert-instance-1-ap-northeast-1a --opt-in-type next-maintenance --apply-action ca-certificate-rotation

{
    "ResourcePendingMaintenanceActions": {
        "ResourceIdentifier": "arn:aws:rds:ap-northeast-1:XXXXXXXXXXXX:db:test-cert-instance-1-ap-northeast-1a",
        "PendingMaintenanceActionDetails": [
            {
                "Action": "ca-certificate-rotation",
                "AutoAppliedAfterDate": "2020-02-04T22:03:06Z",
                "OptInStatus": "next-maintenance",
                "CurrentApplyDate": "2019-11-30T17:41:00Z",
                "Description": "Rotation of CA certificate"
            }
        ]
    }
}

「AutoAppliedAfterDate」と「CurrentApplyDate」の日付を見比べてもらえれば、それぞれの意味が先ほどより分かり易くなったのではないでしょうか。
また、更新のスケジュールを変更する際、どのタイプのメンテナンス(--apply-action)をどの設定にするか(--opt-in-type)を指定する必要がある為、他のメンテナンスに巻き込まれて更新されたりする事はありません。

もし、設定を解除したくなったら

コンソールからだと、next maintenanceに設定を入れてしまった場合 取り消す事ができません 。DBインスタンスを停止すると設定が取り消せたりしますが、その為にDBインスタンスを停止する事はしないと思います。
AWS CLIでは、 追加したnext maintenance設定を取り消す事ができます
実際に、先ほど入れた設定を取り消してみました。

$ aws rds apply-pending-maintenance-action --resource-identifier arn:aws:rds:ap-northeast-1:XXXXXXXXXXXX:db:test-cert-instance-1-ap-northeast-1a --opt-in-type undo-opt-in --apply-action ca-certificate-rotation
{
    "ResourcePendingMaintenanceActions": {
        "ResourceIdentifier": "arn:aws:rds:ap-northeast-1:XXXXXXXXXXXX:db:test-cert-instance-1-ap-northeast-1a",
        "PendingMaintenanceActionDetails": [
            {
                "Action": "ca-certificate-rotation",
                "AutoAppliedAfterDate": "2020-02-04T22:03:06Z",
                "OptInStatus": "next-maintenance",
                "CurrentApplyDate": "2020-02-04T22:03:06Z",
                "Description": "Rotation of CA certificate"
            }
        ]
    }
}

心の片隅に覚えておくと焦らずに済みます。

コンソールの表記について理解したところで、改めて

メンテナンスに関するステータス等は、パッと単語通りに捉えただけだと混乱しやすくなります。
表示されている情報やCLIで引き出せる情報を最大限得て、現状を把握しましょう。
また、現状が分かったところで改めてお伝えしたい事は 証明書の更新に向けて、早めに検証したりと準備を進めていきましょう と言う事に尽きます。
今回新たに出た情報で、2020年2月5日以降1週間前後でメンテナンスのスケジュールが組まれる事が明らかになりました。
まだ時間はありますが、直前に焦らないように早めに支度をしておく事をオススメ致します!