追加アップロードは、AppendObject メソッドを使用して、既存の追加可能オブジェクトにコンテンツを追加します。
注意事項
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスするには、内部エンドポイントを使用します。 サポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。 カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「一般的なシナリオの設定例」をご参照ください。
ファイルが存在しない場合、
Bucket#append_objectメソッドは追加可能オブジェクトを作成します。ファイルが既に存在する場合:
ファイルが追加可能オブジェクトであり、指定された追加位置がファイルの現在の長さと一致する場合、コンテンツはファイルの末尾に追加されます。
ファイルが追加可能オブジェクトであっても、指定された追加位置がファイルの現在の長さと一致しない場合、PositionNotEqualToLength 例外がスローされます。
ファイルが単純アップロードでアップロードされた通常のオブジェクトなど、追加可能オブジェクトではない場合、ObjectNotAppendable 例外がスローされます。
権限
デフォルトでは、Alibaba Cloud アカウントは完全な権限を持っています。 Alibaba Cloud アカウント配下の RAM ユーザーまたは RAM ロールは、デフォルトではいかなる権限も持っていません。 Alibaba Cloud アカウントまたはアカウント管理者は、RAM ポリシーまたはバケットポリシーを通じて操作権限を付与する必要があります。
API | アクション | 定義 |
AppendObject |
| この操作を呼び出して、既存のオブジェクトにオブジェクトを追加することでオブジェクトをアップロードできます。 |
| 既存のオブジェクトにオブジェクトを追加してアップロードする際に、x-oss-tagging を通じてオブジェクトタグを指定する場合、この権限が必要です。 |
サンプルコード
次のコードは、追加アップロードを実行する方法を示しています。
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')
# オブジェクトの完全なパスを指定します。 完全なパスにバケット名を含めることはできません。
bucket.append_object('my-object', 0)
# ファイルの末尾にコンテンツを追加します。
next_pos = bucket.append_object('my-object', 0) do |stream|
100.times { |i| stream << i.to_s }
end
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')関連ドキュメント
AppendObject API 操作の詳細については、「AppendObject」をご参照ください。