chatgpt4を使って、自分でコーディングせずにpythonスクリプトを生成してみた!「awsでURLリストから、SSL証明書の有効期限をリストアップして、スラックに投稿するサービスを作りたい」

chatgpt4を使って、自分でコーディングせずにpythonスクリプトを生成してみた!「awsでURLリストから、SSL証明書の有効期限をリストアップして、スラックに投稿するサービスを作りたい」

chatgpt4に投げて、ひたすらPDCAサイクルを回してみた。
chatgpt4を使えば、プログラマじゃなくても、AWSを使ったWebサービス作れそう(折れない心があれば)

最終的には、以下のようなAWS構成になった。
EventBridge(毎朝9時)→Lambdaで各サーバのSSL証明書の期限をチェック→結果をslackに投稿(api keyはSecretManager)

だいたいSSL証明書のチェックが1秒かかる感じ。
Lambdaのタイムアウトが、最大15分(900秒)なので、900サーバくらいまで行けそう。

Lambdaでpyhonを実行したら、requestsモジュールが無い!とエラーになった

requestsって、ptyhon標準モジュールじゃないのか…。
ローカルにダウンロードしてきて、自作pythonファイルと一緒のディレクトリに入れて、zip化してアップロードしないとダメらしい。
アップロードした後は、lambdaの管理画面から修正できた。

設定画面のlambdaレイヤー(共通ライブラリ)に、有志が公開しているarn指定でも行けた!
arn:aws:lambda:ap-northeast-1:770693421928:layer:Klayers-p39-requests:19

Slack API を使って、投稿するにはWebhook URL(APIキー付き投稿URL)を使う
投稿したいチャンネルを選んで、WebHookの生成をすれば、簡単に取得できる。

Urlsリストを増やしたら、タイムアウトしたので、3秒から最大の15分に変更
だいたいSSL証明書のチェックが1秒かかる感じ。
Lambdaのタイムアウトを最大が15分(900秒)なので、900サーバくらいまで行けそう。

Webhook URL(APIキー付き投稿URL)は、ハードコーディングでもいいけど、awsなのでsecret managerを使ってみよう。
1. Secretmanagerにslack apiのSLACK_WEBHOOK_URLを保存する。キー名は同じSLACK_WEBHOOK_URL
2. IAMで、lambdaがアクセスできるようにポリシーを生成(LambdaSecretsManagerAccessPolicyPostSlack)して、許可するarnを指定する
3. lambdaを新規作成すると、ラムダ名-role-xxxxxxxみたいに自動的にロールが生成されるので、ポリシーを付与する。
4. lambda内コーディングで、シークレット名+キー名で、取得する(pythonコード的には、secretは何も書かないでkey指定)

LambdaからSecretManagerの特定のキー&バリューだけアクセス可にするようにarn指定で許可する。

毎朝9時に、このlambdaを実行するには、cron代わりのEventBridge(CloudWatch Events)を使う
1, コンソールからEventBridgeを選んで、「イベントブリッジルール」で「ルールの作成」をクリック
2. 名前・説明を入力、スケジュールパターンを作成(cron式で入力)
3, テンプレート化されたターゲット→ AWS Lambda Invokeを選ぶと、個々のlambdaが選択できる
4, あとはデフォのまま作成すればOK

facebook、あと一週間しかないけど大丈夫?