画像アップロード機能#
infra001-upload
関連仕様・設計#
使用リソース#
S3 バケット設定#
- パブリックアクセス: Block Public Access を有効化し、直接公開を禁止する。
- オブジェクトアクセス: Presigned URL 経由のみ許可(アップロード用 PUT・閲覧用 GET)。
- 暗号化: SSE-S3(サーバーサイド暗号化)を有効化する。
- CORS: フロントエンドオリジンからの
PUT のみ許可する。 - ストレージクラス: Standard(頻繁アクセス向け)
{
"CORSRules": [
{
"AllowedOrigins": ["https://<frontend-domain>"],
"AllowedMethods": ["PUT"],
"AllowedHeaders": ["Content-Type"],
"MaxAgeSeconds": 300
}
]
}
S3 ストレージクラスと料金#
ストレージクラス#
| ストレージクラス | 用途 | 特徴 |
|---|
| S3 Standard | アクセス頻度の高い画像 | 頻繁アクセス、低レイテンシ |
料金(東京リージョン、2024年3月時点)#
| ストレージクラス | 保存料金(GB/月) | リクエスト料金(GET/1,000回) | リクエスト料金(PUT/1,000回) |
|---|
| S3 Standard | ¥23 | ¥0.43 | ¥5 |
ライフサイクルポリシー#
- 0日~30日: S3 Standard(アップロード直後)
- 30日~90日: S3 Standard-IA(アクセス頻度低下)
- 90日以降: S3 Glacier Instant Retrieval(アーカイブ)
Presigned URL#
| 種別 | 操作 | 有効期限 |
|---|
| アップロード用 | PutObject | 300 秒(5 分) |
| 閲覧用 | GetObject | 3600 秒(1 時間) |
ネットワーク#
- 全通信は HTTPS(TLS 1.2 以上)。
- Terraform にて定義する(
packages/infra/)。