详情页标题前

阿里云对象存储OSSJava管理存储空间读写权限-云淘科技

详情页1

存储空间(Bucket)是存储对象(Object)的容器。对象都隶属于存储空间。本文介绍如何设置和获取存储空间读写权限(ACL)。

注意事项

  • 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见访问域名和数据中心。
  • 本文以从环境变量读取访问凭证为例。如何配置访问凭证,请参见Java配置访问凭证。

  • 本文以OSS域名新建OSSClient为例。如果您希望通过自定义域名、STS等方式新建OSSClient,请参见新建OSSClient。
  • 要设置存储空间读写权限,您必须有oss:PutBucketAcl权限;要获取存储空间读写权限,您必须有oss:GetBucketAcl权限。具体操作,请参见为RAM用户授权自定义的权限策略。

设置存储空间读写权限

存储空间的读写权限(ACL)有以下三类:

取值

描述

方法

私有

存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户没有权限操作该存储空间内的文件。

CannedAccessControlList.Private

公共读

存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户只有该存储空间内的文件的读权限。请谨慎使用该权限。

CannedAccessControlList.PublicRead

公共读写

所有用户都有该存储空间内的文件的读写权限。请谨慎使用该权限。

CannedAccessControlList.PublicReadWrite

以下代码用于设置存储空间的访问权限:

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.CannedAccessControlList;

public class Demo {

    public static void main(String[] args) throws Exception {
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // 填写Bucket名称,例如examplebucket。
        String bucketName = "examplebucket";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            // 设置存储空间的读写权限。例如将examplebucket的读写权限ACL设置为私有Private。
            ossClient.setBucketAcl(bucketName, CannedAccessControlList.Private);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

获取存储空间读写权限

以下代码用于获取存储空间的读写权限:

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.AccessControlList;

public class Demo {

    public static void main(String[] args) throws Exception {
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // 填写Bucket名称,例如examplebucket。
        String bucketName = "examplebucket";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            // 获取存储空间的读写权限。
            AccessControlList acl = ossClient.getBucketAcl(bucketName);
            System.out.println(acl.toString());
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}  

相关文档

  • 关于管理存储空间读写权限的完整示例代码,请参见GitHub示例。

  • 关于设置存储空间读写权限的API接口说明,请参见PutBucketAcl。

  • 关于获取存储空间读写权限的API接口说明,请参见GetBucketAcl。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/158013.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云RDS数据库资源包概述-云淘科技

    为了更好地帮助您节省成本,云数据库RDS推出预付费资源包,分别为存储包和计算包。 相对于RDS按量付费方式,RDS资源包可以帮助您节省成本,且资源包的规格容量越大,购买时长越长,越划算。 抵扣对象 存储包与计算包可抵扣RDS MySQL、RDS PostgreSQL、RDS SQL Server和RDS MariaDB实例的以下计费项: 项目 计算包 存储包…

    阿里云数据库 2023年12月9日
  • 阿里云对象存储OSSHive使用JindoSDK处理OSS-HDFS服务中的数据-云淘科技

    使用Hive搭建离线数仓时,随着数据量的不断增长,传统的基于HDFS存储的数仓可能无法以较低成本满足用户的需求。在这种情况下,您可以使用OSS-HDFS服务作为Hive数仓的底层存储,并通过JindoSDK获得更好的读写性能。 前提条件 已创建ECS实例。具体步骤,请参见选购ECS实例。 已开通并授权访问OSS-HDFS服务。具体操作,请参见开通并授权访问O…

    阿里云对象存储 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云RDS数据库修改或重置账号权限-云淘科技

    您可以根据需要修改普通账号的权限,重置高权限账号的权限为初始状态。 重置高权限账号的权限 进入账号管理页面。 登录RDS管理控制台,在左侧单击实例列表,然后在上方选择地域。 单击目标实例ID,在左侧导航栏单击账号管理。 在目标高权限账号的操作列,单击重置账号权限。 在弹出的对话框中,输入新密码并确认新密码,单击确定。 修改普通账号的权限 进入账号管理页面。 …

    阿里云数据库 2023年12月9日
  • 阿里云RDS数据库X-Engine简介-云淘科技

    X-Engine是阿里云数据库产品事业部自研的联机事务处理OLTP(On-Line Transaction Processing)数据库存储引擎。目前已经广泛应用在阿里集团内部诸多业务系统中,包括交易历史库、钉钉历史库等核心应用,大幅缩减了业务成本,同时也作为双十一大促的关键数据库技术,挺过了数百倍平时流量的冲击。 为什么设计一个新的存储引擎 X-Engin…

    2023年12月9日
  • 阿里云日志服务SLS开通全量日志分析功能-云淘科技

    本文介绍如何在DDoS高防(新BGP、国际)控制台上开通全量日志分析功能,将DDoS高防(新BGP、国际)全量日志采集到日志服务中。 前提条件 已创建新BGP或国际高防实例。具体操作,请参见购买DDoS高防实例。 已为新BGP或国际高防实例接入域名。具体操作,请参见添加网站。 操作步骤 重要 如果您使用RAM用户开通全量日志功能,则需先为RAM用户授权。具体…

    阿里云日志服务SLS 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。