问题标签 [aws-sdk-cpp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
15 浏览

c++ - aws-sdk-cpp - 在 Ubuntu 中未定义对 Aws::InitAPI 的引用

我正在尝试按照https://docs.aws.amazon.com/sdk-for-cpp/v1/developer-guide/basic-use.html上的开发人员指南在 Ubuntu 中运行 aws-sdk-cpp 。

我所做的是:

1.安装sdk

2.创建测试文件test.cpp

3. 编译

然后我得到了错误:

我的问题:

如何解决此问题以编译和运行 aws-sdk-cpp?我错过了任何安装步骤吗?

谢谢!

0 投票
0 回答
576 浏览

c++ - AWS SDK 静态链接:libcrypto.so.1.0.0:无法打开共享对象文件

我正在尝试使用静态链接为 c++ 构建 AWS 开发工具包,因此我可以将其用作 AWS Lambda 函数中的二进制文件。

我采取的步骤如下:

  1. git 克隆https://github.com/aws/aws-sdk-cpp.git
  2. mkdir 构建 && cd 构建
  3. cmake .. -DBUILD_SHARED_LIBS=OFF -DBUILD_ONLY="s3" -DENABLE_TESTING=OFF -DFORCE_SHARED_CRT=OFF (在 aws-cpp-sdk-s3 目录中创建了libaws-cpp-sdk-s3.a )
  4. 现在我的源 CMakeLists.txt 如下所示

我知道 AWS SDK for c++ 需要 OpenSSL,我已经在 CMakeLists 中添加了它,当我在Cmake命令之后运行make时,tt 显示

所以项目能够找到静态 libcrypto。但是当我在 AWS lambda 上部署它时,它 在加载共享库时出现错误错误: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory\n

谁能告诉我如何调试这个或者如果我遗漏了什么?我尝试搜索它,但找不到任何对静态链接有用的东西。

这是我的execute_code.cpp

如果有人能告诉我如何在 AWS lambda 上部署共享库,那也会很有帮助。

编辑:我能够通过在 Amazon Linux 而不是 Ubuntu 机器上构建来解决这个问题。

0 投票
1 回答
436 浏览

amazon-s3 - 使用 c++ S3 SDK,带有 Minio 的 ListObjecsV2 不返回任何结果

下面是一些将对象放入 s3 存储桶的代码,将其取回,然后尝试列出该存储桶。put 和 get 都可以正常工作,但列出存储桶不会返回任何键(但不会出错)。我可以使用 golang api 和相同的参数(存储桶名称和空前缀)列出存储桶。为什么不列出存储桶?

我使用 minio 作为我的对象存储,但使用 amazon s3 它工作正常

0 投票
1 回答
359 浏览

json - 在 Linux 上与 libaws-cpp-sdk-core.so 链接的未解析符号

我正在 Linux 上构建 Java 应用程序并通过 JNI 调用 CPP 代码。当我将我的 CPP 对象与 libaws-cpp-sdk-core.so 链接时,我得到未解析的符号:

Aws::Utils::Json::JsonValue::JsonValue(std::__cxx11::basic_string, std::allocator > const&)

aws-spp-sdk-core.so 中的符号几乎匹配: T Aws::Utils::Json::JsonValue::JsonValue(std::__cxx11::basic_string, Aws::Allocator > const&)

除了它是 Aws::Allocator 而不是 std::allocator 所以我尝试同时传递 AWSD ::String 和 std::string 但没有帮助

问题 sysmbol 来自以下调用 AWS::Utils::Json::JsonValue() 的代码:

JNIEXPORT jstring JNICALL Java_CCBJNI_labToMix(JNIEnv * env, jobject thisObj, jstring jcolor) {

}

我已经在 Linux 上从源代码构建了 AWSSDK,并尝试在所有生成的 .so 库中进行链接,我已经安装了先决条件: $sudo apt-get install libcurl4-openssl-dev libssl-dev uuid-dev zlib1g-dev libpulse-dev works在使用 nuget 包管理器的 Windows 上,其他 AWS 调用正在工作,但不是这个。

谢谢你的帮助

0 投票
1 回答
97 浏览

c++ - 在 QT for MacOs 和 windows 中创建安装程序的过程

我正在为我的 C++ QT QML 程序创建安装程序。我正在尝试为要测试的程序制作安装程序,但无法理解我到底需要做什么。我只有一个外部依赖项,即 aws-cpp-sdk,我可以在开发环境中编译并链接到 QT。我想知道在这种情况下该怎么做。根据我对 QT 安装程序框架文档的理解,有两种不同的方式,离线和在线。由于是离线的,我假设您只是将所有软件包和必要的资源与安装程序一起放在一个 zip 中,而在线时它将从在线存储库中提取。所以我的主要问题是,

1.) 我在哪里可以获得这个“静态”版本的 qt 以及它的所有 QML 小部件等。

