自分専用の画像アップローダー
特定のSaaSに依存しない自分で好きに使えるアップローダーがほしくなり、S3バケットに画像アップロードして、自動でサムネイルを作成する仕組みを作った。
仕様書を作って、コードの作成からデプロイまで Claude Code に任せた。
フロントエンド
- React
- AWS Amplify(ホスティング)
バックエンド
- AWS API Gateway + Lambda (アップロード処理・サムネイル作成・ファイル削除・ファイル情報取得)
- AWS S3(ファイルストレージ)
- AWS DynamoDB(メタデータ保存)
- AWS Cognito(認証)
- AWS CloudFront
プロジェクト構成
personal-s3-uploader/
├── specs/ # 仕様書
├── src/ # 作業フォルダ
│ ├── frontend/ # React + Amplify
│ ├── backend/ # Lambda関数群
│ └── infrastructure/ # AWS設定
└── CLAUDE.md # 開発指示書
とにかくドキュメントを書いてあげて、要件定義、設計、仕様、絶対にやってほしくないことを文書にして、CLAUDE.md の指示でそれらを最初にすべて参照させている。
ファイルのパスが {ドメイン}/{YYYY}/{MM}/{DD}/{UUIDv4}_{サムネイルタイプ}.{拡張子} となるようにして、インフラを差し替えても同じルールで配置すれば画像にアクセスできるようにしている。マルチテナント的な設計は考慮せず、権限も複雑化を避けた。管理側は徹底して隠匿し、アップロードした画像は例外なく外部から参照可能にした。インフラのデプロイはすべて CloudFormation テンプレートに記載させた。
自分が把握可能な領域で活用したいので、いまのところ追加の連携ツールやMCPサーバーは使っていない。