†でおきしブログ†

ウナギ食べたいヽ(•̀ω•́ )ゝ✧

S3バケットのUPLOAD/DOWNLOAD/DELETEを調べていたら行き着く存在チェック(doesObjectExist)について【AWS SDK for PHP】

AWS SDK for PHPをちょこっと触ったのでメモ。

☆UPLOAD/DOWNLOAD/DELETEの方法ってザックリこのパターン

  1. UPLOAD
    • 署名付きURL経由でのクライアントからのアップロード
    • サーバサイドからのアップロード
  2. DOWNLOAD
    • 署名付きURL経由でのクライアントからのダウンロード
    • サーバサイドからのダウンロード
  3. DELETE
    • サーバサイドからのDELETE要求
★署名付きURLとは?

有効期限付きのURLを発行して、そのURL経由でクライアントとS3でお話してもらおうという仕組み。

クライアントとS3で直接お話してもらうとサーバ負荷とならないメリットがある。

【注意点】
ダウンロードの署名付きURLについては、対象がテキストファイル等であるとWebブラウザはダウンロードでなくブラウザ表示してしまうので、レスポンスヘッダに"Content-Disposition"を付けてファイル名をアタッチして回避する必要がある。

実はダウンロード用の署名付きURLを発行する際に、S3からのレスポンスヘッダに"Content-Disposition"を設定するためのパラメータ"ResponseContentDisposition"が存在する。
docs.aws.amazon.com


S3に触れなかったら"Content-Disposition"とか知らなかったよ…。

☆本題の存在チェック(doesObjectExist)

UPLOAD/DELETEのAPIって、最終的にちゃんとUPLOADされたのかDELETEされたのかAPIの返却値からだと判別できないみたい何ですよね。

なので存在チェックが必要になるのですが、調べてみるとやっぱりそういうAPIも存在していましたよ。
docs.aws.amazon.com

という報告エントリーでした。

☆蛇足

本稿の内容については、『AWS SDK for 何某』でS3アクセスする場合には共通する事だと思います。