AWS Amplify 环境机密未显示在前端

问题描述 投票:0回答:1

我正在运行 React 应用程序,前端代码存储在我的 GitHub 存储库中,并且我正在使用 AWS Amplify 运行部署

我尝试使用 AWS Systems Manager (SSM) Parameter Store 存储 API 密钥,以使用 此文档 存储我的环境机密。我能够访问测试环境变量。由于将 API 密钥存储为环境变量被认为是一种不好的做法,因此我尝试在 AWS Systems Manager 中使用 Parameter Store。这些是我采取的步骤:

  1. 参数存储中单击创建参数
  2. 添加的名称如下所示:
    /amplify/myAppId/myBackendEnvironmentName/REACT_APP_SECRETS
    为了澄清这一点,我从 AWS Amplify 主页 - 后端环境 选项卡中获取了 App ID环境名称。它为我提供了 CLI 命令,可将环境拉至我的本地计算机:
    amplify pull --appId myAppId --envName myBackendEnvironmentName
  3. 已选择
    Secure String
  4. 选择的KMS密钥源:
    My current account
  5. KMS 密钥 ID:
    alias/aws/ssm
    (已预先选择)
  6. 填充了
    value
  7. 更新了 AWS Amplify 主页 -> 应用程序设置 -> 构建设置中的 YML 部署脚本,如下所示(其中大部分是预先填充的,我只添加了 echo 命令并分配了环境变量):
version: 1
frontend:
  phases:
    preBuild:
      commands:
        - npm ci
    build:
      commands:
        - echo $REACT_APP_TEST_VAR
        - echo $REACT_APP_SECRETS
        - echo ${REACT_APP_TEST_VAR}
        - echo ${REACT_APP_SECRETS}
        - REACT_APP_SECRETS=${REACT_APP_SECRETS}
        - REACT_APP_TEST_VAR=${REACT_APP_TEST_VAR}
        - npm run build
  artifacts:
    baseDirectory: build
    files:
      - '**/*'
  cache:
    paths:
      - node_modules/**/*

REACT_APP_TEST_VAR 是显示的环境变量,而 REACT_APP_SECRETS 则不显示。这是前端部署日志的部分

2023-09-30T15:37:39.856Z [INFO]: # Completed phase: preBuild
                                 # Starting phase: build
                                 # Executing command: echo $REACT_APP_TEST_VAR
2023-09-30T15:37:39.857Z [INFO]: ThisWillBeMyTets
                                 # Executing command: echo $REACT_APP_SECRETS
                                 # Executing command: echo ${REACT_APP_TEST_VAR}
                                 ThisWillBeMyTets
                                 # Executing command: echo ${REACT_APP_SECRETS}
                                 # Executing command: REACT_APP_SECRETS=${REACT_APP_SECRETS}
                                 # Executing command: REACT_APP_TEST_VAR=${REACT_APP_TEST_VAR}
                                 # Executing command: npm run build
2023-09-30T15:37:40.178Z [INFO]: > [email protected] build
                                 > react-scripts build

当我在部署的 React 应用程序上执行

console.log(process.env)
时,这是输出:

{
    "NODE_ENV": "production",
    "PUBLIC_URL": "",
    "FAST_REFRESH": true,
    "REACT_APP_TEST_VAR": "ThisWillBeMyTets"
}

我所做的一切都在同一个地区。

基本上

process.env.REACT_APP_SECRETS
就是
undefined
。我尝试了一切,阅读并重新阅读文档,但我不知道如何访问秘密。一定有什么我想念的东西,有什么想法吗?

amazon-web-services deployment aws-amplify aws-amplify-cli
1个回答
0
投票

您在构建日志中看到以下警告吗?

[WARNING]: !Failed to set up process.env.secrets

AWS amplify 中的秘密与 Gen1 与 Gen1、前端与后端、构建时与运行时非常令人困惑。

我发现这有效:

此外,您还需要具有从 SSM 参数存储读取权限的 IAM 服务角色,即

ssm:GetParametersByPath

在 github 上查看这个非常有用的评论:

如果一切都正确,则不应在构建日志中看到该警告。

© www.soinside.com 2019 - 2024. All rights reserved.