amazon-web-services - 是否可以/推荐在 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-container
sam build
pip install -r tests/requirements-test.txt -t .
--use-container
这让我想知道我是否试图做错事。在 AWS 上的 CI/CD 工作流程中构建 SAM 服务的推荐方法是什么?
解决方案
2019_10_18 - 更新(确认@Spiff 上面的回答):
显然,Codebuild 现在可以与 SAM 无缝协作,这就是我buildspec.yml
使用 lambda所需要的pandas
和psycopg2-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
干杯
推荐阅读
- sql - 如何创建数据成为列
- android - 如何在 Android Studio 模拟器上安装 ARCore 以测试 SceneForms 示例应用程序?
- laravel - Laravel:表单方法!=保存方法?
- c++ - 我想用 z 替换字符串中的所有元音
- java - 深层链接到另一个片段 [ANDROID]
- java - 使用 ArrayAdapter (Java Android) 返回 ListView 时获取 IndexOutOfBoundsException: Index: 1, Size: 0
- javascript - JavaScript onclick 函数只工作一次(非常简单的代码)
- php - 从 laravel 的数据库中打印刀片指令
- mysql - spring boot 在应用程序属性中使用占位符
- ruby-on-rails - Ruby 正则表达式允许使用字母数字和 & 符号