メインコンテンツまでスキップ

アップロード・ダウンロード用の署名付き 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 トークンと、actionname(アップロード時は contentTypeoverwrite も)を指定して本 API を呼び出し、レスポンスの urlmethodheaders を取得します。

ヒント

実装方法の詳細については、OpenAPI リファレンス(auth-getstorageurl)を参照してください。

2. 取得したレスポンスの利用(PUT・GET)

署名付き URL 取得 API のレスポンス(urlmethodheaders)を使って、後続リクエストを行う例です。

アップロード(curl)

上書き許可overwrite: true で URL 取得した場合。headersx-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 取得した場合。headersContent-Type のみ):

curl -i \
-X PUT \
-H "Content-Type: text/csv" \
--upload-file "<ファイルのパス>/upload-no-overwrite.csv" \
"<レスポンスの url>"
ダウンロード(curl)

ダウンロード(GET)

curl -i -X GET "<レスポンスの url>"
  • レスポンスの methodGET の場合に使用。url に対して GET でリクエストするとファイルを取得できます。

署名付き URL へのリクエストで発生しうるエラー

取得した署名付き URL に対して PUT/GET を送信した際に、ストレージ側から返される可能性のあるエラーです。

HTTP ステータス説明備考
400Bad Request署名付き URL の有効期限切れ。例: The provided token has expired.
400Bad Request署名時に含まれたヘッダーがリクエストに含まれていない、または誤っている場合。(x-goog-if-generation-match 等をレスポンスどおりに付けていない場合)例: Your request has a malformed header. Header was included in signedheaders, but not in the request.
404Not Foundダウンロード対象ファイルが存在しない場合例: The specified key does not exist.
412Precondition Failed同名ファイルが存在し、上書きが許可されていない場合。例: At least one of the pre-conditions you specified did not hold.

注意事項

  • ファイル範囲: テナントに紐づくカスタムストレージのファイルのみアクセス可能です。
  • 署名付き URL 有効期限: 署名付き URL は 15 分間有効です。取得後は速やかに PUT/GET を実行してください。
警告

アクセストークン有効期限: アクセストークンの有効期限を過ぎた場合は、アクセストークン取得 APIで再取得してください。

備考

ファイル一覧の取得方法についてはファイル一覧取得 APIを参照してください。