我有一个ceph/radosgw桶,其中包含数百万个对象,我需要将存储桶的所有权更改为另一个用户。
通常,这是通过link对新用户执行桶,然后对其中的所有文件执行chown,如下所示:
radosgw-admin bucket unlink --uid=user1 --bucket=bigbucket
radosgw-admin bucket link --uid=user2 --bucket=bigbucket
radosgw-admin bucket chown --uid=user2 --bucket=bigbucket不幸的是,chown operation has to loop over every single object in the bucket为了更新元数据。这会导致延长停机时间窗口(有时是每百万对象1小时),旧用户和新用户都无法访问存储桶的全部内容。
是否有任何方法可以改变不需要停机时间的桶所有权?一些想法:
uid或其他元数据,让他们访问旧用户的桶吗?。
发布于 2021-06-30 16:46:11
在通过chown命令完成迁移之前,您可以向存储桶中添加一个桶策略,以访问两个用户:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {"AWS": ["arn:aws:iam:::user/user1", "arn:aws:iam:::user/user2"]},
"Action": "*",
"Resource": [
"arn:aws:s3:::bigbucket/*"
]
}]
}https://stackoverflow.com/questions/67943759
复制相似问题