Ibm cloud 是否可以将对象从一个云对象存储实例复制到另一个云对象存储实例。桶位于不同的区域

Ibm cloud 是否可以将对象从一个云对象存储实例复制到另一个云对象存储实例。桶位于不同的区域,ibm-cloud,object-storage,Ibm Cloud,Object Storage,我想使用NodeSDK在两个云对象存储实例之间实现备份和恢复机制。我已将服务ID添加到实例中,并为服务ID添加了访问我要写入的实例中存在的存储桶的权限。铲斗将位于不同的区域。我尝试了各种端点,包括遗留和非遗留的私有和公共端点,以实现这一点,但我通常会被拒绝访问 我试图用sdk做的事情可能吗?如果是这样,有人能给我指出正确的方向吗 var config = { "apiKeyId": "xxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxx", "endpoin

我想使用NodeSDK在两个云对象存储实例之间实现备份和恢复机制。我已将服务ID添加到实例中,并为服务ID添加了访问我要写入的实例中存在的存储桶的权限。铲斗将位于不同的区域。我尝试了各种端点,包括遗留和非遗留的私有和公共端点,以实现这一点,但我通常会被拒绝访问

我试图用sdk做的事情可能吗?如果是这样,有人能给我指出正确的方向吗

var config = {
 "apiKeyId": "xxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxx",
 "endpoint": "s3.eu-gb.objectstorage.softlayer.net",
 "iam_apikey_description": "Auto generated apikey during resource-key operation for Instance - crn:v1:bluemix:public:cloud-object-storage:global:a/xxxxxxxxxxx:xxxxxxxxxxx::",
 "iam_apikey_name": "auto-generated-apikey-xxxxxxxxxxxxxxxxxxxxxx",
 "iam_role_crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer",
 "iam_serviceid_crn": "crn:v1:bluemix:public:iam-identity::a/0xxxxxxxxxxxxxxxxxxxx::serviceid:ServiceIdxxxxxxxxxxxxxxxxxxxxxx",
 "serviceInstanceId": "crn:v1:bluemix:public:cloud-object-storage:global:a/xxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxx::",
"ibmAuthEndpoint": "iam.cloud.ibm.com/oidc/token"

}

只要您能够正确地授予请求用户访问权限,以便能够读取put副本的源,只要您没有使用基于KeyProtect的密钥,这项功能就应该可以工作

由于一些不直观的术语,这里的细分有点混乱

服务实例是存储桶的集合。拥有多个COS实例的主要原因是在您的账单中有更多的粒度,因为每个实例都有一个单独的行项目。但是,这个术语有点误导,因为COS是一个真正的多租户系统-实际上您并没有设置COS的实例,而是在现有系统中设置了一种子帐户

存储桶用于将数据分为不同的存储位置或存储类别。其他行为,如CORS、归档或保留,也会在存储桶级别上起作用。您不希望在不同的存储桶之间分割您希望扩展的内容(如客户数据),因为在一个实例中有~1k个存储桶的限制。IBM Cloud IAM将存储桶视为“资源”,并受IAM策略的约束

相反,不需要按位置或类别进行隔离的数据,以及您希望遵守相同CORS、生命周期、保留期或IAM策略的数据,可以通过前缀进行分隔。这意味着一组类似的对象共享一条路径,例如
foo/bar
foo/bas
具有相同的前缀
foo/
。这有助于列表和组织,但不提供细粒度访问控制或任何其他类似策略的功能


现在,对于你的问题,答案是肯定和否定。如果桶在同一个实例中,那么没有问题。Bucket名称是唯一的,因此只要不存在任何二级托管加密(例如密钥保护),跨Bucket复制就不会有问题,即使它们跨越多个区域。但是,请记住,复制大型对象需要时间,COS的强一致性可能会导致操作在完成之前可能不会返回响应的情况。当前不支持跨实例复制。

您是否登录到这两个实例?老实说,不知道如何回答。我有一个从IAM获得的服务凭证,并附在实例1上。然后,我授予这个serviceId对第二个服务中的bucket的访问权。然后,我获取该服务id并尝试使用它来使用sdk访问COS-
var AWS=require('ibm-COS-sdk')//将配置设置为高于var cos=new AWS.S3(配置)您需要登录cos1进行读取,登录cos2进行写入,这意味着我们需要从COS复制所有数据并再次上传?JavaScript SDK中的copyObject函数只在同一个实例中有用吗?我的理解是,它在一个实例中-如果您使用两个独立的服务,您可以在它们之间进行切换。谢谢您的回答。我没有使用密钥保护,并且在同一实例中尝试了对不同区域的存储桶进行读写。我不清楚如何使用eu de中的bucket连接到一个实例,并写入美国南部的实例。要与他们交互,我可以使用相同的凭证,但我必须在调用之间更改端点。如果我不更改端点,我会得到一个NoSuchBucket错误,当尝试列出对象时,如果尝试使用copyObject方法,我可以从bucket 1读取,但当我尝试写入bucket 2时,我会得到一个NoSuchKey错误,对象不应该存在