はじめに
こんな状況はありませんか?
NotebookLMで作った動画を友人に共有したい。でも、YouTubeに上げるほどでもないし、誰でも見れる状態にはしたくない…
この記事では、AWS S3の署名付きURL(Presigned URL) を使って、期限付きで安全にファイルを共有する方法を解説します。
今回のユースケース
- NotebookLMで作成した動画を友人数人に共有したい
- アクセス数は少ない(数人程度)
- 閲覧期間は短めでよい(数日〜1週間)
- 不特定多数には公開したくない
このような場合、署名付きURLがぴったりです。
署名付きURLとは?
署名付きURL(Presigned URL) は、S3のプライベートなファイルに一時的にアクセスできる特別なURLです。
| |
URLにアクセス権限の情報(署名)が埋め込まれているため、このURLを知っている人だけがファイルにアクセスできます。
なぜ署名付きURLを使うのか?
他の方法との比較
| 方法 | メリット | デメリット |
|---|---|---|
| S3を公開設定にする | 簡単 | 誰でもアクセスできてしまう |
| CloudFront + 署名付きCookie | 高機能 | 設定が複雑 |
| 署名付きURL | 簡単&安全 | URLが長い、期限がある |
少人数への一時的な共有なら、署名付きURLが最もシンプルです。
署名付きURLのメリット
- S3バケットは非公開のままでOK
- 期限を設定できる(1秒〜7日間)
- AWSアカウント不要で相手に共有できる
- URLをLINEやメールで送るだけ
仕組み
署名付きURLの仕組みをざっくり説明します。
| |
重要なのは、署名はあなたの認証情報で作成されるということ。つまり、あなたがアクセス権を持つファイルだけURLを生成できます。
実際にやってみよう
前提条件
- AWSアカウントを持っている
- S3バケットにファイルをアップロード済み
- AWS CLIがインストール済み
方法1: AWS CLIで生成(最も簡単)
| |
--expires-in 86400 で24時間(86400秒)有効なURLが生成されます。
| |
生成されたURLを友人にLINEやメールで送れば完了です。
方法2: AWSコンソールから生成
- AWSコンソールでS3を開く
- 対象のファイルを選択
- 「アクション」→「署名付きURLで共有」
- 有効期限を設定して「署名付きURLを作成」
GUIで簡単に作成できます。
方法3: Python(boto3)で生成
プログラムから生成したい場合はSDKを使います。
| |
方法4: Node.js(AWS SDK v3)で生成
| |
有効期限の目安
用途に応じて適切な有効期限を設定しましょう。
| 用途 | 推奨期限 | 秒数 |
|---|---|---|
| その場で見せる | 1時間 | 3600 |
| 当日中に見てほしい | 24時間 | 86400 |
| 数日中に見てほしい | 3日間 | 259200 |
| 1週間以内に見てほしい | 7日間 | 604800 |
注意: 署名付きURLの最大有効期限は7日間です(IAMユーザーの認証情報を使う場合)。
注意点
1. URLを知っていれば誰でもアクセスできる
署名付きURLは「知っている人なら誰でも」アクセスできます。URLが漏れると意図しない人にも見られる可能性があります。
対策: 信頼できる相手にだけ共有し、有効期限を短めに設定する。
2. 一度発行したURLは取り消せない
URLを発行した後、「やっぱり取り消したい」と思っても、有効期限が切れるまで無効化できません。
対策: 有効期限を必要最小限にする。どうしても無効化したい場合はファイル自体を削除する。
3. ダウンロード回数は制限できない
署名付きURLでは「3回までダウンロード可能」のような制限はできません。
対策: 期限を短くするか、CloudFrontの署名付きURLを検討する。
4. 大量アクセスには向かない
署名付きURLは一時的な共有向けです。多数のユーザーに配信する場合は、CloudFrontとの組み合わせを検討しましょう。
料金について
署名付きURLの生成自体は無料です。
ただし、以下の料金は発生します。
- S3ストレージ料金: ファイルの保存容量に応じて
- データ転送料金: ダウンロードされた分だけ
少人数への共有なら、ほぼ無視できる金額です(数円〜数十円程度)。
まとめ
署名付きURLのポイントをまとめます。
- 期限付きでプライベートファイルを共有できる
- S3バケットは非公開のままでOK
- AWS CLIなら
aws s3 presignで簡単に生成 - 最大有効期限は7日間
- URLが漏れるとアクセスされるので、信頼できる相手にだけ共有
友人への動画共有など、少人数への一時的な共有にはぴったりの方法です。
理解度チェック
問1
署名付きURLを使うと、S3バケットの公開設定はどうなりますか?
答え
非公開のままでOK。署名付きURL自体にアクセス権限の情報が含まれているため、バケットを公開する必要はない。問2
署名付きURLの最大有効期限は何日間ですか?
答え
7日間(604800秒)。IAMユーザーの認証情報を使う場合の制限。問3
発行した署名付きURLを途中で無効化できますか?
答え
できない。有効期限が切れるまで有効。無効化したい場合はファイル自体を削除する必要がある。問4
AWS CLIで署名付きURLを生成するコマンドは何ですか?
答え
`aws s3 presign s3://バケット名/ファイル名`。有効期限を指定する場合は `--expires-in 秒数` オプションを追加する。問5
署名付きURLの生成自体に料金はかかりますか?
答え
かからない(無料)。ただし、S3ストレージ料金とダウンロード時のデータ転送料金は発生する。問6
署名付きURLで「3回までダウンロード可能」のような回数制限はできますか?
答え
できない。署名付きURLでは期限内であれば何度でもアクセス可能。回数制限が必要な場合はCloudFrontの署名付きURLなど別の方法を検討する。問7
署名付きURLが漏れた場合のリスクを軽減するための対策を2つ挙げてください。