使用 .NET 5 Web api 和 Lambda RIE 在本地测试 AWS Lambda 容器

2024-01-11

我正在按照说明在本地测试 lambda 容器https://docs.aws.amazon.com/lambda/latest/dg/images-test.html https://docs.aws.amazon.com/lambda/latest/dg/images-test.html

但我无法这样做。

我创建了一个示例项目来重现它https://gitlab.com/sunnyatticsoftware/sandbox/lambda-dotnet5-webapi https://gitlab.com/sunnyatticsoftware/sandbox/lambda-dotnet5-webapi(请参阅 README 了解其生成的步骤)

基本上,我使用 Amazon dotnet 模板,该模板使用容器生成 AWS Lambda 函数作为 .NET 5 Web API。

该项目一切顺利。 Dockerfile 被描述为

FROM public.ecr.aws/lambda/dotnet:5.0
WORKDIR /var/task
COPY "bin/Release/net5.0/publish"  .

现在我想使用本地测试它Amazon Lambda 运行时接口模拟器(RIE),这些是我遵循的步骤:

  1. 构建项目dotnet build -c Release
  2. 发布工件dotnet publish -c Release
  3. 构建 docker 镜像docker build -t lambda-dotnet .
  4. 下载 RIE
    mkdir -p ~/.aws-lambda-rie && curl -Lo ~/.aws-lambda-rie/aws-lambda-rie https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie && chmod +x ~/.aws-lambda-rie/aws-lambda-rie
    
    我可以看到模拟器已正确下载
    ls -la ~/.aws-lambda-rie/aws-lambda-rie
    -rw-r--r-- 1 diego.martin 1049089 8155136 Feb 22 14:32 /c/Users/diego.martin/.aws-lambda-rie/aws-lambda-rie
    
  5. 运行传递 lambda 映像的模拟器
    docker run -d -v ~/.aws-lambda-rie:/aws-lambda -p 9000:8080 --entrypoint /aws-lambda/aws-lambda-rie lambda-dotnet:latest
    

这是我收到错误的时候

12997dddc6e50aca3020527be30a1479eee9ceef412ab5009b99e9eb8cf1fa67
docker: Error response from daemon: OCI runtime create failed: container_linux.go:370: starting container process caused: exec: "C:/Users/diego.martin/AppData/Local/Programs/Git/aws-lambda/aws-lambda-rie": stat C:/Users/diego.martin/AppData/Local/Programs/Git/aws-lambda/aws-lambda-rie: no such file or directory: unknown.

我缺少什么?我没有指定任何入口点,因为我没有任何入口点。

PS:最后一步是将一些 lambda 事件发送到我的容器的函数

curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'

dotnet 的 lambda docker 映像已经包含 RIE,因此以下内容就足够了(请参阅存储库以了解更多详细信息):

打造形象

docker build -t lambda-dotnet:latest .

运行它

docker run -p 9000:8080 lambda-dotnet "LambdaDotNet5::LambdaDotNet5.LambdaEntryPoint::FunctionHandlerAsync"

然后为了测试它,我可以从不同的终端使用 CURL

curl -vX POST http://localhost:9000/2015-03-31/functions/function/invocations -d @test_request.json --header "Content-Type: application/json"

