S3のオブジェクトURLを自分で作るように実装した

S3に画像ファイルなどをアップロードする際、そのファイルのパブリックなURLを作成する方法を試してみました。

S3のオブジェクトURLは「https://+バケット名+リージョン名+アップロードするファイル名」になるみたいなので、ファイル名さえ自分で調整すればオブジェクトURL作れるなあということで下記のコードでファイル名を作成しました。

// 現在時刻
now := time.Now()

// nowをstringに変換
fileName := now.Format("2006-01-02-15-04-05")

上記のfileNameでS3にアップロードすれば「「https://+バケット名+リージョン名+アップロードした時刻」でオブジェクトURLができるので、それをDBに格納しておけばアプリで参照できました。

良い方法かどうかわかりませんが、一応一意のオブジェクトURLが作れているみたいなので、自分のアプリではしばらくこの実装で開発を進めようと思います。

ただユーザーが同じ時刻にアップロードしたらオブジェクトURLかぶることもあるのかどうか気になるので、後々検証したいところです。

まずは一つの機能を完璧に仕上げるよりwebサービスとして形になってるものを作ることを優先していって、一通りできた段階でより良い実装にリファクタリングしていきます。