whats the fxxx
- 作業内容はAWSで夜間帯RDSを動かす必要がないので朝まで停止したい
- かつてこれをやってるところは見たことがある&やり方も何がどうなっているかもわかっているけど手元に資材がなくゼロから作らなければならない
- 現時点でのやらなければならないことについて、Qiitaのネタになりそうだったからまとめた
どうやったのか
Claude(Sonnet 4.5)さんに質問
AIへの語りかけ
AWS EventBridgeを用いたAurora Databaseの時間帯による停止に必要なものをください。
具体的に必要なものは
- eventbridgeとlambda及び関連するroleを作成するためのaws cliのshell scripe
- Type Scriptで書かれたコードと、それを収容するビルドレポジトリ
- かんたんなreadme
AIのOutput
aurora-scheduler/
├── README.md
├── package.json
├── tsconfig.json
├── src/
│ └── index.ts
├── scripts/
│ ├── create-infrastructure.sh
└── .gitignore
うん、完璧に見える。
ただね・・最初から動いたら苦労しないんですよねー
このくらい複雑なものが最初から全部間違いなく動くというのは、ゴルフのコースでホールインワンをあてるくらいまたはダブリーで6翻以上役がつく。
AIのアウトプットに対処
-
scripts/create-infrastructure.sh
、IAM Role, Event Rule, Lambdaを作成しているが、作成の手順についてAIの説明が微妙に間違っていて少し足りない。 - 対応するnodeが18なので20に変更
- いくつかのaws cliがエラーになる、理由は細かい引数へのケアが雑。
たとえば・・
AIの誤り
# Add targets to EventBridge rules
aws events put-targets \
--rule $STOP_RULE_NAME \
--targets "Id"="1","Arn"="$FUNCTION_ARN","Input"='{"clusterIdentifier":"'$CLUSTER_IDENTIFIER'","action":"stop"}'
修正された正解
# Add targets to EventBridge rules
aws events put-targets \
--rule $STOP_RULE_NAME \
--targets "Id"="1","Arn"="$FUNCTION_ARN","Input"='"{\"clusterIdentifier\":\"'$CLUSTER_IDENTIFIER'\",\"action\":\"stop\"}"'
JSONはエスケープしないといけない。
AIはこれをよく間違える。
癖のようなものであるため、すぐ原因にあたりがついて5分で対処。
好み?で修正したこと
ヲイ、node_modulesをdeployのzipに含めるんじゃねえ、devDependencyも入るだろ・・・
検証
- 各種インフラの正常な作成
- 動作確認
- パラメータいじってカスタマイズできるか検証
追加でお願いしたこと
これらのインフラを全部削除するshell scripeをください
aurora-scheduler/
├── scripts/
│ ├── cleanup.sh
これはちゃんと動きました。
自分が何作ったかと、依存関係=削除する順番を理解しているえらい。
まとめ
最初からちゃんと動かないのはわかってるし、細かいところが当然のように間違ってくると思うけど、この複雑度であれば 欲しいものに対して70点の回答は出してくる。
それを90点に引き上げるのは人間の仕事で、誰かに渡せる形にしてちゃんとドキュメントの体裁を整えるのも人間。
レビューや検証は人間の仕事です。