【发布时间】:2023-04-03 03:30:02
【问题描述】:
到目前为止,我可以从 docs 中了解到,您可以获取并放置 S3 存储桶的整个 ACL(访问控制列表)。
获取规格说明您获得了所有现有的资助。
把规范描述你需要写回整个 ACL 对象。
但是如果我只想插入一个新的受助者呢? (最好不要检索 ACL 中的所有授权才能做到这一点)
【问题讨论】:
标签: amazon-web-services amazon-s3 boto3
到目前为止,我可以从 docs 中了解到,您可以获取并放置 S3 存储桶的整个 ACL(访问控制列表)。
获取规格说明您获得了所有现有的资助。
把规范描述你需要写回整个 ACL 对象。
但是如果我只想插入一个新的受助者呢? (最好不要检索 ACL 中的所有授权才能做到这一点)
【问题讨论】:
标签: amazon-web-services amazon-s3 boto3
对我来说,以下工作(仍然不确定是否所有赠款都已转移):
grant = {
'Grantee': {
'DisplayName': grantee_id,
'ID': grantee_canonical_user_id,
'Type': 'CanonicalUser'
},
'Permission': 'FULL_CONTROL'
}
acl.grants.append(grant)
acl.put(
AccessControlPolicy={
'Grants': acl.grants,
'Owner': {
'ID': owner_canonical_user_id
}
})
【讨论】:
一个完整的例子是这样的:
s3_resource = boto3.resource('s3')
s3_bucket = s3_resource.Bucket("bucket_name")
bucket_acl = s3_bucket.Acl()
grant_write = {
"Grantee": {
"ID": "CANONICAL ID",
"Type": "CanonicalUser"
},
"Permission": "WRITE"
}
grant_read = {
"Grantee": {
"ID": "CANONICAL ID",
"Type": "CanonicalUser"
},
"Permission": "READ"
}
grant_read_acp = {
"Grantee": {
"ID": "CANONICAL ID",
"Type": "CanonicalUser"
},
"Permission": "READ_ACP"
}
bucket_acl.grants.append(grant_write)
bucket_acl.grants.append(grant_read)
bucket_acl.grants.append(grant_read_acp)
s3_acl_response = bucket_acl.put(
AccessControlPolicy={
"Grants": bucket_acl.grants,
"Owner": {
"DisplayName": "OWNER Account",
"ID": "OWNER CANONICAL ID"
}
})
【讨论】: