画像閲覧用URL取得#

ID#

api004-upload

エンドポイント#

メソッドパス
GET/images/:id

概要#

指定した画像IDに対応する閲覧用Presigned URLを取得する。

リクエスト#

パスパラメータ#

物理名論理名必須説明
id画像IDstring (UUID)閲覧したい画像のID

レスポンス#

200 OK#

物理名論理名必須説明
url閲覧用URLstring画像の閲覧用Presigned URL
expiresAt有効期限stringURLの有効期限(ISO-8601形式)
{
  "url": "string",
  "expiresAt": "iso-8601"
}

ステータスコード#

コード説明
200成功
404指定IDの画像が存在しない

内部処理シーケンス#

sequenceDiagram
    autonumber
    actor User
    participant Hono as Hono Middleware
    participant Domain as Domain Service
    participant DB as Repository
    participant S3 as S3 Client

    User->>+Hono: 閲覧URLリクエスト (id)
    Hono->>+Domain: 閲覧URLリクエスト (id)
    Domain->>+DB: findById(id)
    DB-->>-Domain: image (s3Key)
    Domain->>+S3: getSignedUrl (GetObject, s3Key, expires=3600)
    S3-->>-Domain: url
    Domain-->>-Hono: Success (url, expiresAt)
    Hono-->>-User: 200 OK

懸案事項#

アクセス権限の未実装#

  • 現状: 画像IDさえ知っていれば誰でも閲覧可能
  • 影響: 他ユーザーのプライベート画像にアクセス可能になる
  • 対応方針: 画像所有者のみアクセス許可の認可チェック

TBD#

アクセス制御の細粒度化#

  • 画像ごとの公開・非公開設定
  • 特定ユーザーへのアクセス許可機能
  • 一時的なアクセスURL発行

キャッシュ戦略#

  • CloudFrontによるCDNキャッシュ
  • 閲覧URLのキャッシュ期間最適化
  • 画像の最適化(リサイズ)とキャッシュ