上云无忧 > 文档中心 > 百度智能云对象存储BOS AWS的S3兼容工具
对象存储BOS
百度智能云对象存储BOS AWS的S3兼容工具

文档简介:
大多数基于AWS S3开发的工具都可以设置访问地址。通过设置这些工具的访问地址为BOS的AWS S3服务域名,您就可以使用这些工具访问BOS。下面以一些常用SDK和工具为例,说明如何对接BOS。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

兼容说明

大多数基于AWS S3开发的工具都可以设置访问地址。通过设置这些工具的访问地址为BOS的AWS S3服务域名,您就可以使用这些工具访问BOS。下面以一些常用SDK和工具为例,说明如何对接BOS。

说明:

字串 含义
$ACCESS_KEY 百度智能云账号的Access key
$SECRET_KEY 百度智能云账号的Secret key

AWS SDK for Python

  1. 安装Boto类库:

    pip install boto3
  2. 使用AWS SDK for python访问Bos

    import boto3
    from botocore.client import Config
    s3 = boto3.client(
            's3',
            aws_access_key_id=$ACCESS_KEY,
            aws_secret_access_key=$SECRET_KEY,
            endpoint_url='http://s3.bj.bcebos.com',
            region_name='bj',
            config = Config(
                signature_version='s3v4',
            )
         )
    # Use S3 client
    s3.create_bucket(...)

AWS SDK for Java

  1. 添加依赖包到pom.xml

    //添加下面AWS Java SDK依赖包到pom.xml
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk</artifactId>
      <version>1.11.82</version>
    </dependency>
  2. 使用AWS SDK for java访问Bos

    import java.io.IOException;
    import com.amazonaws.services.s3.AmazonS3;
    import com.amazonaws.services.s3.AmazonS3Client;
    import com.amazonaws.services.s3.model.*;
    import com.amazonaws.services.s3.S3ClientOptions;
    import com.amazonaws.auth.BasicAWSCredentials;
    import com.amazonaws.SDKGlobalConfiguration;
      
    public class S3Sample {
        public static void main(String[] args) throws IOException {
            System.setProperty(SDKGlobalConfiguration.ENABLE_S3_SIGV4_SYSTEM_PROPERTY, "true");
            AmazonS3 s3 = new AmazonS3Client(new BasicAWSCredentials($ACCESS_KEY,$SECRET_KEY));
            s3.setEndpoint("s3.bj.bcebos.com");
            S3ClientOptions options = new S3ClientOptions();
            options.withChunkedEncodingDisabled(true); // Must to have
            s3.setS3ClientOptions(options);
             
            // Use S3 Client
            s3.createBucket(...);
        }
      
    }
  3. 编译代码

    mvn package

AWS PHP SDK

  1. 安装:下载aws.phar,更多安装方式见AWS PHP SDK安装方式。
  2. 使用AWS SDK for PHP访问Bos

    <?php    
    require 'aws.phar';                  
    use Aws\S3\S3Client;
    use Aws\Exception\AwsException;     
                   
    $s3Client = new S3Client([          
        'version'     => 'latest',
        'region'      => 'bj',
        'credentials' => [
            'key'    => $ACCESS_KEY,
            'secret' => $SECRET_KEY,
        ],
        'endpoint' => 's3.bj.bcebos.com',
        'signature_version' => 'v4',
    ]);
     
    $buckets = $s3Client->listBuckets();
    foreach ($buckets['Buckets'] as $bucket){
        echo $bucket['Name']."\n";
    }

AWS Golang SDK

  1. 安装

    go get -u github.com/aws/aws-sdk-go
  2. 使用AWS SDK for Golang访问Bos

    import (
        "github.com/aws/aws-sdk-go/aws"                                            
        "github.com/aws/aws-sdk-go/aws/session"
        "github.com/aws/aws-sdk-go/service/s3"
        "github.com/aws/aws-sdk-go/aws/credentials"
    )
    conf := &aws.Config{
            Region:           aws.String("bj"),
            Endpoint:         aws.String("s3.bj.bcebos.com"),
            Credentials:      credentials.NewStaticCredentials($ACCESS_KEY, $SECRET_KEY,, ""),
        }
    sess := session.Must(session.NewSessionWithOptions(session.Options{Config:*conf}))
    svc := s3.New(sess)
    getObjectParams := &s3.GetObjectInput{
            Bucket:             aws.String("my-bucket"), 
            Key:                aws.String("my-object"), 
    }
    getObjectResp, err := svc.GetObject(getObjectParams)
    if err != nil {
        fmt.Println(err.Error())
        return
    }

AWS CLI工具

  1. 安装AWS CLI工具

    pip install awscli
  2. 使用AWS CLI访问BOS
  • 编辑配置文件

    $ cat ~/.aws/config
    [default]
    s3 =
        signature_version = s3v4
    region = bj
        
    $ cat ~/.aws/credentials
    [default]
    aws_access_key_id = $ACCESS_KEY
    aws_secret_access_key = $SECRET_KEY
  • 执行命令

    aws --endpoint-url http://s3.bj.bcebos.com s3 ls

Hadoop S3A工具

