我想使用node来实现云对象存储的两个实例之间的备份和恢复机制。我向实例中添加了一个服务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"}
发布于 2019-02-22 20:09:53
因此,由于一些不直观的术语,这里的故障有点令人困惑。
服务实例是桶的集合。拥有多个COS实例的主要原因是您的账单中有更多的粒度,因为您将为每个实例获得一个单独的行项。然而,这个术语有点误导,因为COS是一个真正的多租户系统--实际上不是提供COS的一个实例,而是在现有系统中提供某种子帐户。
桶用于将数据分割为不同的存储位置或存储类。其他行为,如CORS、归档或保留,也在桶级起作用。您不希望在不同的存储桶之间分割您希望扩展的东西(比如客户数据),因为一个实例中的~1k桶是有限制的。IAM将存储桶视为“资源”,并受IAM策略的约束。
相反,不需要按位置或类隔离且希望受相同CORS、生命周期、保留或IAM策略约束的数据可以用前缀分隔。这意味着许多类似的对象共享一个路径,比如foo/bar和foo/bas具有相同的前缀foo/。这有助于清单和组织,但不提供细粒度访问控制或任何其他类型的策略类功能。
现在,对于你的问题,答案是肯定的和不是的。如果桶在同一个实例中,那么没有问题。桶名是唯一的,所以只要没有任何二级托管加密(例如密钥保护),跨桶复制就没有问题,即使它们跨越区域。但是,请记住,复制大型对象需要时间,COS的强一致性可能导致操作在完成之前可能不会返回响应的情况。目前不支持跨实例进行复制。
发布于 2019-02-21 21:34:30
只要您能够正确地授予请求用户访问权限,使其能够读取put副本的源,只要您不使用基于KeyProtect的密钥,这就可以工作。
https://stackoverflow.com/questions/54806148
复制相似问题