通过CDK / AWS在React App中注入Systems Manager值的任何方法

问题描述

我正在完成一项有趣的任务,到目前为止还无法解决

配置:

  1. 用于后端的AWS代码管道,该管道将值存储在SSM中(@ aws-cdk / aws-ssm)
  2. 用于前端的AWS代码管道,该管道构建了一个管道,该管道为React App构建项目
  3. 使用buildspec.yml与App git存储库进行反应,该存储库由#2的管道消耗并部署到S3

问题: 有什么好方法可以读取存储在#1中的值并将其注入到React App中?

我可以在#2中轻松阅读它,但是该项目仅用于管道创建。 因此,我认为在构建或部署步骤中,前端需要一些特殊步骤来更新React App。

有什么好主意吗? :)我目前还没有。

谢谢!

buildspec.yml代码

version: 0.2

phases:
  install:
    runtime-versions:
      nodejs: 12
    commands:
      - yarn install
  build:
    commands:
      - yarn build

artifacts:
  base-directory: ./build
  files:
    - '**/*'

cache:
  paths:
    - './node_modules/**/*'


解决方法

好吧,我设法用CDK在React App中注入了Systems Manager值。 我没有找到一种使用初始设置(3个存储库)的方法。我必须将#2与#3合并(因此,前端react应用程序应与cdk一起使用。)

在此设置中,您可以读取cdk堆栈中的Systems Manager值并将其添加以在构建步骤(代码中的buildspec)期间与动态buildspec进行反应。

,

我认为我的例子可能对您有用。我有ECS容器,docker镜像由Jenkins服务器构建,并上传到ECR。我使用SSM参数存储来存储环境变量。我该怎么办?

我的ECS容器是使用cloudformation模板部署的,当Jenkins完成将新的docker映像上传到ECR然后执行我的Cloudformation的更新时,在我的cloudformation模板中,我有宏(从SSM参数读取的python函数Parameter存储环境变量并将其放在cloudformation模板中),以便使用我的参数存储的当前版本和最新的docker映像编译来更新ECS任务。您也可以从Jenkins中读取参数存储值,但是我更喜欢Jenkins中的不太可能的特权。同样,通过这种方式,可以更新cloudformation(以修改基础结构组件等),并且已经实现了宏。