并在test_request.jsonfile 我可以有我想要发送给 lambda 的事件的 json。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 .NET 5 Web api 和 Lambda RIE 在本地测试 AWS Lambda 容器 的相关文章

  • AWS Lambda:无法导入模块“python_handler”:没有名为“_cffi_backend”的模块

    当我需要读取 API 上的信息 创建 CSV 文件并将其上传到 SFTP 服务器时 我正在创建 AWS Lambda 函数 我已经在我的 venv 上安装了 paramiko 在 Windows 上使用 Ubuntu 并且 cffi 模块就
  • 为什么 dagger 被认为比 Guice 更适合 AWS lambda 实现?

    我知道 dagger 通过生成代码在编译时创建注入 因此它的性能比 Guice 更好 Guice 在运行时执行注入 但特别是对于 lambda 的情况 我看到在多个地方都提到 Dagger 是首选 是因为冷启动问题吗 由于lambda的冷启
  • Guice 字段注入不起作用(返回 null)

    我在使用 Guice 时遇到空值问题 接下来我将向您展示一个类似场景的示例 我知道字段注入是一种不好的做法 但我希望它在演示中像这样工作 我有一个名为B 这是我要注入的 class B Inject public B public void
  • 使用 RSpec 进行 Rails 片段缓存测试

    我觉得这是一个没有太多记录的主题 至少我在这里找到最佳实践时遇到了很多麻烦 我使用 cache key 在视图中进行片段缓存 tbody employees each do employee cache employee do tr emp
  • 如何在 OS X 上的旧版 Safari 中测试我的网站?

    苹果似乎不提供旧版本 Safari 的下载 我什至不确定它们是否会安装在 Mac OS X 上 因为 Safari 似乎是操作系统的一部分 就像 Windows 上的 Internet Explorer 一样 有什么方法可以在旧版本的 Sa
  • 移动端跨浏览器网络测试

    在构建网站时 我通常使用以下工具浏览器截图 http browsershots org确保我的页面在不同的浏览器中看起来相当不错 然而 我开始收到关于在不同便携式设备上运行的大量移动浏览器的抱怨 我的问题很简单 如何最好地进行移动跨浏览器测
  • 在 pytest 中,如何判断测试是否失败? (来自“请求”)

    我正在使用 Selenium 和 PYTEST 来测试网站 我想在测试失败时 并且仅在测试失败时 截取页面的屏幕截图 有什么办法可以做到这一点吗 当谈到这个时 文档很安静 或者我找不到它 我认为它会是这样的 request function
  • 连接到 AWS Aurora 集群时偶尔出现“名称解析暂时失败”

    我正在运行 Amazon Web Services RDS Aurora 5 6 数据库集群 有几个 lambda 与这些数据库实例通信 全部用 python 编写 现在一切都运行良好 但是突然之间 从几天前开始 python 代码有时开始
  • 我有什么理由应该嘲笑?

    我也是 Mockito 和 PowerMockito 的新手 我发现我无法使用纯 Mockito 测试静态方法 因此我需要使用 PowerMockito 对吗 我有一个非常简单的类 名为 Validate 使用这个非常简单的方法 publi
  • 我可以使用 lambda 调用将路径参数传递给另一个 lambda 函数吗?

    我正在尝试使用 lambda 调用来调用另一个 lambda 函数并获取响应 问题是其他 lambda 函数需要将 id 作为路径参数 或作为查询字符串 发送 但我在 lambda 调用中没有看到此选项 如果我在有效负载中传递 id 其他函
  • 如何使用 Doctrine 实体创建测试而不保留它们(如何设置 id)

    我正在为 Symfony2 项目进行测试 现在我正在寻找一种方法来创建涉及实体对象的测试而不保留它们 问题是 id是一个私有字段 并且没有设置器 我可以创建新对象并设置一些属性 但我无法测试涉及的任何内容getId calls entity
  • 如何将非并行junit参数化测试转变为并行运行

    我编写了一个参数化的junit测试 有没有任何内置方法可以使其并行运行 任何 annoation例如 如果没有 我唯一的方法就是手动编写 你会如何管理junit java中的线程池 图书馆JUnit工具箱 https github com
  • 将 gcov 与 CMake/CDash 结合使用的详细指南?

    我在我的项目中使用 CMake 并设置了 cdash 服务器以进行连续 夜间构建 一切运行良好 通过设置 crontab 我们可以将每小时 每晚的构建 测试结果自动上传到我们的 cdash 服务器 我的下一步是将测试覆盖率报告添加到构建中
  • AWS Lambda Sam找不到docker

    我正在尝试使用以下命令测试我的 hello world lambda 函数aws sam cli在我的项目根文件夹中使用以下命令 sam local start api debug 这在控制台中给出了以下输出 2018 07 11 16 1
  • 测试交互式Python程序

    我想知道python的哪些测试工具支持交互式程序的测试 例如 我有一个由以下人员启动的应用程序 python dummy program py gt gt Hi whats your name Joseph 我想要仪器Joseph所以我可以
  • IE9 中的 IE7/8 模式与实际运行 IE7/8 相比效果如何

    我试图确认这一点是出于工作目的 因此我们不需要单独的虚拟机在 IE7 和 IE8 中进行测试 我一直只是使用IE9 F12 中的开发者工具并更改浏览器模式和文档模式来进行IE7和IE8测试 这与 真实 IE7 和 IE8 中的实际测试相比如
  • 在 laravel 5 测试期间如何模拟外部 API?

    我想在 laravel 中测试 HTTP 路由 URL 的操作函数调用辅助函数 该函数调用外部 API 测试时如何模拟外部 API 调用 public function actionFunction helper new HelperCla
  • 如何找到 lambda 函数的 API 端点?

    我有一个 Lambda 函数 它有一个公开的 API 网关端点 我可以通过 AWS 控制台获取该端点的 URL 但是 我想通过 API 调用获取该 URL 既没有Lambda API 文档 http docs aws amazon com
  • 单元测试 Bash 脚本

    我们的系统除了 Java 代码之外还运行一些 Bash 脚本 既然我们正在努力测试所有可能损坏的东西 并且那些 Bash 脚本可能会损坏 我们想测试它们 问题是很难测试 Bash 脚本 有没有测试 Bash 脚本的方法或最佳实践 或者我们应
  • 为什么我的容器化 Selenium 应用程序仅在 AWS Lambda 中失败?

    我正在尝试让一个函数在使用 Selenium 和 Firefox 的 AWS Lambda 中运行geckodriver为了运行 我决定采用创建容器映像 然后上传并运行该映像的方式 而不是使用预先配置的运行时 我能够创建一个正确安装 Fir

随机推荐