2.) 我应该如何制作离线安装程序,我是否需要制作某种脚本来 cmake 并安装所有必要的文件?

3.) 我可以在 github 上托管这些在线存储库吗?

这是我在另一台 Mac 上运行时遇到的错误

0 投票
1 回答
367 浏览

c++ - 如何使用 C++ SDK 修复同步调用的 aws lambda 超时?

当我调用我的 lambda 函数时,执行需要 1 到 15 秒。如果我通过 C++ SKD 调用该函数,我会超时。这些超时似乎在几秒钟后发生(这只是人为判断,我实际上并没有计时)。

问题:我如何告诉 SDK 等待慢 lambdas 返回而不是超时?

不起作用的事情:

JS SDK 中,您可以在 HTTP 设置中进行更改。这在 C++ SDK HTTPOptions中没有这样的选项。

给 lambda 客户端一个更大的 connectionTimeoutMS(套接字超时)的配置并没有帮助。此外,客户端的 httpRequestTimeoutMs 默认设置为 0,这意味着它将永远等待。

我正在使用同步请求,它似乎没有额外的超时选项。

附加信息:

我正在使用单个客户端并行运行多个请求。

如果我使用异步请求,也会发生错误。

有关的:

如何解决使用 AWS 开发工具包调用 Lambda 函数时的重试和超时问题?

0 投票
0 回答
813 浏览

cmake - 无法构建 AWS 开发工具包 CPP 示例。Cmake 找不到 AWSSDKConfig.cmake,但该文件存在于我的磁盘上

我使用亚马逊文档中给出的说明在我的 Ubuntu 机器上安装了适用于 C++ 的 AWS 开发工具包:

https://docs.aws.amazon.com/sdk-for-cpp/v1/developer-guide/setup.html

我能够毫无错误地编译 SDK。

然后我按照 README 为 C++ 构建示例。当我运行 Cmake 时,出现以下错误:

但是AWSSDKConfig.cmake肯定在我的系统上:

所以我尝试使用 CMake CMAKE_PREFIX_PATH 命令行参数直接添加配置文件的路径:

但是后来我收到了这组错误消息:

我想我在这一点上一定是在做一些根本错误的事情。我怎样才能使这项工作?

0 投票
1 回答
302 浏览

c++ - Aws::S3::S3Client 构造函数非常慢

我正在尝试使用 AWS C++ SDK 为 S3 生成签名 URL,但是Aws::S3::S3Client构造函数似乎很慢。在以下示例中:

编译:

1和之间有很长的延迟(至少 5 秒)2。这是什么原因造成的?

该库是通过以下方式构建和安装的:

0 投票
0 回答
225 浏览

curl - 将 AWS cpp sdk 用于 Google 云时出现 Curl 超时

我有一个安装了 aws cpp sdk 的 Debian 9 客户端。我正在将此 sdk 用于 Google Cloud Storage。sdk 使用 curl 向云端发出请求。我有一个测试程序,可以将一堆 PUT 放到云端。我观察到最初有几个 PUT 成功,然后我开始看到 PUT 的 curl 超时错误。以下是来自 AWS sdk 的日志,表明 curl 请求已超时:

我的一些观察:

  • 我对 GET 没有这个问题。
  • 我只在使用 Debian 时看到这个问题。当我尝试使用 Ubuntu 18.04 的主机时,它运行良好。
  • 当我使用 HTTP 和端口 80 而不是 HTTPS 和端口 443 时,我没有看到这个问题。

任何想法可能导致卷曲超时?

0 投票
1 回答
197 浏览

c++ - 如何使用 gmock 模拟 AWS::Transfer::TransferManager 类?

我正在使用 AWS C++ SDK 在 AWS 上下载/上传文件AWS::Transfer::TransferManager。我想对使用TransferManager并需要模拟的客户端类进行单元测试TransferManager。AWSTransferManager类是具体类,而不是抽象类。我如何嘲笑它?