无法在AWS Codebuild中运行`source`

Tan*_*bey 10 bash amazon-web-services terraform aws-codebuild

我正在使用AWS CodeBuild和Terraform自动部署基于Lambda的服务.我有一个非常简单的buildscript.yml完成以下内容:

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

"获取信用档案"这一步骤是我遇到困难的地方.我有一个简单的bash单行程序,它抓取AWS容器信誉curl 169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI,然后按以下格式将它们保存到文件中:

export AWS_ACCESS_KEY_ID=SOMEACCESSKEY
export AWS_SECRET_ACCESS_KEY=MYSECRETKEY
export AWS_SESSION_TOKEN=MYSESSIONTOKEN
Run Code Online (Sandbox Code Playgroud)

当然,显而易见的一步就是简单地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
Run Code Online (Sandbox Code Playgroud)

我试图安装source通过,apt但后来我得到一个错误,说source无法找到(是的,我已经运行apt update等).我在CodeBuild的Python 2.7环境中使用标准的Ubuntu映像.如何在Codebuild中为源凭据文件获取Terraform工作凭据.

谢谢!

jef*_*rey 9

尝试使用.而不是source.source不符合POSIX标准.ss64.com/bash/source.html


das*_*mug 7

CodeBuild 现在支持bash作为您的默认 shell。你只需要在你的buildspec.yml.

env:
  shell: bash
Run Code Online (Sandbox Code Playgroud)

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