首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在亚马逊网络服务CodeBuild镜像中使用amazon-linux-extras

无法在亚马逊网络服务CodeBuild镜像中使用amazon-linux-extras
EN

Stack Overflow用户
提问于 2021-10-12 17:02:26
回答 3查看 603关注 0票数 0

我的CDK栈使用以下CodeBuild项目定义了一个CodePipeline:

代码语言:javascript
复制
project_build = codebuild.Project(self, "ProjectBuild",
    project_name = "Build",
    source = github_source,
    environment = codebuild.BuildEnvironment(
        build_image = codebuild.LinuxBuildImage.AMAZON_LINUX_2_2,
        privileged = True),
    environment_variables = { … },
    build_spec = codebuild.BuildSpec.from_source_filename("cdk/buildspec/build.yml"))

我使用的是Amazon Linux2镜像,并希望在其上安装PostgreSQL,所以我制作了这个简单的buildspec测试文件:

代码语言:javascript
复制
version: 0.2

phases: 
  install:
    commands:
      - amazon-linux-extras install postgresql13
  build: 
    commands:
      - echo "foo"

下面是作业引发的错误:

代码语言:javascript
复制
[Container] 2021/10/12 16:50:32 Entering phase INSTALL
[Container] 2021/10/12 16:50:32 Running command amazon-linux-extras
/root/.pyenv/versions/3.8.10/bin/python: No module named amazon_linux_extras

[Container] 2021/10/12 16:50:34 Command did not exit successfully amazon-linux-extras exit status 1
[Container] 2021/10/12 16:50:34 Phase complete: INSTALL State: FAILED
[Container] 2021/10/12 16:50:34 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: amazon-linux-extras. Reason: exit status 1

我不明白为什么amazon-linux-extras要作为Python模块运行。我已经尝试了/usr/bin/amazon-linux-extras绝对路径,但没有取得更好的成功。

我在Amazon Linux实例上直接使用amazon-linux-extras从来没有遇到过任何问题,但是我应该如何在CodeBuild上下文中使用它呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-10-18 09:57:23

看起来amazon-linux-extras脚本只适用于Python2,并且使用的是python可执行文件。

我需要像这样给我的命令加上前缀,以确保使用python2可执行文件:

代码语言:javascript
复制
version: 0.2

phases: 
  install:
    commands:
      - PYTHON=python2 amazon-linux-extras enable postgresql13
      - yum clean metadata
      - yum install postgresql
  build: 
    commands:
      - echo "foo"
票数 1
EN

Stack Overflow用户

发布于 2021-10-12 21:33:19

尽管它是一个AWS Linux实例,但很多aws内容并没有预先安装在CodeBuild标准镜像上。你经常需要安装它--像CDK之类的。在尝试调用yum install -y amazon-linux-extras之前,先尝试它。

票数 0
EN

Stack Overflow用户

发布于 2021-10-17 07:26:09

此错误似乎是由Amazon Linux 2使用Python 2.7而pyenv环境使用Python 3这一事实引起的。

CodeBuild似乎一直在使用pyenv。因此,amazon-linux-extras命令将按如下方式创建一个符号链接。

代码语言:javascript
复制
ln -s /lib/python2.7/site-packages/amazon_linux_extras ~/.pyenv/versions/3.8.10/lib/python3.7/site-packages/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69544409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档