无法在AWS代码生成中运行'source'

2024-04-29 00:41:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用AWS CodeBuild和Terraform来自动部署基于Lambda的服务。我有一个非常简单的buildscript.yml,可以实现以下功能:

  • 获取依赖项
  • 运行测试
  • 获取AWS凭据并保存到文件(详细信息如下)
  • 来源于creds文件
  • 运行地形

“获取creds文件”这一步是我遇到困难的地方。我有一个简单的bash one行程序,它从curl 169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI中获取AWS容器creds,然后以以下格式将其保存到文件中:

export AWS_ACCESS_KEY_ID=SOMEACCESSKEY
export AWS_SECRET_ACCESS_KEY=MYSECRETKEY
export AWS_SESSION_TOKEN=MYSESSIONTOKEN

当然,显而易见的步骤是简单地source这个文件,这样这些变量就可以添加到我的环境中供Terraform使用。但是,当我执行source /path/to/creds_file.txt时,CodeBuild返回:

[Container] 2017/06/28 18:28:26 Running command source /path/to/creds_file.txt
/codebuild/output/tmp/script.sh: 4: /codebuild/output/tmp/script.sh: source: not found

我试图通过apt安装source,但后来我收到一个错误,说找不到source(是的,我运行了apt update等等)。我在Python2.7环境中使用标准的Ubuntu映像进行代码构建。我可以做些什么来获取源代码构建中此凭据文件的Terraform工作凭据

谢谢


Tags: 文件topathkeytxtawssourceaccess
3条回答

尝试使用.而不是sourcesource不符合POSIXss64.com/bash/source.html

CodeBuild现在支持bash作为默认shell。您只需要在buildspec.yml中指定它

env:
  shell: bash

参考:https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-syntax

AWS代码构建映像附带符合POSIX的shell。您可以在此处查看图像中的内容:https://github.com/aws/aws-codebuild-docker-images

如果您使用的是特定的shell功能(如source),最好将命令封装在脚本文件中,并使用shebang指定要使用的shell,然后从buildspec.yml执行此脚本

build-script.sh

     #!/bin/bash
      <commands>
      ...

buildspec.yml(代码段)

build: commands: - path/to/script/build-script.sh

相关问题 更多 >