AppendObject操作を呼び出して、既存の追加可能オブジェクトにコンテンツを追加できます。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba Cloudサービスを使用してObject Storage Service (OSS) にアクセスする場合は、内部エンドポイントを使用します。 OSSでサポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSecurity Token Service (STS) を使用してOSSClientインスタンスを作成する場合は、「OSSClientインスタンスの作成」をご参照ください。
追加アップロードを使用するには、
oss:PutObject
権限が必要です。 詳細については、「RAMポリシーの一般的な例」をご参照ください。コンテンツを追加するオブジェクトが存在しない場合、
append_object
操作を呼び出すと追加可能なオブジェクトが作成されます。コンテンツを追加するオブジェクトが存在する場合:
オブジェクトが追加可能なオブジェクトであり、追加操作が開始される指定された位置が現在のオブジェクトサイズに等しい場合、データはオブジェクトの最後に追加されます。
オブジェクトが追加可能オブジェクトであり、追加操作の開始位置が現在のオブジェクトサイズと等しくない場合、PositionNotEqualToLengthエラーが返されます。
オブジェクトが追加可能オブジェクトでない場合、ObjectNotAppendableエラーが返されます。
CopyObject操作は、追加可能なオブジェクトでは実行できません。
例
次のコードは、追加アップロードを実行してオブジェクトをアップロードする方法の例を示しています。
'aliyun/oss 'が必要です
client = Aliyun::OSS::Client.new (
# この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。
エンドポイント: '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')
# my-objectをオブジェクトの完全パスに置き換えます。 バケット名をフルパスに含めないでください。
bucket.append_object('my-object', 0)
# オブジェクトの末尾にコンテンツを追加します。
next_pos = bucket.append_object('my-object', 0) do | stream |
100.times { | i | stream << i.to_s}
終了
next_pos = bucket.append_object('my-object ', next_pos, :file => 'local-file-1')
next_pos = bucket.append_object('my-object ', next_pos, :file => 'local-file-2')
参考資料
追加アップロードを実行するために呼び出すことができるAPI操作の詳細については、「AppendObject」をご参照ください。