画像アップロード機能#

ID#

infra001-upload

関連仕様・設計#


使用リソース#

リソース用途
AWS S3画像ファイルの保存

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#

種別操作有効期限
アップロード用PutObject300 秒(5 分)
閲覧用GetObject3600 秒(1 時間)

ネットワーク#

  • 全通信は HTTPS(TLS 1.2 以上)。
  • Terraform にて定義する(packages/infra/)。