すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:アップロードコールバック (Ruby SDK)

最終更新日:Nov 30, 2025

オブジェクトのアップロード後、Object Storage Service (OSS) はアプリケーションサーバーにコールバックリクエストを送信できます。 コールバックを実装するには、関連するコールバックパラメーターを含むリクエストを OSS に送信するだけで済みます。

注意事項

  • ファイルをアップロードする際に、アップロードコールバックを指定できます。 アップロードが成功すると、OSS は指定されたサーバーアドレスに HTTP POST リクエストを送信します。 これにより、受信したコールバックに基づいて操作を実行できます。

  • コールバック URL にはクエリ文字列を含めることはできません。 クエリ文字列は :query パラメーターで指定する必要があります。

  • ファイルが正常にアップロードされてもコールバックが失敗した場合、クライアントは CallbackError をスローします。 このエラーを無視したい場合は、明示的に例外を処理する必要があります。

  • コールバックを受け入れるサーバーの詳細については、「callback_server.rb」をご参照ください。

コード例

アップロードコールバックは、`put_object` と `resumable_upload` を使用したファイルアップロードでのみサポートされています。

put_object 使用時のアップロードコールバックの指定

`put_object` を使用してファイルをアップロードする際に、アップロードコールバックを指定します。 アップロード対象のバケットとオブジェクトの情報をコールバックの本文に追加します。 アプリケーションサーバーで受信したコールバックにより、ファイルが OSS に正常にアップロードされたことが確認されます。

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # エンドポイントの例として、中国 (杭州) リージョンを使用します。 実際のリージョンに基づいてエンドポイントを指定してください。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
    # 環境変数からアクセス認証情報を取得します。 コード例を実行する前に、環境変数 OSS_ACCESS_KEY_ID と OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# バケット名を指定します (例: examplebucket)。
bucket = client.get_bucket('examplebucket')

callback = Aliyun::OSS::Callback.new(
  url: 'http://oss-demo.aliyuncs.com:23450',
  query: {user: 'put_object'},
  body: 'bucket=${bucket}&object=${object}'
)

begin
  bucket.put_object('files/hello', file: '/tmp/x', callback: callback)
rescue Aliyun::OSS::CallbackError => e
  puts "Callback failed: #{e.message}"
end

resumable_upload 使用時のアップロードコールバックの指定

`resumable_upload` の手順は `put_object` のものと類似しています。

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # エンドポイントの例として、中国 (杭州) リージョンを使用します。 実際のリージョンに基づいてエンドポイントを指定してください。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
    # 環境変数からアクセス認証情報を取得します。 コード例を実行する前に、環境変数 OSS_ACCESS_KEY_ID と OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# バケット名を指定します (例: examplebucket)。
bucket = client.get_bucket('examplebucket')

callback = Aliyun::OSS::Callback.new(
  url: 'http://oss-demo.aliyuncs.com:23450',
  query: {user: 'put_object'},
  body: 'bucket=${bucket}&object=${object}'
)

begin
  bucket.resumable_upload('files/hello', '/tmp/x', callback: callback)
rescue Aliyun::OSS::CallbackError => e
  puts "Callback failed: #{e.message}"
end

関連ドキュメント

  • アップロードコールバックの完全なコード例については、「GitHub の例」をご参照ください。

  • アップロードコールバックの API 操作の詳細については、「Callback」をご参照ください。