署名つきURLでS3オブジェクトを公開する
January 30, 2025S3バケットにあるプライベートオブジェクトの署名つきURLを発行すれば、URLを知るユーザーのみにオブジェクトを公開できる。 発行方法はAWSの記事で紹介されている。
記事にしたがってURLを発行してみたところ、バケットとファイル手間がかかった。 また、URLを発行するクライアントを生成する方法が記事になく、別途調査する必要があった。
これまでに何度かURLを発行する方法を調べたことがあるので、今後のために、バケットとファイルを用意するterraformのコードと、ファイルのURLを発行するGoのコードをGitHubのリポジトリに公開した。
リポジトリのルートにあるMakefile
のrun
ターゲットで、S3オブジェクトを配置し、配置したオブジェクトの署名つきURLを発行できる。
コマンドの実行例を以下に示す。
make AWS_REGION=<aws_region> AWS_PROFILE=<profile> BUCKET_NAME=<bucket_name>
自分の環境では、terraformで作成直後のS3バケットにファイルを置こうとするとエラーになった。
その場合、再度上のコマンドを実行すれば、あらてめてファイルを置き、URLを発行することができる。
発行されたURLは標準出力に表示される。
S3バケットを削除する場合、remove-aws
コマンドを実行すればいい。