使用AWS CLI来备份和恢复S3 Bucket的ACL
S3 Bucket层面的权限管理,推荐使用Bucket Policy来管理,但可能会有一些遗留的S3 Bucket, 还使用着Bucket ACL来进行权限管理。
在将Bucket ACl升级为Bucket Policy或者是更新Bucket ACL的时候,会有备份Bucket ACL的需求。此处介绍一下如何使用AWS CLI来备份和恢复Bucket的Bucket ACL。
备份 Bucket ACL
使用CLI中s3api中的get-bucket-acl命令来保存bucket acl。
用法
|
|
例子
aws s3api get-bucket-acl
的输出默认是json格式。如下例子中,表示bucket允许任意AWS User都可以READ bucket中的object, 用户b0a30227944666c6a28c66c35d06e096a813a0c533e0a16ffb48ca8e6ba36149可以有FULL_CONTROL整个bucket。
备份
将命令的输出重定向到某个文件中,就可以备份该bucket的bucket acl了。
|
|
恢复 Bucket ACL
使用CLI中s3api中的put-bucket-acl命令来恢复bucket acl。
用法
|
|
其中,从文件中恢复ACL只需要关注 --bucket
(指定bucket)和--access-control-policy
(添加bucket ACL文件)这两个参数即可。
例子
使用先将Bucket carl-test-at-seoul中允许任意AWS User都可以READ object的权限去掉。去掉后,相关bucket acl如下:
12345678910111213141516$ aws s3api get-bucket-acl --bucket carl-test-at-seoul{"Owner": {"ID": "b0a30227944666c6a28c66c35d06e096a813a0c533e0a16ffb48ca8e6ba36149"},"Grants": [{"Grantee": {"Type": "CanonicalUser","ID": "b0a30227944666c6a28c66c35d06e096a813a0c533e0a16ffb48ca8e6ba36149"},"Permission": "FULL_CONTROL"}]}$再使用之前保存的acl文件来恢复该bucket的acl。
1$ aws s3api put-bucket-acl --bucket carl-test-at-seoul --access-control-policy file://bucket_acl_of_carl-test-at-seoul.json检查bucket的acl,可以看到已经恢复成acl文件中相应的权限了。
1234567891011121314151617181920212223$ aws s3api get-bucket-acl --bucket carl-test-at-seoul{"Owner": {"ID": "b0a30227944666c6a28c66c35d06e096a813a0c533e0a16ffb48ca8e6ba36149"},"Grants": [{"Grantee": {"Type": "Group","URI": "http://acs.amazonaws.com/groups/global/AuthenticatedUsers"},"Permission": "READ"},{"Grantee": {"Type": "CanonicalUser","ID": "b0a30227944666c6a28c66c35d06e096a813a0c533e0a16ffb48ca8e6ba36149"},"Permission": "FULL_CONTROL"}]}$