首页 > 解决方案 > 是否可以/推荐在 AWS CodeBuild 中使用“sam build”?

问题描述

这个问题从这个问题中衍生出来。现在我对那里出了什么问题有了更好的了解,以及一个可行的(如果不完美的)解决方案,我正在提交一个更有针对性的后续行动(我仍然是 StackOverflow 的新手 - 请让我知道如果这违反了礼仪,我应该跟进原文)。

此页面建议“您使用 AWS CodeBuild 构建、本地测试和打包您的无服务器应用程序”。但是,当我在 中包含sam build命令时buildspec.yml,我得到以下日志输出,表明sam未安装在 CodeBuild 映像上:

[Container] 2018/12/31 11:41:49 Running command sam build --use-container 
sh: 1: sam: not found 

[Container] 2018/12/31 11:41:49 Command did not exit successfully sam build --use-container exit status 127 
[Container] 2018/12/31 11:41:49 Phase complete: BUILD Success: false 
[Container] 2018/12/31 11:41:49 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: sam build --use-container. Reason: exit status 127 

此外,如果我使用 安装 SAM ,在 CodeBuild 中pip install aws-sam-cli运行会出现错误。本身成功,但由于它不安装测试依赖项,我仍然需要使用才能在 CodeBuild 中运行测试。此外,表明“具有本机编译程序的包”是必需的)。sam build --use-containersam buildpip install -r tests/requirements-test.txt -t .--use-container

这让我想知道我是否试图做错事。在 AWS 上的 CI/CD 工作流程中构建 SAM 服务的推荐方法是什么

标签: amazon-web-servicesaws-codebuildaws-serverless

解决方案


2019_10_18 - 更新(确认@Spiff 上面的回答):

显然,Codebuild 现在可以与 SAM 无缝协作,这就是我buildspec.yml使用 lambda所需要的pandaspsycopg2-binary

version: 0.2

phases:
  install:
    runtime-versions:
      python: 3.7

  pre_build:
    commands:
      - python -m unittest discover tests

  build:
    commands:
      - sam build

  post_build:
    commands:
      - sam package --output-template-file packaged.yaml --s3-bucket my-code-pipeline-bucketz

artifacts:
  type: zip
  files:
    - packaged.yaml

干杯


推荐阅读