代码之家  ›  专栏  ›  技术社区  ›  Patrick

AWS codedeploy无法部署lambda函数

  •  4
  • Patrick  · 技术社区  · 6 年前

    我有一个简单的AWS代码管道,只需几个步骤。

    1. AWS codecommit(提供输出“sourcecode”)
    2. AWS codebuild(输入“sourcecode”,NPM安装,NPM运行脚本生成,输出“finalcode”)。
    3. AWS codedeploy(输入“finalcode”,部署到lambda函数)

    事实上,我从几小时后就开始尝试让这个f**codedeploy工作。 这是不可能的。我不敢相信-。-

    所以我们可以看看AWS codedeploy步骤。错误一定在那里。 我用codebuild尝试了不同的场景。 用artifacts.zip和appspecs.yml等工具输出。


    codedeploy说:

    Action execution failed
    BundleType must be either YAML or JSON
    

    当它被代码管道触发时。

    我从codepipeline-s3-bucket下载文件,这是codedeploy的输入。 它包含所有需要的文件。

    node_modules, appspec.yml and index.js

    我不知道如何告诉管道采用这个appspec.yml。

    有趣的是,如果我手动部署它,它就会工作。 所以codedeploy找不到appspec.yml。

    example of working scenario if I add appspec.yml manually

    在这里你可以看到。

    Example of working result

    但如果我考虑一下,这是没有意义的。 因为在此应用程序规范编辑器中,我无法指定要部署的zip存档的路径。

    有人知道如何完成最后一步吗?

    我真不敢相信这太难了-d 我可以很容易地设置codecommit。 代码构建在buildspec.yml中也非常简单。 现在我无法部署,因为忽略了appspec.yml或类似的东西…

    2 回复  |  直到 6 年前
        1
  •  1
  •   annamataws    6 年前

    嗨@patrick听起来这里有一些事情。

    1. 正如@putnik提到的,图片中应该选择yaml,但我不认为图片是问题部署。

    2. lambda部署只需要' appspec 文件。因此,通过控制台进行此操作不需要客户添加zip,除非他们 应用规范 在另一个存储库(S3)中。发布的图片使您的手动部署测试看起来像使用了原始字符串 应用规范 输入到 应用规范 文件编辑器。(如果您想使用 .zip ,将修订位置更改为S3选项。)

    3. 它无法识别 .yml 作为 .yaml . 我会调查这个的。目前,解决方法是将文件扩展名更改为 YAML

        2
  •  0
  •   Putnik    6 年前

    猜猜看:你不必在这里选山药吗? enter image description here