amazon-web-services - 更新被 lex 测试命中的 lambda 函数的最快方法是什么?
问题描述
我有一个 lex 机器人和意图,以及一个 lambda 函数来处理机器人的实现和验证。我正在努力为开发建立一个有效的开发工作流程。
确保我正在使用的 Lambda 函数在最新版本上的最有效方法是什么?
目前我正在更新我的 IDE 中的功能代码,并用这个脚本更新它:
#!/bin/bash -e
rm lambda.zip || echo "Cleaning zip"
zip lambda.zip *.js -r node_modules/
aws lambda update-function-code \
--profile myprofile \
--function-name my-lambda-function \
--zip-file fileb://lambda.zip
然后我使用 lex 控制台中的测试接口对其进行更新,并使用以下脚本读取日志输出:
#!/bin/bash
LOGSTREAM=$(aws logs describe-log-streams --profile myprofile --log-group-name /aws/lambda/my-lambda-function | jq -r '.logStreams | .[-1].logStreamName')
aws logs get-log-events --profile myprofile --log-group-name /aws/lambda/my-lambda-function --log-stream-name "$LOGSTREAM" --limit 5
AWS cli 的这种使用会产生任何主要的同步问题吗?有没有更好的方法来加快开发周期?
编辑:
感谢 Marcin,我已将其更新为使用别名,这是生成的部署代码:
#!/bin/bash -e
rm lambda.zip || echo "Cleaning zip"
zip lambda.zip *.js node_modules/
VERSION=$(aws lambda update-function-code \
--profile myprofile \
--publish \
--function-name my-lambda-function \
--zip-file fileb://lambda.zip \
| jq -r .Version)
aws lambda update-alias \
--profile myprofile \
--function-name my-lambda-function \
--name dev \
--function-version $VERSION
解决方案
通常你会使用lambda aliases。这样您就可以为您的 lex 的验证和履行选项提供别名的 arn 。
然后当你更新你的函数时,你发布它的一个新版本,并将别名指向这个版本。
此过程可确保您将lex 与 lambda 代码完全解耦。这是因为别名是静态的,不需要对 lex 配置进行任何更改。唯一改变的是别名指向您的 lambda 函数的新版本。从 lex 的角度来看,这是一个透明的过程。
推荐阅读
- javascript - 我可以使用 res.send(foo) 两次吗?
- c++ - printf() 和 std::cout 在指针方面的区别
- linux - 如何获取驻留集大小 (RSS)
- java - 添加/铸造 LinkedList
到链表 - python - 如何在 Python 中导入和分析大型 TMX 文件
- angular - 如何在组件中触发文件输入元素,同时指定文件接受类型属性?
- javascript - 掉落时跳跃的物品反应漂亮 dnd
- c++ - RTTR - 反映库中的现有方法
- google-cloud-platform - 使用 GoogleCloud Run 运行 Keycloak
- r - R:在银河坐标系中以 Mollweide 投影绘制天空图