amazon-web-services - AWS 在构建过程中动态读取 buildspec.yml 文件中的参数存储值
问题描述
我们有一个多租户 AWS 环境,其中我们在单个 Document Db 实例中有多个生产数据库。
对于每个租户(或客户),我们都有自己的 lambda 函数,它们连接到各自客户端的数据库。
在除了全局管理员用户之外的文档数据库中,我们为每个客户端数据库创建了一个特定用户,我们希望在其各自 lambda 的查询字符串中使用该用户。
我已将所有用户名和密码作为加密字符串存储在 AWS 参数存储中。
目标是从参数存储中获取正确的数据库凭据,并在构建过程中将它们替换到查询字符串中的 db config json 文件中。
我的 buildspec.yml 看起来像这样:
version: 0.2
env:
parameter-store:
DB_USER: dbUser_prod1
DB_PWD: dbPwd_prod1
phases:
install:
runtime-versions:
nodejs: 12
commands:
- npm install -g serverless@1.60.5
- npm install -g serverless-domain-manager@3.3.1
- npm install -g serverless-prune-plugin
build:
commands:
- env="dev" && region="ap-south-1"
- echo $CODEBUILD_WEBHOOK_HEAD_REF
- WORDTOREMOVE="refs/heads/"
- env=${CODEBUILD_WEBHOOK_HEAD_REF//$WORDTOREMOVE/}
- sed -i "s#MONGODBNAME#$env#g" ./config.db.json
- sed -i "s#MONGODBUSERNAME#$DB_USER#g" ./config.db.json
- sed -i "s#MONGODBUSERPWD#$DB_PWD#g" ./config.db.json
如您所见,我使用 CODEBUILD_WEBHOOK_HEAD_REF 环境变量获取生产环境的名称。
我的参数存储中的数据库凭据命名为
dbUser_customer1 dbPwd_customer1
dbUser_customer2 dbPwd_customer2
dbUser_customer3 dbPwd_customer3
只需将 customer1,2,3 替换为我从上面 buildspec 中的 env 变量中获得的值
我正在寻找的是根据我得到的“env”值在 config.db.json 替换中动态使用正确的参数存储变量。
因此,我不想在参数存储部分的参数存储中定义所有数据库凭据,而只想为其进行构建。
这可能吗?如果没有,还有其他选择吗?
先感谢您。
解决方案
推荐阅读
- c++ - 如何在不使用 C++ 中的函数的情况下显示链表中的元素?
- javascript - 我在包控制中找不到 EJS2
- angular - 是否可以使用 Angular 获取任何 URI 的 HTML 页面?
- swift - 谁能告诉我为什么当我按下凸轮按钮时我的应用程序崩溃了
- rust - 如何在不调用其中一个函数的情况下链接 C 库?
- azure-web-app-service - 移动浏览器无法查看 Azure 网站
- c++ - 使用“typename Container::value_type”作为返回值时无法推断模板参数
- typescript - 推断 TypeScript 泛型类类型
- javascript - 无法读取未定义的属性“toLowerCase”-REACT-FIRESTORE
- c - 为无法重命名的程序编写一个 C/C++ 完全透明的包装器