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

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
V
Vulnerabilities – Threatpost
Cloudbric
Cloudbric
G
GRAHAM CLULEY
S
Securelist
Schneier on Security
Schneier on Security
Help Net Security
Help Net Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Project Zero
Project Zero
Spread Privacy
Spread Privacy
P
Privacy International News Feed
C
Cyber Attacks, Cyber Crime and Cyber Security
Cisco Talos Blog
Cisco Talos Blog
T
Tailwind CSS Blog
博客园_首页
有赞技术团队
有赞技术团队
Simon Willison's Weblog
Simon Willison's Weblog
Stack Overflow Blog
Stack Overflow Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Latest news
Latest news
T
Tor Project blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Attack and Defense Labs
Attack and Defense Labs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
O
OpenAI News
J
Java Code Geeks
T
Tenable Blog
K
Kaspersky official blog
AWS News Blog
AWS News Blog
S
Security @ Cisco Blogs
The GitHub Blog
The GitHub Blog
T
Threatpost
月光博客
月光博客
H
Heimdal Security Blog
Security Latest
Security Latest
The Hacker News
The Hacker News
Y
Y Combinator Blog
A
Arctic Wolf
Apple Machine Learning Research
Apple Machine Learning Research
C
Cisco Blogs
美团技术团队
Microsoft Security Blog
Microsoft Security Blog
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
C
CERT Recently Published Vulnerability Notes
D
Docker
Google Online Security Blog
Google Online Security Blog
D
DataBreaches.Net
V
Visual Studio Blog
H
Help Net Security

博客园 - 秋忆

跑在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