问题描述
我正在完成一项有趣的任务,到目前为止还无法解决。
配置:
- 用于后端的AWS代码管道,该管道将值存储在SSM中(@ aws-cdk / aws-ssm)
- 用于前端的AWS代码管道,该管道构建了一个管道,该管道为React App构建项目
- 使用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(以修改基础结构组件等),并且已经实现了宏。