首页 > 解决方案 > 使用 aws Lambda 时无法加载 kinesis 本机库

问题描述

我正在尝试上传 lambda 函数,其中我使用 kinesis 视频流我可以在本地使用它,因为"libKinesisVideoProducerJNI.so"当我将它上传到 AWS lambda 时我可以链接本机库我不断收到错误

WARN / KinesisVideo: Unsatisfied link error. Directly loading native library .so.

22:19:11
WARN / KinesisVideo: Unsatisfied link error. Directly loading native library .dylib.

22:19:11
WARN / KinesisVideo: Unsatisfied link error. Directly loading native library .dll.

22:19:11
WARN / KinesisVideo: Unsatisfied link error. Directly loading native library libKinesisVideoProducerJNI.so.

22:19:11
WARN / KinesisVideo: Unsatisfied link error. Directly loading native library libKinesisVideoProducerJNI.dylib.

22:19:11
WARN / KinesisVideo: Unsatisfied link error. Directly loading native library libKinesisVideoProducerJNI.dll.

22:19:11
ERROR / KinesisVideo: 2018-06-02T22:19Z T1: EXCEPTION: UnsatisfiedLinkError: Unsatisfied link error. Loading native library KinesisVideoProducerJNI failed with java.lang.UnsatisfiedLinkError: no KinesisVideoProducerJNI in java.library.path: no KinesisVideoProducerJNI in java.library.path

22:19:11
com.amazonaws.kinesisvideo.producer.ProducerException: Failed loading native library

如何将本机库添加/链接到 aws Lambda?

用java编写的代码,我使用eclipse构建/上传到AWS lambda

标签: amazon-web-servicesaws-lambdaamazon-kinesis

解决方案


通过将文件上传到 S3 Bucket 来解决问题,然后将文件作为 S3Object 取回并将其保存到"/tmp/libKinesisVideoProducerJNI.so"然后加载它

S3Object libso = awsObject.getObject(s3Client, "bucket", "libKinesisVideoProducerJNI.so");

            File lib = awsObject.save(libso.getObjectContent(), "/tmp/libKinesisVideoProducerJNI.so");

            System.out.println("library file was saved to " + lib.getAbsolutePath());

            System.load(lib.getAbsolutePath());

推荐阅读