更新被 lex 测试命中的 lambda 函数的最快方法是什么?
What's the fastest way to update the lambda function being hit by lex testing?
我有一个 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。
然后当您更新您的函数时,您发布它的新 版本 ,并将别名指向该版本。
此过程可确保您从 lambda 代码中完全解耦 lex。这是因为别名是静态的,不需要对 lex 配置进行任何更改。唯一改变的是别名指向新版本的 lambda 函数。从 lex 的角度来看,这是透明过程。
我有一个 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。
然后当您更新您的函数时,您发布它的新 版本 ,并将别名指向该版本。
此过程可确保您从 lambda 代码中完全解耦 lex。这是因为别名是静态的,不需要对 lex 配置进行任何更改。唯一改变的是别名指向新版本的 lambda 函数。从 lex 的角度来看,这是透明过程。