自分専用の画像アップローダー

特定の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サーバーは使っていない。