我希望使用boto/boto3修改S3存储桶策略。我已经发现了boto3中的两种模式,可以对存储桶策略进行操作。
# i can get bucket policy object as follows
import boto3
s3_conn = boto3.resource('s3')
bucket_policy = s3_conn.BucketPolicy('bucket_name')
# i can make put(), load(), policy on bucket_policy object.
#similar in other way i can use following code
policy = s3_conn.get_bucket_policy(Bucket='bucket_name')
# similar to this there are two other calls put_bucket_policy and delete_bucket_policy.
我希望更新存储桶策略,以便添加更多属性。
例如,我想在以下策略的Statement键下添加一个条目。
{
"Version": "2012-10-17",
"Id": "Policy14564645656",
"Statement": [{
"Sid": "Stmt1445654645618",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::6164563645030:root"
},
"Action": "s3:Get*",
"Resource": "arn:aws:s3:::bucket_name/abc/*"
}]
}
有没有简单明了的方法来实现这个?一种非常奇怪的方法是在 JSON 中添加入口,然后将其作为新策略进行 PUT,但我正在寻找一种允许用户更新策略而不知道现有策略的调用方法。