画像が通る道と、人が見る道を分ける。
端末からの経路とオーナーからの経路は、認証方法も権限も別物として設計している。 画像バケットへの書き込みを持つのは端末側の関数だけで、Web 側は署名付き URL を発行する権限しか持たない。
DEVICE AWS OWNER
Android app (Kotlin) API Gateway (HTTP API) Web app (React / Vite)
Foreground Service | S3 + CloudFront (OAC)
+ WakeLock + AlarmManager +-- authorizer session |
every 5 / 10 / 15 min +-- device-auth pairing |
| +-- device-api upload |
| image + location +-- web-api <-------- JWT --------+
+----------------------------> |
+--> S3 images, private
+--> DynamoDB single table
+--> Cognito Web User Pool / Google SSO
Terraform --- every resource above, in both dev and prod