🗄️

署名付きURLでのファイルアップロードができるツール

2023/04/13に公開

この記事では、私が作成した署名付きURLのアップロードサイト、https://sora.fukui.jp/tools/file_upload/ を紹介します。このツールは、署名付きURLを使用してファイルをダイレクトにアップロードすることができるサービスです。
自分が使いたかったので作りました。とはいってもReactで100行にも満たない簡単なツールですが...
ついでに署名付きURLでのアップロードについて簡単に説明したいと思います。

1.署名付きURLとは?

署名付きURLとは、一定期間限定でアクセス可能なURLのことです。これを使用することで、URLを知っている特定のユーザーに限定してファイルをアップロードさせることができます。署名付きURLは、アクセスキー、シークレットキー、バケット名、オブジェクト名、有効期限を元に生成されるため、第三者による不正アップロードをある程度防ぐことができます。

2. 署名付きURLの利点

署名付きURLを使用することで、以下のような利点があります。

セキュリティ: アクセス権限が制限され、有効期限が設定されているため、比較的安全にアップロード機能を実現することができます。
パフォーマンス: サーバーを経由せずに直接ストレージサービスへアップロードすることで、サーバーの負荷軽減やアップロード速度の向上が期待できます。
簡単な実装: プログラムで署名付きURLを生成し、それを利用するだけで簡単にアップロード機能を実現できます。

3. 署名付きURLの生成方法

署名付きURLは、様々なプログラミング言語やクラウドストレージサービスのSDKを使用して生成することができます。例えば、AWS S3では、PythonのBoto3ライブラリを使って以下のように署名付きURLを生成できます。

import boto3

s3_client = boto3.client(
    "s3", 
    endpoint_url="your_endpoint_url",
    aws_access_key_id="your_key_id",
    aws_secret_access_key="your_secret_key"
)

presigned_url = self.s3_client.generate_presigned_url(
	"put_object",
	Params={"Bucket": bucket_name, "Key": file_name, "ContentType": mime_type},
	ExpiresIn=3600,
)

この例では、有効期限が1時間(3600秒)のPUTメソッド用の署名付きURLを生成しています。必要に応じて、他のストレージサービスや言語でも同様の方法で署名付きURLを生成できます。

4. ツールの使い方

私が作成した署名付きURLのアップロードサイト、https://sora.fukui.jp/tools/file_upload/ を使ってファイルをアップロードする方法は以下の通りです。

  1. 事前に署名付きURLを生成しておきます(前述の方法を参照)。
  2. ツールのページにアクセスします。
  3. 「署名付きURL」の入力欄に生成した署名付きURLを入力します。
  4. 「ファイル選択」ボタンをクリックして、アップロードしたいファイルを選択します。
  5. 「アップロード」ボタンをクリックして、ファイルのアップロードを実行します。
  6. アップロードが正常に完了すると、「アップロードが成功しました」というメッセージが表示されます。

5. まとめ

この記事では、私が作成した署名付きURLのアップロードサイト、https://sora.fukui.jp/tools/file_upload/ を紹介し、署名付きURLの仕組みや利点、生成方法、そしてツールの使い方について説明しました。ぜひ使ってみてください。

Discussion