Hen*_*ira 13 c++ cmake amazon-web-services aws-xray aws-sdk-cpp
我的团队使用 C++ 在 Tensorflow 和 Keras 中实现了一个带有计算机视觉 (OpenCV) 和 DNN 的管道。该管道是一个 AWS 层,由在 Python 中实现的 AWS Lambda 函数使用,并且该层是通过 Boost 库调用的。
根据需要,它还创建了一个 docker 容器,其中包含构建管道代码(使用 cmake)和部署的所有要求(OpenCV、Boost、Python 3.7、Serverless 等)。一切正常,管道和 lambda 函数已成功构建和部署。
现在,我的挑战是:为了提高管道的性能,我想测量这个管道的几个步骤的持续时间,我试图使用 aws-sdk-cpp-xray 来做到这一点。
在开始编码之前,我在用于构建和部署管道(作为层)和 Lambda 函数的同一个 docker 容器中添加并构建了 aws-sdk-cpp(下面是我在 Dockerfile 中添加的部分):
# Build AWS SDK with BUILD_ONLY XRay
RUN mkdir /tmp/${AWS_SDK_CPP}/build
WORKDIR /tmp/${AWS_SDK_CPP}/build
RUN cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D BUILD_ONLY="xray" \
-D TARGET_ARCH=LINUX \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D ENABLE_TESTING=OFF \
-D SIMPLE_INSTALL=OFF \
-D BUILD_SHARED_LIBS=ON \
-D BUILD_DEPS=ON \
..
RUN make -j $(nproc) && make install
Run Code Online (Sandbox Code Playgroud)
然后,我将 aws-sdk-cpp-xray 的引用放在我的 C++ 项目(管道)的 CMakeList.txt 中,如下所示:
cmake_minimum_required(VERSION 3.4.1)
set( CMAKE_CXX_STANDARD 11 )
find_package(AWSSDK REQUIRED COMPONENTS xray)
add_definitions(-DUSE_IMPORT_EXPORT)
SET(GCC_COVERAGE_COMPILE_FLAGS "-rdynamic -O3 -ffunction-sections -fdata-sections")
add_definitions(${GCC_COVERAGE_COMPILE_FLAGS})
find_package(OpenCV REQUIRED)
set( LIB_FOLDER /lib/src )
link_libraries(lib ${OpenCV_LIBS} ${AWSSDK_LINK_LIBRARIES})
target_link_libraries(lib ${OpenCV_LIBS})
include_directories(${LIB_FOLDER}/include)
file(GLOB lib_src
"${LIB_FOLDER}/**/**.cpp"
)
include_directories(${CMAKE_INSTALL_PREFIX})
file(GLOB aws_sdk_src
"${CMAKE_INSTALL_PREFIX}/**/**/**.*"
)
add_library(lib SHARED ${lib_src} ${aws_sdk_src})
Run Code Online (Sandbox Code Playgroud)
最后,我在管道项目中使用 aws-sdk-cpp-xray 编写了一些代码,但在编码(由于缺少样本)甚至 Lambda 层执行(测试 XRay 代码时)都没有成功。
现在,当我执行使用此层(管道)的 Lambda 函数时,出现以下错误:
Runtime.ImportModuleError: Unable to import module 'functions/myfunction': /opt/lib/lib.so: undefined symbol: _ZTVN3Aws35AmazonSerializableWebServiceRequestE
所以......看起来执行问题是由安装在 Dockerfile 中的 aws-sdk-cpp 引起的。或者可能是由 CMakeList.txt 管道项目文件中的条目引起的......甚至,缺少将一些 *.so、*.a 或.so文件添加到图层包中。但是,由于缺乏文档/手册并且没有发现有关上述错误的任何信息,我正在寻求有关使用 C++ 使用 AWS XRay 或什至替代方案来实现此测量的一些示例的帮助。
Ps.:我也已经在 GitHub AWS SDK home 中询问过示例。请问,至少,你能在那里投票吗?https://github.com/awsdocs/aws-doc-sdk-examples/issues/1012
谢谢!
| 归档时间: |
|
| 查看次数: |
448 次 |
| 最近记录: |