S3A为hadoop官方提供的在hadoop系统中使用S3的工具包。通过S3A您可以像操作hdfs一样操作S3存储,目前BOS已经支持大部分常用的S3A的功能。关于S3A更为详细的介绍可参见:S3 Support in Apache Hadoop和Hadoop-AWS module: Integration with Amazon Web Services。

  1. 下载依赖包

    • 确保hadoop系统中存在如下依赖包:

      • aws-java-sdk-1.11.82.jar
      • aws-java-sdk-core-1.11.82.jar
      • aws-java-sdk-kms-1.11.82.jar
      • aws-java-sdk-s3-1.11.82.jar
    • 使用BOS适用版Jar包:由于目前BOS对S3的部分功能暂未实现兼容,为了更好的产品体验,请务必使用该定制版的工具包。

      BOS适用版Jar包 MD5码
      hadoop-aws-2.8.0.jar 6ffbdc9352b9399e169005aeeb09ee98
  2. 修改S3A的相关配置

    <property>
    	<name>fs.s3a.endpoint</name>
    	<value>http://s3.bj.bcebos.com</value> 
    </property> 
    <property>
    	<name>fs.s3a.signing-algorithm</name>
    	<value>AWSS3V4SignerType</value>
    </property>	
    <!-- 开启bos后端接口-->
    <property>
        <name>fs.s3a.bos.compat.access</name>
    	<value>true</value>
    </property>
    <property>
    <name>fs.s3a.access.key</name>
    <value>$ACCESS_KEY</value>
    </property>
    <property>
    <name>fs.s3a.secret.key</name>
    <value>$SECRET_KEY</value>
    </property>
  3. 使用S3A在hadoop环境下体验BOS服务,执行命令

    hadoop fs -ls s3a://$YOUR_BUCKET_NAME
  4. 如何自行修改hadoop-aws

    (1). 下载hadoop源码 (2). 修改hadoop-2.8.0-src/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3ClientFactory.java文件。由于BOS暂未支持Chunked Upload,而Java sdk默认写操作会使用该方式,所以需要在代码中关闭sdk的这个操作。

    // 找到s3a使用的aws client,例如:
    // 在createAmazonS3Client函数下的
    // AmazonS3 s3 = new AmazonS3Client(credentials, awsConf);
    // 为aws client添加禁止chunkedencoding
    s3.setS3ClientOptions(new S3ClientOptions().withChunkedEncodingDisabled(true));

    (3). 编译得到jar包

    cd hadoop-2.8.0-src/hadoop-tools/hadoop-aws
    mvn package

CloudBerry Explorer for Amazon S3

CloudBerry Explorer for Amazon S3是CloudBerry Lab提供的S3图形化数据管理软件,图形化界面非常强大,支持数据从本地到云端的上传、下载、同步、删除等管理操作。

现在百度智能云也支持通过CloudBerry Explorer来管理BOS上的资源了!

  1. 选择和您操作系统相匹配的软件版本,下载后安装软件。

    说明: 该软件支持免费和付费两个版本。您可以直接使用免费版本。

  2. 安装完成后先配置云存储,选择“S3 Compatible”:

  3. 添加新的S3 Compatible的账号,其中显示名可以填写BOS,服务点即BOS的服务域名,访问密钥和密码Key填写百度智能云的AK/SK。AWS S3兼容服务域名暂时不支持HTTPS,请去掉“使用SSL”的勾选,Signature version选4。

  4. 点击“测试连接”测试连通性,显示“Connection success”表示连通成功。
  5. 下面就可以使用CloudBerry Explorer进行各种数据管理啦!

相似文档
  • BOS可以用来做什么? BOS提供一个简单的 Web 服务接口,可用于存储和提取任意数量的数据。开发人员可以轻松地构建利用互联网存储的应用程序。BOS具有很高的可扩展性,用户只需按实际用量付费,因此开发人员可以从较小用量起步,根据需要扩展应用程序,而不影响性能或可靠性。如灾备系统、数据分析存储、内容存储分享、网盘等应用。
  • 欠费后数据会丢失吗? 欠费处理: 当您的账户余额不足0元无法支付BOS账单,即为欠费,欠费时系统会发送欠费通知。 欠费后立即停服,系统会发送欠费停服通知,数据为您保留15天,期间收取存储空间的费用。
  • 用户可以在BOS上存储多少数据? 用户在BOS上存储的数据总量和Object数量不受限制,且上传单文件最大5TB的Object。 用户可以存储哪种类型的数据? 用户在BOS上存储任何格式的任何类型数据。
  • 如何对BOS资源状况进行定期的全面检查? 您可开通“云顾问 Cloud Advisor”服务,定期获得云上资源在安全、可用性、性能、成本方面的检查报告。报告中包含若干BOS相关检查项目,如:BOS-Bucket开启回收站、BOS-Bucket日志记录、BOS-Bucket权限、BOS-服务端加密等。了解或开通云顾问服务,请前往 云顾问主页。
  • Bucket ACL和STS有什么区别? BOS的权限可以分成两类:基于资源的权限和基于用户的权限。 基于资源的权限是指控制某个资源可以被哪些人访问,Bucket ACL就是基于资源的权限。 基于用户的权限是指管理某个用户可以访问哪些资源,STS临时授权就是基于用户的权限的一种。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部