Tüm Ürünler
Search
Belge Merkezi

Object Storage Service:Copy an object (Ruby SDK)

Son Güncelleme:Oct 01, 2026

Bu konu, aynı bölgedeki bir kaynak paketten aynı veya farklı bir hedef pakete nesnenin nasıl kopyalanacağını açıklar.

Notlar

  • Bu konuda Çin (Hangzhou) bölgesinin genel uç noktası kullanılmaktadır. Aynı bölgedeki diğer Alibaba Cloud hizmetlerinden OSS'e erişmek için dahili uç noktayı kullanın. Desteklenen bölgeler ve uç noktalar hakkında daha fazla bilgi için bkz. Bölgeler ve uç noktalar.

  • Bu konuda erişim kimlik bilgileri ortam değişkenlerinden alınır. Daha fazla bilgi için bkz. Erişim kimlik bilgilerini yapılandırma.

  • Bu konuda bir OSS uç noktası kullanılarak bir OSSClient örneğinin nasıl oluşturulacağı gösterilmektedir. Özel alan adı kullanma veya Security Token Service (STS) kimlik bilgileriyle kimlik doğrulama gibi alternatif yapılandırmalar için bkz. İstemci yapılandırması.

  • Kaynak nesne üzerinde okuma iznine ve hedef paket üzerinde okuma/yazma iznine sahip olmanız gerekir.

  • Kaynak ve hedef paketlerde saklama ilkeleri yapılandırılmamış olmalıdır. Aksi takdirde kopyalama işlemi başarısız olur ve The object you specified is immutable. hatası döndürülür.

  • Bölgeler arası kopyalama desteklenmez. Örneğin, bir nesneyi Çin (Hangzhou) bölgesindeki bir paketten Çin (Qingdao) bölgesindeki bir pakete kopyalayamazsınız.

İzinler

Varsayılan olarak bir Alibaba Cloud hesabı tam izinlere sahiptir. Bir Alibaba Cloud hesabı altındaki RAM kullanıcıları veya RAM rolleri varsayılan olarak herhangi bir izne sahip değildir. Alibaba Cloud hesabı veya hesap yöneticisi, işlem izinlerini RAM ilkeleri veya Paket İlkesi aracılığıyla vermelidir.

API

Eylem

Açıklama

CopyObject

oss:GetObject

Nesneleri bir paket içinde veya aynı bölgedeki paketler arasında kopyalar.

oss:PutObject

oss:GetObjectVersion

versionId aracılığıyla kaynak nesne sürümünü belirtirseniz bu izin de gereklidir.

oss:GetObjectTagging

x-oss-tagging aracılığıyla nesne etiketlerini kopyalarsanız bu izinler gereklidir.

oss:PutObjectTagging

oss:GetObjectVersionTagging

versionId aracılığıyla kaynak nesnenin belirli bir sürümünün etiketlerini belirtirseniz bu izin de gereklidir.

kms:GenerateDataKey

Bir nesneyi kopyalarken, hedef nesne meta verileri X-Oss-Server-Side-Encryption: KMS içeriyorsa bu iki izin gereklidir.

kms:Decrypt

Örnek kod

Bir nesneyi kopyalamak ve nesne meta verilerini :meta_directive parametresini kullanarak belirtmek için bucket.copy_object yöntemini kullanabilirsiniz. Kopyalama işlemi sırasında nesne meta verilerini aşağıdaki yollardan biriyle işleyebilirsiniz:

  • meta parametresini belirtmezseniz hedef nesnenin meta verileri kaynak nesneninkilerle aynı olur.

  • meta parametresini belirtirseniz kaynak nesnenin meta verileri yeni meta verilerle üzerine yazılır.

Aşağıdaki kod bir nesnenin nasıl kopyalanacağını göstermektedir:

require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
  # Specify the Endpoint for the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the Endpoint to https://oss-cn-hangzhou.aliyuncs.com.
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)

# Specify the bucket name. Example: examplebucket.
bucket = client.get_bucket('examplebucket')

# Copy the object and its metadata.
bucket.copy_object(
  # In this example, srcobject.txt is copied as destobject.txt.
  'destobject.txt', 'srcobject.txt',
  :meta_directive => Aliyun::OSS::MetaDirective::COPY)

# Copy the object and overwrite its metadata.
bucket.copy_object(
  'destobject.txt', 'srcobject.txt',
  :metas => {'year' => '2017'},
  :meta_directive => Aliyun::OSS::MetaDirective::REPLACE)            

İlgili bilgiler

CopyObject API işlemi hakkında daha fazla bilgi için bkz. CopyObject.