AWS SAMでSSL証明書の有効期限をチェックする

SAMテンプレートの記述例とその解説

Takashi Iwamoto
VELTRA Engineering
7 min readFeb 7, 2020

--

虎の穴ラボさんの「Python + AWS LambdaでSSL証明書の有効期限をチェックする」を拝見し、この構成ならSAMでデプロイするのが便利そうだと思いました。SAMテンプレートの記述例はこんな感じです。

SAMテンプレートの記述例

記述のポイント

以下、記述のポイントを解説します。ポイントは3つです。

1. sam deploy時のパラメータで環境変数を渡す

元記事では、3つの環境変数をLambda関数に渡しています。

  • チェック対象のドメイン (Urls)
  • 通知対象とする日数の閾値 (BufferDays)
  • Slack通知用URL (IncommingWebhooks)

その要件をSAMで実現するため記述したのが下記の部分です。 sam deploy 時にデフォルトパラメータを上書きすることで、Lambda関数に環境変数を渡せます。

2. Cron式でスケジュールを定義する

また、元記事では、CloudWatchのイベントでLambda関数の実行スケジュールを定義しています。JSTの10:00なら「0 1 * * ? * 」のようにCron式で指定するわけです。

SAMテンプレートでも、このCron式が使えます。下記が該当部分です。

「Schedule」が2つ出てきて混乱しそうですが、それぞれ下記の意味となります。

3. CloudWatchログの保持期間を指定する(任意)

なお、必須ではありませんが、CloudWatchのLogGroupリソースを明示的に記述すると、ログイベントの保持期間が指定できます。今回は下記のように90日間としました。

こうすると、不要なログイベントが残り続けて課金対象となるのを防げます。もちろん、あえて残しておきたい場合は記述しなくて構いません。

デプロイ

さて、SAMテンプレートができたら、あとはビルドしてデプロイするのみです。下記のコマンドを実行すれば、Lambda関数の作成からCloudWatchの設定までが、あれよあれよという間に進んでいきます。

元記事のLambdaコードも含め、下記のGitHubリポジトリにまとめています。よろしければご参照ください。

元記事のLambdaコードのおかげで、SSL証明書の期限切れ監視ツールとして実用に耐えるものになっていると思います。ベルトラでも活用できそうなサイトがあれば、実環境に投入してみるつもりです。きっかけをくださった虎の穴ラボさん、ありがとうございます。

--

--

Takashi Iwamoto
VELTRA Engineering

ENECHANGE株式会社VPoT兼CTO室マネージャー。AWS Community Builder (Cloud Operations)。前職はAWS Japan技術サポート。社内外を問わず開発者体験の向上に取り組んでいます。