使用 build-spec.yml 中的环境变量构建 AWS 代码
AWS code build with env variables from build-spec.yml
我是这个代码构建的新手。我正在尝试在 'environment variable tab in code build' 中定义环境变量并使用在 buildspec.yml 中定义的那些环境变量。这样做的 objective 是使用 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}”或作为明文提供的任何内容,而不是为变量定义的 env 值 '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
问题:
- 这是正确的做法吗?如果没有,请告诉我并提供详细信息
- 我看到aws中的parameter store是用来存储秘钥的。但是我想知道如何在 process.env 或 React 应用程序中的其他一些环境变量中引用它,所以我可以使用我的 api 调用来传递它。
我所说的环境选项卡在 aws 代码构建中的意思。
variables
只是key: value
的映射。此时,不会使用您为容器指定的环境变量。
这在 documentation using $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
.
P.S。 bash 中的源文件示例:
myenvvars.sh:
export A=3
export B=4
构建规范(模拟)
#!/bin/bash
source ./myenvvars.sh
echo ${A}
echo ${B}
我是这个代码构建的新手。我正在尝试在 'environment variable tab in code build' 中定义环境变量并使用在 buildspec.yml 中定义的那些环境变量。这样做的 objective 是使用 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}”或作为明文提供的任何内容,而不是为变量定义的 env 值 '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
问题:
- 这是正确的做法吗?如果没有,请告诉我并提供详细信息
- 我看到aws中的parameter store是用来存储秘钥的。但是我想知道如何在 process.env 或 React 应用程序中的其他一些环境变量中引用它,所以我可以使用我的 api 调用来传递它。
我所说的环境选项卡在 aws 代码构建中的意思。
variables
只是key: value
的映射。此时,不会使用您为容器指定的环境变量。
这在 documentation using $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
.
P.S。 bash 中的源文件示例:
myenvvars.sh:
export A=3
export B=4
构建规范(模拟)
#!/bin/bash
source ./myenvvars.sh
echo ${A}
echo ${B}