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

Object Storage Service:オブジェクトのコピー

最終更新日:Dec 20, 2023

このトピックでは、バケット内または同じリージョン内のバケット間でObject Storage Service (OSS) オブジェクトをコピーする方法について説明します。

使用上の注意

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba Cloudサービスを使用してOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSでサポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。

  • このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSecurity Token Service (STS) を使用してOSSClientインスタンスを作成する場合は、「OSSClientインスタンスの作成」をご参照ください。

  • オブジェクトをコピーするには、ソースオブジェクトに対する読み取り権限と、宛先バケットに対する読み取りおよび書き込み権限が必要です。

  • ソースバケットとターゲットバケットに保持ポリシーが設定されていないことを確認します。 それ以外の場合、エラーメッセージ指定したオブジェクトは不変です。 が返されます。

  • ソースバケットと宛先バケットは同じリージョンにある必要があります。 たとえば、中国 (杭州) リージョンにあるバケットから中国 (青島) リージョンにある別のバケットにオブジェクトをコピーすることはできません。

bucket.copy_object操作を呼び出してオブジェクトをコピーし、:meta_ディレクティブパラメーターを使用してオブジェクトメタデータを指定します。 オブジェクトをコピーすると、メタパラメーターが指定されているかどうかに基づいて、宛先オブジェクトのメタデータが決定されます。

  • metaパラメーターが指定されていない場合、ソースオブジェクトのメタデータがターゲットオブジェクトにコピーされます。

  • metaパラメーターが指定されている場合、指定されたオブジェクトメタデータが宛先オブジェクトのメタデータとして使用されます。

次のコードは、オブジェクトをコピーする方法の例を示しています。

'aliyun/oss 'が必要です
client = Aliyun::OSS::Client.new (
  # バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
  エンドポイント: '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.copy_object (
  # この例では、ソースバケットのsrcobject.txtは、ターゲットバケットのdestobject.txtにコピーされます。 
  'destobject.txt '、'srcobject.txt' 、
  : meta_directive => Aliyun::OSS::MetaDirective::COPY)

# オブジェクトをコピーし、元のメタデータを上書きします。 
bucket.copy_object (
  'destobject.txt '、'srcobject.txt' 、
  : metas => {'year' => '2017'} 、
  : meta_directive => Aliyun::OSS::MetaDirective::REPLACE) 

参考資料

オブジェクトをコピーするために呼び出すことができるAPI操作の詳細については、「CopyObject」をご参照ください。