概述
aws提供多种sdk去访问S3,包括java、go、php、js、ruby、net、c++等,本篇文章结合作者最近应用的实践,介绍aws sdk cpp中访问S3的使用,示例中包括对S3的基本put,get等操作。
在使用aws sdk cpp中,发现它还不是那么完善,很多对S3的操作都找不到示例,并且github上这部分的源码更新很快,估计也是在持续开发和完善中,建议读者在自己应用时,下载最新的sdk版本后测试。
安装
测试系统:CentOS Linux release 7.2.1511
下载github上的sdk源码
1
# git clone https://github.com/aws/aws-sdk-cpp
或者直接下载zip压缩包后解压缩
安装依赖包
1
2
3
4
5yum install -y gcc-c++
yum install -y cmake
yum install -y zlib-devel
yum install -y openssl-devel
yum install -y curl-develUbuntu系统上:
1
2
3
4
5
6apt-get install -y g++
apt-get install -y cmake
apt-get install -y libssl-dev
apt-get install -y libcurl4-openssl-dev
apt-get install -y uuid-dev
apt-get install -y libboost-all-dev安装aws cpp sdk
1
2
3
4
5
6
7
8
9mkdir build_dir
cd build_dir
cmake -DCMAKE_BUILD_TYPE=Release ../aws-sdk-cpp
# just make and install core and s3
make -j `nproc` -C aws-cpp-sdk-core
make -j `nproc` -C aws-cpp-sdk-s3
make install -C aws-cpp-sdk-core
make install -C aws-cpp-sdk-s3
示例
基本代码
要使用aws c++ sdk,必须包含如下基本代码
1 |
|
使用aws s3 client来访问对象存储
1 | Aws::Client::ClientConfiguration cfg; |
示例1 - list bucket
1 | cat aws-s3-bucket.cpp |
示例2 - get object
1 | /* |
示例2 - put object
1 | /* |
因有需要读取文件的一部分内容,然后上传到S3上的一个object,查询了好多资料没找到示例,最后翻阅aws cpp sdk的源码,参考相关的实现,花费了很多时间才试验出来,贴给有相同需要的朋友。。。
1 | /* |
参考
http://docs.aws.amazon.com/zh_cn/sdk-for-cpp/v1/developer-guide/welcome.html
https://github.com/aws/aws-sdk-cpp
http://alientechlab.com/aws-sdk-cpp-part-1/
http://www.cnblogs.com/qiuyi21/p/7239129.html