微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在构建过程中,AWS 在 buildspec.yml 文件中动态读取参数存储值

如何解决在构建过程中,AWS 在 buildspec.yml 文件中动态读取参数存储值

我们有一个多租户 AWS 环境,我们在单个 Document Db 实例中拥有多个生产数据库

对于每个租户(或客户),我们都有自己的 lambda 函数,这些函数连接到相应客户的数据库

在除全局管理员用户之外的文档 db 中,我们为每个客户端数据库创建了一个特定用户,我们希望在其各自 lambda 的查询字符串中使用该用户

我已将所有用户名和密码作为加密字符串存储在 AWS 参数存储中。

目标是在构建过程中从参数存储中获取正确的 db 凭据,并在查询字符串中的 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 替换为我从上面构建规范中的 env 变量中获得的值

我正在寻找的是根据我获得的“env”值在 config.db.json 替换中动态使用正确的参数存储变量。

因此,我不想在参数存储部分的参数存储中定义所有数据库凭据,而只想定义要为其进行构建的凭据。

这可能吗?如果没有,还有其他选择吗?

提前致谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。