首页 > 解决方案 > 通过 Codeship 部署代码 toe Lambda

问题描述

我需要以某种方式自动将我的 Nodejs 代码部署到 Lambda。在查看了许多替代方案(Serveless 和其他)并与我的队友交谈后,我们决定为此使用 Codeship。他们已经使用它连接到 Github,在那里进行构建(在我的例子中是 npm i)。我们不明白的是,在那一步之后如何进行。

将其上传到 S3,然后让 Lambda 以某种方式获取它?或者其他一些方法?

任何见解都值得赞赏。

编辑:

我能够使用 Codeship 相当容易地创建到 Lambda 的 Nodejs 部署。我已按照这些说明进行操作。这是我在自定义脚本下的内容:

pip install awscli
zip -r index.zip .
echo Zipping Done
aws lambda update-function-code --function-name "test_event_crm" --zip- 
file fileb://index.zip
echo update function is done
aws lambda get-function --function-name "test_event_crm"
echo lambda get function is done
aws lambda invoke --function-name test_event_crm --payload "$(cat 
data.json)” lambda_output.txt
echo **I dont end up here**
cat lambda_output.txt
echo **I also dont end up here**

我面临的问题是代码在 Lambda 中正确地从 Github 结束,但由于某种原因,构建过程永远不会完成。它只是坐在那里,直到它自己结束(几个小时后)。如果您查看脚本中的 echo 命令,请注意最后两个 echo 永远不会执行。构建过程继续运行。

我应该怎么做才能改进脚本?

看来我需要发送结束命令或类似的东西。

编辑 2: 我忽略了脚本。那里有一个调用函数,我认为我不需要。我已经重新编写了脚本,它现在可以按预期工作。但是,我不确定这是不是正确的做法。新脚本:

pip install awscli
zip -r index.zip .
echo Zipping Done
aws lambda update-function-code --function-name "test_event_crm" --zip- 
file fileb://index.zip
echo update function is done
aws lambda get-function --function-name "test_event_crm"
echo Get function is done
echo Deploy is done

我需要aws lambda get-function吗???

标签: amazon-web-servicesaws-lambdacodeship

解决方案


我来自 CodeShip 支持,很高兴听到您决定使用我们的产品!我们确实有两种不同的产品,CodeShip Basic 和 CodeShip Pro。

我通常建议从 Basic 开始,因为它设置简单,您几乎可以立即开始获得价值。一旦您对工作流程更加熟悉 - 您可以开始迁移到 Pro

更多关于 Basic 的信息 - 您将使用 GitHub、GitLab 或 BitBucket 连接到您的存储库。连接后,您将设置构建触发器,允许构建在存储库发生更改时自动启动。触发构建时,CodeShip 将启动 Ubuntu Bionic 构建机器并检查给定提交的代码并运行项目设置中定义的命令。我们有 3 个单独的命令块:设置命令测试命令部署命令

根据您的要求,我认为您需要通读我们的AWS Lambda 部署文档。这是您的起点,因此根据您的设置,它可能不像即插即用那么简单。

如果您在设置项目时遇到问题,请随时向我们的支持团队开票,并在您遇到问题的地方提供构建 URL。

我想指出的最后一个提示是 CodeShip Basic 可以选择通过SSH 连接到构建机器的副本- 我强烈建议您在设置项目时利用此功能,因为它允许您尝试多个命令而不触发新构建,因此您可以更快地启动并运行所有内容!

我希望对您有所帮助,欢迎来到 CodeShip!:)


推荐阅读