オブジェクトのアップロード後、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}"
endresumable_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