设置桶访问权限
您可以使用put_bucket_acl接口进行ACL的修改。存储桶ACL的设置包含了CannedAccesssControlList 与AccessControlList 两种格式。
-
Canned ACL
媒体存储支持一组预先定义的授权,称为Canned ACL。每个Canned ACL都有一组预定义的被授权者和权限,下表列出了相关的预定义授权含义。
ACL有如下几种”private”(私有读写),”public-read”(公共读私有写),”public-read-write”(公共读写),”authenticated-read”(注册用户可读)。
权限 描述 私有读写 存储桶拥有者有读写权限,其他用户没有访问权限。 公共读私有写 存储桶拥有者有读写权限,其他用户只有该存储桶的读权限。 公共读写 所有用户都有该存储桶的读写权限。 注册用户可读 存储桶拥有者有读写权限,注册用户具有该存储桶的读限。 put_bucket_acl操作可以通过access control list(ACL)设置一个存储桶的访问权限。用户在设置存储桶的ACL之前需要具备WRITE_ACP 权限。
def put_bucket_acl():
try:
resp = s3_client.put_bucket_acl(
Bucket='YOUR_BUCKET_NAME',
# ACL = private or public-read or public-read-write or authenticated-read
ACL='private'
)
print(resp)
except ClientError as e:
logging.error(e)
-
ACL
此种指定方式可以更加灵活的设置具体用户或组的访问权限。同样,用户在设置存储桶的ACL之前需要具备WRITE_ACP 权限。
权限参数 描述 GrantFullControl 赋予被授权者所有的权限。 GrantRead 赋予被授权者读的权限。 GrantReadACP 赋予被授权者读取存储桶的访问控制列表(ACL)和存储桶策略(Policy)的权限。 GrantWrite 赋予被授权者写入存储桶的权限。 GrantWriteACP 赋予被授权者写入存储桶的访问控制列表(ACL)和存储桶策略(Policy)的权限。
def put_bucket_acl():
try:
resp = s3_client.put_bucket_acl(
Bucket='YOUR_BUCKET_NAME',
GrantFullControl='id=YOUR_USER_ID_1,id=YOUR_USER_ID_2',
# GrantRead='id=YOUR_USER_ID',
# GrantReadACP='id=YOUR_USER_ID',
# GrantWrite='id=YOUR_USER_ID',
# GrantWriteACP='id=YOUR_USER_ID',
)
print(resp)
except ClientError as e:
logging.error(e)