惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
爱范儿
爱范儿
J
Java Code Geeks
L
LangChain Blog
V
V2EX
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
博客园 - Franky
Microsoft Azure Blog
Microsoft Azure Blog
Jina AI
Jina AI
Blog — PlanetScale
Blog — PlanetScale
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
博客园 - 司徒正美
B
Blog
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
Engineering at Meta
Engineering at Meta
MyScale Blog
MyScale Blog
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog

博客园 - 秋忆

跑在Docker下的RHEL7编译Java8源码包 利用pyinotify监控文件内容,像tailf命令但比它更强 Windows 10恢复Shift+右键打开命令提示符窗口 TP-LINK WR841N V8刷OpenWRT Build subversion 1.8 with SSL on OS X Yosemite OpenWrt自定义和官方一样的固件 Windows 10下通过蓝牙连接iPhone个人热点进行共享上网 Broadcom有线网卡在Windows 8/8.1/10下使用系统自带驱动会断网的解决办法 BCM94352HMB蓝牙BCM20702A0在Ubuntu 14.04下的驱动方法 C语言实现GPT头和分区表的读取(gcc) C/C++用OpenSSL库进行Base64编码 把Windows CA根证书安装到iPhone 编程实现设置“启动与故障恢复”的“在需要时显示恢复选项的时间” 笔记本电脑键盘状态助手KeyboardState Windows x64与x86混合编程需要注意的API 查看.NET程序集编译类型命令corflags 开启Windows7多用户远程桌面 Windows优化大师已经成为“流氓大师” C#打开目录并选中文件(夹)的实现
AWS SDK for C++调用第三方S3 API
秋忆 · 2017-07-26 · via 博客园 - 秋忆

这里介绍AWS SDK for C++ 1.0.x版本,比如下载:

https://github.com/aws/aws-sdk-cpp/archive/1.0.164.tar.gz

环境:RHEL/CentOS 7

一、编译SDK

配置yum源:

[centos]
name=centos7
baseurl=http://mirrors.163.com/centos/7/os/x86_64/
enabled=1
gpgcheck=0

刷新源:yum makecache fast

安装EPEL源:yum -y install epel-release

再刷新源:yum makecache fast

安装必备软件和库:

yum -y erase cmake
yum -y install cmake3 gcc-c++ libstdc++-devel libcurl-devel zlib-devel
cd /usr/bin; ln -s cmake3 cmake

可能还会依赖其它库,根据编译时报的错误来判断安装哪个包。

准备源码:

tar -zxf 1.0.164.tar.gz -C /tmp
mkdir -p /tmp/build; cd /tmp/build
cmake -DCMAKE_BUILD_TYPE=Release /tmp/aws-sdk-cpp-1.0.164

编译源码:

make -j `nproc` -C aws-cpp-sdk-core
make -j `nproc` -C aws-cpp-sdk-s3

安装头文件和库到一个目录:

mkdir -p /tmp/install
make install DESTDIR=/tmp/install -C aws-cpp-sdk-core
make install DESTDIR=/tmp/install -C aws-cpp-sdk-s3

二、编写示例代码

列出桶:

#include <iostream>
#include <aws/s3/S3Client.h>
#include <aws/core/Aws.h>
#include <aws/core/auth/AWSCredentialsProvider.h>

using namespace Aws::S3;
using namespace Aws::S3::Model;
using namespace std;

int main(int argc, char* argv[]) {
    Aws::SDKOptions options;
    options.loggingOptions.logLevel = Aws::Utils::Logging::LogLevel::Trace;
    Aws::InitAPI(options);

    Aws::Client::ClientConfiguration cfg;
    cfg.endpointOverride = "10.202.91.2:88";  // S3服务器地址和端口
    cfg.scheme = Aws::Http::Scheme::HTTP;
    cfg.verifySSL = false;

    Aws::Auth::AWSCredentials cred("81BEB5DB4DED", "WzFGRTc34MzI5NjM0ODcxOUJDM0Jd");  // 认证的Key
    S3Client client(cred, cfg, false, false);

    auto response = client.ListBuckets();
    if (response.IsSuccess()) {
        auto buckets = response.GetResult().GetBuckets();
        for (auto iter = buckets.begin(); iter != buckets.end(); ++iter) {
            cout << iter->GetName() << "\t" << iter->GetCreationDate().ToLocalTimeString(Aws::Utils::DateFormat::ISO_8601) << endl;
        }
    } else {
        cout << "Error while ListBuckets " << response.GetError().GetExceptionName()
            << " " << response.GetError().GetMessage() << endl;
    }

    Aws::ShutdownAPI(options);
    return 0;
}

三、编译示例代码并运行

g++ -std=c++11 -I/tmp/install/usr/local/include -L/tmp/install/usr/local/lib64 -laws-cpp-sdk-core -laws-cpp-sdk-s3 a.cpp

export LD_LIBRARY_PATH=/tmp/install/usr/local/lib64
./a.out