设置桶访问权限

您可以使用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)