兼容工具
兼容说明
大多数基于AWS S3开发的工具都可以设置访问地址。通过设置这些工具的访问地址为BOS的AWS S3服务域名,您就可以使用这些工具访问BOS。下面以一些常用SDK和工具为例,说明如何对接BOS。
说明:
字串 含义 $ACCESS_KEY 百度智能云账号的Access key $SECRET_KEY 百度智能云账号的Secret key
AWS SDK for Python
-
安装Boto类库:
pip install boto3
-
使用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
-
添加依赖包到pom.xml
//添加下面AWS Java SDK依赖包到pom.xml <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk</artifactId> <version>1.11.82</version> </dependency>
-
使用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); s3.setS3ClientOptions(options); // Use S3 Client s3.createBucket(...); } }
-
编译代码
mvn package
AWS PHP SDK
- 安装:下载aws.phar,更多安装方式见AWS PHP SDK安装方式。
-
使用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' => 'https://s3.bj.bcebos.com', 'signature_version' => 'v4', ]); $buckets = $s3Client->listBuckets(); foreach ($buckets['Buckets'] as $bucket){ echo $bucket['Name']."\n"; }
AWS Golang SDK
-
安装
go get -u github.com/aws/aws-sdk-go
-
使用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工具
-
安装AWS CLI工具
pip install awscli
- 使用AWS CLI访问BOS
-
编辑配置文件
$ aws configure AWS Access Key ID [Nonel: <access_key_id> AWS Secret Access Key [Nonel: <access_key_secret> Default region name [None]: auto Default output format [Nonel: json
-
执行命令示例
aws s3api list-buckets --endpoint-url https://s3.bj.bcebos.com aws s3api list-objects --bucket bucketname --endpoint-url https://s3.bj.bcebos.com
- 参考文档
https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html
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。
-
下载依赖包
-
确保hadoop系统中存在如下依赖包:
-
使用BOS适用版Jar包:由于目前BOS对S3的部分功能暂未实现兼容,为了更好的产品体验,请务必使用该定制版的工具包。
BOS适用版Jar包 MD5码 hadoop-aws-2.8.0.jar 6ffbdc9352b9399e169005aeeb09ee98
-
-
修改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>
-
使用S3A在hadoop环境下体验BOS服务,执行命令
hadoop fs -ls s3a://$YOUR_BUCKET_NAME
-
如何自行修改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上的资源了!
-
选择和您操作系统相匹配的软件版本,下载后安装软件。
说明: 该软件支持免费和付费两个版本。您可以直接使用免费版本。
-
安装完成后先配置云存储,选择“S3 Compatible”:
-
添加新的S3 Compatible的账号,其中显示名可以填写BOS,服务点即BOS的服务域名,访问密钥和密码Key填写百度智能云的AK/SK。AWS S3兼容服务域名暂时不支持HTTPS,请去掉“使用SSL”的勾选,Signature version选4。
- 点击“测试连接”测试连通性,显示“Connection success”表示连通成功。
-
下面就可以使用CloudBerry Explorer进行各种数据管理啦!