AWS Config
AWS Config のルールを利用して ACM の有効期限前監視を行う
Config では以下のルールで証明書の有効期限を定期的に監視して
指定期限日以内になったら「非準拠」にする事ができる
AWS Config - acm-certificate-expiration-check
AWS Config はアカウント単位管理のため、有効化してしまうと監視したいルール数に関わらず、
利用サービス数に応じて一定金額発生するので注意する。それでも 1$ も行かないと思うけど
Config の設定
acm-certificate-expiration-check
ルールで設定できるのは 有効期限が指定日時以下になったら「非準拠」とするか?のみ
監視対象の証明書を全てか、特定のリソースIDのみか、タグで制御し
パラメータ daysToExpiration
に指定日を設定する
あくまで Config が定期監視したタイミングで指定日以下の有効期限を持つ証明書があるか?なので 14 と指定しても 13 日前、12日前になる可能性も考えられるため余裕を持った値にしておいたほうがいいかな
通知設定
Config の標準機能である SNS 通知を設定してもいいんだけど
複数環境の証明書を管理してて証明書単位で通知先を分けたい場合を考えて EventBridge で通知させる
EventBridge 設定
EventBridge はイベントパターントリガーにして パターンを Config の Config Rules Compliance Change
に設定する
ここでは通知先を SNS にしておく
SNSの通知文言を 入力トランスフォーマー にして通知内容はシンプルにしておく
テンプレートは下記
{"annotation":"$.detail.newEvaluationResult.annotation","resourceId":"$.detail.resourceId"}
"有効期限が近い証明書があります 証明書ARN:<resourceId> 有効期限:<annotation> "
これで Lambda とか色々考えなくても AWS のサービスだけで監視・通知できた
この1ルールのためだけに Config を有効化するのは少しもったいないけど
Config 自体は便利で CloudWatch だけでは出来ないことも組み合わせると色々できるし Config 自体も便利なのでこの為だけに使うということにはならないと思う
ただ AWS のサービスのみで監視しているため融通がきかせにくいところもある
今回の場合 EventBridge を Config Rules Compliance Change
にしているため証明書を更新したタイミングでも
コンプライアンスステータスが変わったら通知は飛んでしまう
そこまで問題ないけど