アップロード・ダウンロード用の署名付き URL 取得 API
概要
カスタムストレージに保存されたファイルを安全にアップロード・ダウンロードするための API です。アクセストークン取得 APIで取得した Bearer トークンで認証し、15 分間有効な署名付き URL を発行します。取得した URL に対し、アップロードの場合は PUT、ダウンロードの場合は GET で直接ファイルの送受信を行います。
事前準備
1. カスタムストレージの有効化
本 API はカスタムストレージが有効な場合にのみ利用できます。事前にカスタムストレージが有効化されているかご確認ください。
2. アクセストークンの取得
アクセストークン取得 APIを呼び出し、access_token を取得してください。本 API ではこのトークンを Bearer 認証に使用します。
3. IP アドレス制限(任意)
必要に応じてIP アドレス制限を設定できます。設定している場合は、許可された送信元 IP からのみリクエスト可能です。
使用手順
1. 署名付き URL の取得
Bearer トークンと、action・name(アップロード時は contentType・overwrite も)を指定して本 API を呼び出し、レスポンスの url・method・headers を取得します。
実装方法の詳細については、OpenAPI リファレンス(auth-getstorageurl)を参照してください。
2. 取得したレスポンスの利用(PUT・GET)
署名付き URL 取得 API のレスポンス(url・method・headers)を使って、後続リクエストを行う例です。
上書き許可(overwrite: true で URL 取得した場合。headers に x-goog-if-generation-match が含まれる):
curl -i \
-X PUT \
-H "Content-Type: text/csv" \
-H "x-goog-if-generation-match: 0" \
--upload-file "<ファイルのパス>/upload-overwrite.csv" \
"<レスポンスの url>"
上書き不許可(overwrite: false または 未指定 で URL 取得した場合。headers は Content-Type のみ):
curl -i \
-X PUT \
-H "Content-Type: text/csv" \
--upload-file "<ファイルのパス>/upload-no-overwrite.csv" \
"<レスポンスの url>"
ダウンロード(GET)
curl -i -X GET "<レスポンスの url>"
- レスポンスの
methodがGETの場合に使用。urlに対して GET でリクエストするとファイルを取得できます。
署名付き URL へのリクエストで発生しうるエラー
取得した署名付き URL に対して PUT/GET を送信した際に、ストレージ側から返される可能性のあるエラーです。
| HTTP ステータス | 値 | 説明 | 備考 |
|---|---|---|---|
| 400 | Bad Request | 署名付き URL の有効期限切れ。 | 例: The provided token has expired. |
| 400 | Bad Request | 署名時に含まれたヘッダーがリクエストに含まれていない、または誤っている場合。(x-goog-if-generation-match 等をレスポンスどおりに付けていない場合) | 例: Your request has a malformed header. Header was included in signedheaders, but not in the request. |
| 404 | Not Found | ダウンロード対象ファイルが存在しない場合 | 例: The specified key does not exist. |
| 412 | Precondition Failed | 同名ファイルが存在し、上書きが許可されていない場合。 | 例: At least one of the pre-conditions you specified did not hold. |
注意事項
- ファイル範囲: テナントに紐づくカスタムストレージのファイルのみアクセス可能です。
- 署名付き URL 有効期限: 署名付き URL は 15 分間有効です。取得後は速やかに PUT/GET を実行してください。
アクセストークン有効期限: アクセストークンの有効期限を過ぎた場合は、アクセストークン取得 APIで再取得してください。
ファイル一覧の取得方法についてはファイル一覧取得 APIを参照してください。