目次
はじめに
こんにちは、ディーネットの山田です。
Amazon S3バケットのアクションを眺めていたら「署名付きURLで共有」という操作を見つけたので、共有を兼ねて記事にしてみました。
S3の署名付きURLとは
S3の署名付きURL(Pre-signed URL)は、プライベートなS3オブジェクトに対して一時的なアクセス権限を付与するURLです。期限付きでファイルのダウンロードやアップロードができるようになります。
今回は、ダウンロード目的でのみ利用します。
AWSマネジメントコンソールで操作してみた
- 署名付きURLを発行したい対象のファイルを選択
- 「アクション」から「署名付きURLで共有」をクリック
- 有効期限を設定(参考例では、30分間の有効期限を設定)
- 「署名付きURLを作成」をクリック
- クリップボードにコピーされたリンクを展開する
実際には、以下のようなURLがコピーされます
このURLにアクセスすると、S3に保存されているファイルを取得することができます。
https://s3.ap-northeast-1.amazonaws.com/s3signurl-blog-test-20250730/this%20is%20test%20file.txt?response-content-disposition=inline&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEKv%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDmFwLW5vcnRoZWFzdC0xIkYwRAIgABCDEFGHIJKLMNOPQRSTUVWXYZ012345678901234567890CICabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST0YcIKuMDCNT%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQABoMTEVNUExBVEVOVU1CRVIIgwoBPD1RUgNt00h1IkqtwM8d5MRkposfsVYadmx4mblx4fjoAyjJXaeuCIuhfMVWF9CkfxlHD5A%2BhxdCpvkoMQPHIVsPSvTsPfMIrKzcnoNvbhEHGV488nX%2FUvFVQz8WPF%2FazoFI3b6%2BNqFTotMTKnROixlj2%2FFZkHbbzOnJlSi%2Fiof7pAQYOlt17lQ5LWDIjHPh4TxOf5fUa5xvrmyh26VxsZH%2BUdlLJEKhYymxDhHlHorHyZ67lQVukqtdT7T5RPuqFQQHB%2Bapc8pot3S%2F2lbRDtRBwyanPcqZVqXz6p6qEHhQEdMSEubzcIshQzeYK9pcP3vnZ%2B2Y%2Bh1vNx3LALDaeorsTDyZtywWEVyL0UwQDtwhLNl2HIC9rY5bwLgrLZ8UCSCIFP7sNuKC5F%2FbcfCUbvzRnv1o3awQWQLPBcy81Goqsq7fjaZJtHlQpe%2BMN5e9xy%2Babgt3yLaVD5TCWXBN9ZuXwkElwIX9ltzCDcMHXUa9Xxju7oME9RI%2FpmDxRAf9QMubRTdZ9YjoKSUXtP7LhpWlDE3zY%2BbzJeTsEdhuesKy6i8EYuw883Z6UXFwWvy%2BCPJMMJEn6m2DJTQhepCK
実際にcurlでダウンロードしてみる
curlでアクセスすると実際に保存されているファイルの中身を標準出力できました。
$ curl "https://s3.ap-northeast-1.amazonaws.com/s3signurl-blog-test-20250730/this%20is%20test%20file.txt?response-content-disposition=inline&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEKv%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDmFwLW5vcnRoZWFzdC0xIkYwRAIgABCDEFGHIJKLMNOPQRSTUVWXYZ012345678901234567890CICabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST0YcIKuMDCNT%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQABoMTEVNUExBVEVOVU1CRVIIgwoBPD1RUgNt00h1IkqtwM8d5MRkposfsVYadmx4mblx4fjoAyjJXaeuCIuhfMVWF9CkfxlHD5A%2BhxdCpvkoMQPHIVsPSvTsPfMIrKzcnoNvbhEHGV488nX%2FUvFVQz8WPF%2FazoFI3b6%2BNqFTotMTKnROixlj2%2FFZkHbbzOnJlSi%2Fiof7pAQYOlt17lQ5LWDIjHPh4TxOf5fUa5xvrmyh26VxsZH%2BUdlLJEKhYymxDhHlHorHyZ67lQVukqtdT7T5RPuqFQQHB%2Bapc8pot3S%2F2lbRDtRBwyanPcqZVqXz6p6qEHhQEdMSEubzcIshQzeYK9pcP3vnZ%2B2Y%2Bh1vNx3LALDaeorsTDyZtywWEVyL0UwQDtwhLNl2HIC9rY5bwLgrLZ8UCSCIFP7sNuKC5F%2FbcfCUbvzRnv1o3awQWQLPBcy81Goqsq7fjaZJtHlQpe%2BMN5e9xy%2Babgt3yLaVD5TCWXBN9ZuXwkElwIX9ltzCDcMHXUa9Xxju7oME9RI%2FpmDxRAf9QMubRTdZ9YjoKSUXtP7LhpWlDE3zY%2BbzJeTsEdhuesKy6i8EYuw883Z6UXFwWvy%2BCPJMMJEn6m2DJTQhepCK"
this is test file
AWS CLIで操作してみた
- AWS CLIで以下のコマンドを実行
$ aws s3 presign "{共有したいオブジェクトのS3 URI}" --expires-in {有効期限}
https://s3.ap-northeast-1.amazonaws.com/s3signurl-blog-test-20250730/this%20is%20test%20file.txt?response-content-disposition=inline&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEKv%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDmFwLW5vcnRoZWFzdC0xIkYwRAIgABCDEFGHIJKLMNOPQRSTUVWXYZ012345678901234567890CICabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST0YcIKuMDCNT%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQABoMTEVNUExBVEVOVU1CRVIIgwoBPD1RUgNt00h1IkqtwM8d5MRkposfsVYadmx4mblx4fjoAyjJXaeuCIuhfMVWF9CkfxlHD5A%2BhxdCpvkoMQPHIVsPSvTsPfMIrKzcnoNvbhEHGV488nX%2FUvFVQz8WPF%2FazoFI3b6%2BNqFTotMTKnROixlj2%2FFZkHbbzOnJlSi%2Fiof7pAQYOlt17lQ5LWDIjHPh4TxOf5fUa5xvrmyh26VxsZH%2BUdlLJEKhYymxDhHlHorHyZ67lQVukqtdT7T5RPuqFQQHB%2Bapc8pot3S%2F2lbRDtRBwyanPcqZVqXz6p6qEHhQEdMSEubzcIshQzeYK9pcP3vnZ%2B2Y%2Bh1vNx3LALDaeorsTDyZtywWEVyL0UwQDtwhLNl2HIC9rY5bwLgrLZ8UCSCIFP7sNuKC5F%2FbcfCUbvzRnv1o3awQWQLPBcy81Goqsq7fjaZJtHlQpe%2BMN5e9xy%2Babgt3yLaVD5TCWXBN9ZuXwkElwIX9ltzCDcMHXUa9Xxju7oME9RI%2FpmDxRAf9QMubRTdZ9YjoKSUXtP7LhpWlDE3zY%2BbzJeTsEdhuesKy6i8EYuw883Z6UXFwWvy%2BCPJMMJEn6m2DJTQhepCK
発行されたURLに実際アクセスする
curlでアクセスすると先ほどと同様に保存されているファイルの中身を標準出力できました。
$ curl "https://s3.ap-northeast-1.amazonaws.com/s3signurl-blog-test-20250730/this%20is%20test%20file.txt?response-content-disposition=inline&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEKv%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDmFwLW5vcnRoZWFzdC0xIkYwRAIgABCDEFGHIJKLMNOPQRSTUVWXYZ012345678901234567890CICabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST0YcIKuMDCNT%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQABoMTEVNUExBVEVOVU1CRVIIgwoBPD1RUgNt00h1IkqtwM8d5MRkposfsVYadmx4mblx4fjoAyjJXaeuCIuhfMVWF9CkfxlHD5A%2BhxdCpvkoMQPHIVsPSvTsPfMIrKzcnoNvbhEHGV488nX%2FUvFVQz8WPF%2FazoFI3b6%2BNqFTotMTKnROixlj2%2FFZkHbbzOnJlSi%2Fiof7pAQYOlt17lQ5LWDIjHPh4TxOf5fUa5xvrmyh26VxsZH%2BUdlLJEKhYymxDhHlHorHyZ67lQVukqtdT7T5RPuqFQQHB%2Bapc8pot3S%2F2lbRDtRBwyanPcqZVqXz6p6qEHhQEdMSEubzcIshQzeYK9pcP3vnZ%2B2Y%2Bh1vNx3LALDaeorsTDyZtywWEVyL0UwQDtwhLNl2HIC9rY5bwLgrLZ8UCSCIFP7sNuKC5F%2FbcfCUbvzRnv1o3awQWQLPBcy81Goqsq7fjaZJtHlQpe%2BMN5e9xy%2Babgt3yLaVD5TCWXBN9ZuXwkElwIX9ltzCDcMHXUa9Xxju7oME9RI%2FpmDxRAf9QMubRTdZ9YjoKSUXtP7LhpWlDE3zY%2BbzJeTsEdhuesKy6i8EYuw883Z6UXFwWvy%2BCPJMMJEn6m2DJTQhepCK"
this is test file
まとめ
- S3署名付きURLを利用することで、S3バケットに保存されているファイルを簡単に共有することができました。
- ただ、発行される署名付きURLにはアクセストークンが付与されているので結構長いURLになっています。
- 実際には、このURLをそのまま利用するのではなくアプリケーションのバックエンドでこっそり使っているのが、無難な使い方ではないでしょうか。

プロフィール
テクニカルサポートは卒業して、フロントサイドでお客様環境の構築をさせていただいております。
たまに、テクニカルサポートでご対応させていただくことがあるかもしれませんが、その際はよろしくお願いいたします。
インフラ系のエンジニアですが、時々休日プログラマー(Python、PHP)をやっております。
LINK
クラウドベリージャム:プロフィールページ