amazon-web-services - 使用 build-spec.yml 中的环境变量构建 AWS 代码

标签 amazon-web-services aws-codebuild

我是这个代码构建的新手。我正在尝试在“代码构建中的环境变量选项卡”中定义环境变量,并使用在 buildspec.yml 中定义的那些环境变量。这样做的目的是使用 proces.env.REACT_APP_SOME_SPACE 访问 React 应用程序,它应该提供预期的值,以便它可以用于 API 调用。

buildspec.yml

env:
 variables:
// I understand this is plain text. But SOME_TOKEN provided below is defined in the aws code build as an environment variable having a value under environment tab
REACT_APP_SOME_TOKEN: ${SOME_TOKEN} 
REACT_APP_SOME_SPACE: ${SOME_SPACE}
REACT_APP_BASE_URL: 'https://myurl'
REACT_APP_REQUEST_TIMEOUT: '10000'
REACT_APP_SERVICE_API_KEY: ${SERVICE_API_KEY}
...
phases:
install:
commands:
- echo "Building ${CODEBUILD_WEBHOOK_TRIGGER}"
...

例如,我在 process.env.REACT_APP_SOME_TOKEN 中看到的只是“${SOME_TOKEN}”或作为明文提供的任何内容,而不是环境选项卡中为变量“REACT_APP_SOME_TOKEN”定义的环境值。 我尝试了以下变体,但没有任何效果:

REACT_APP_SOME_SPACE: ${SOME_SPACE}
REACT_APP_SOME_SPACE: '${SOME_SPACE}'
REACT_APP_SOME_SPACE: {SOME_SPACE}
REACT_APP_SOME_SPACE: $SOME_SPACE

问题:

  1. 这是正确的做法吗?如果没有,请告诉我并提供详细信息
  2. 我看到 aws 中的参数存储用于存储 key 。但是我想知道如何在 process.env 或 React 应用程序中的其他一些环境变量中引用它,这样我就可以使用我的 api 调用来传递它。

我所说的环境选项卡在 aws 代码构建中的意思。

enter image description here

最佳答案

变量 只是key: value 的映射。此时,不会使用您为容器指定的环境变量。

这在 documentation 中得到了例证使用 $PATH:

set an environment variable named PATH with a value of $PATH:/usr/share/ant/bin, then /usr/local/sbin:/usr/local/bin is replaced by the literal value $PATH:/usr/share/ant/bin.

因此您的变量 REACT_APP_SOME_TOKEN 被设置为 ${SOME_TOKEN} 的文字值,这解释了为什么您稍后将它们作为纯文本值获取。

例如,要将 REACT_APP_SOME_TOKEN 设置为 ${SOME_TOKEN} 的实际值,可以在 pre_build 中完成以下操作:

  pre_build:
    commands:
      - export REACT_APP_SOME_TOKEN=${SOME_TOKEN}

或者,在您的构建项目中,您可以考虑直接使用 REACT_APP_SOME_TOKEN,而不是定义 SOME_TOKEN,然后将其分配给 REACT_APP_SOME_TOKEN

附言bash 中的源文件示例:

myenvvars.sh:

export A=3
export B=4

构建规范(模拟)

#!/bin/bash

source ./myenvvars.sh

echo ${A}
echo ${B}

关于amazon-web-services - 使用 build-spec.yml 中的环境变量构建 AWS 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61934135/

相关文章:

amazon-web-services - AWS CLI执行Lambda函数问题

aws-codepipeline - 即使测试通过后,代码构建仍显示正在进行中

git - 选择其他分支而不是 master 作为 AWS CodeBuild 上的源存储库

javascript - AWS CodeBuild : How to run tests that require starting Docker?

amazon-web-services - 使用 ElasticSearch 进行索引存储的 AWS Elastisearch CodeBuild 集成测试与 Hibernate 搜索的访问策略

amazon-web-services - 如何在代码构建中将命令的输出分配给变量

amazon-web-services - 将 Google 域链接到 Amazon ec2 服务器

amazon-web-services - 以 "path-style"格式生成 S3 URL

java - 输入和输出流的 IOUtils.copy() 速度非常慢

amazon-web-services - 限制全局对 Amazon S3 URL 的访问