在 Spring Boot 应用程序中检索具有相同密钥的多个 aws Secret

2024-03-29

有一个 Spring Boot 应用程序(起始父级为 2.4.8)。

该应用程序正在连接到多个数据源,并且用于在整个公司创建机密的自动化 Jenkins 作业的方式是,尽管机密名称不同(每个应用程序/源),但它们都具有相同的值 - “用户名”和“密码”文本。

例如:

  1. 第一个秘密是“/secret/rds/dev/foo/foo_app_user”,其值:

       username : user1 
       password: pass1
    
  2. 第二个秘密是“/secret/snowflake/dev/hoo/hoo_app_user”,其值:

        username : user2
        password: pass2
    

试图弄清楚如何使用 spring config import 导入它们,同时仍然能够在properties/yaml文件中独特地使用

  spring:
     config:
        import: aws secretsmanager:/secret/rds/dev/foo/foo_app_user,/secret/snowflake/dev/hoo/hoo_app_user


...
system:
  cache:
    username: ${username}
    password: ${password}



....
snowflake:
   datasource:
        username: ${username}
        password: ${password}

3 天前,2023 年 1 月 13 日,此问题已得到修复。提交参考 https://github.com/awspring/spring-cloud-aws/commit/4d9da9a46185559e1b0a0308eae5eb0f31f140f1

伴着春云3.0.x(取决于弹簧靴3.0.x) 你可以添加前缀

spring:
     config:
        import: 
          - aws-secretsmanager:/secret/rds/dev/foo/foo_app_user?prefix=foo_app.
          - aws-secretsmanager:/secret/snowflake/dev/hoo/hoo_app_user?prefix=hoo_app.

现在作为 Spring Cloud 版本的解决方法2.4.x we have

  • 复制了班级AwsSecretsManagerPropertySource进入我们的包中的代码库io.awspring.cloud.secretsmanager. Code Ref https://github.com/awspring/spring-cloud-aws/blob/2.4.x/spring-cloud-aws-secrets-manager-config/src/main/java/io/awspring/cloud/secretsmanager/AwsSecretsManagerPropertySource.java
  • 然后使用类似的实现方法作为版本3.0.x. Code Ref https://github.com/awspring/spring-cloud-aws/blob/main/spring-cloud-aws-secrets-manager/src/main/java/io/awspring/cloud/secretsmanager/SecretsManagerPropertySource.java

PS:不要更改类签名。方法名称、构造函数参数应与版本相同2.4.x


编辑:2023 年 2 月 5 日

与新2.4.3版本你可以传递相同的前缀。无需采取解决方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Spring Boot 应用程序中检索具有相同密钥的多个 aws Secret 的相关文章

随机推荐

  • 使用关联数组作为 D3 的数据

    我有一个非常简单的 D3 示例 它首先将数据读入关联数组 然后将其显示在条形图中 不过 我似乎无法使用此方法显示任何内容 相反 我必须在两者之间插入一个任务 将数据读取到关联数组中 将该数据复制到一个简单数组中 然后使用该简单数组显示条形图
  • 获取可用(语言)resx 文件的列表

    许多程序都有社区 在应用程序发布后向其添加语言 因此 在程序的设置窗口中 人们可以看到可用语言的下拉列表 那么 人们在使用 resx 文件进行本地化时如何编码呢 我在网上搜索了一遍又一遍 但找不到任何答案 一切都运行良好 但现在 我需要制作
  • 如何在 pom.xml 文件中指定 Java 编译器版本?

    我在 Netbeans 中编写了一些 Maven 代码 大约有 2000 多行 当我在 Netbeans 上编译它时 一切都很好 但如果我想在命令行上运行它 我会收到以下错误 generics are not supported in so
  • JavaScript 风格的警报系统

    我在用smoke js http ssssnakes com smoke 它允许设置经典警报 javascript 窗口的样式 您所要做的就是放置 smoke在警报之前 即 smoke confirm 我遇到的问题是确定 取消回调 它对我不
  • 创建“拼写检查”,以合理的运行时间检查数据库

    我不是在询问如何实现拼写检查算法本身 我有一个包含数十万条记录的数据库 我想要做的是针对所有这些记录的表中的特定列检查用户输入 并返回具有特定汉明距离的任何匹配项 同样 这个问题不是关于确定汉明距离等 当然 目的是创建一个 您的意思是 功能
  • pyspark 中的交叉验证

    我使用交叉验证来训练线性回归模型 使用以下代码 from pyspark ml evaluation import RegressionEvaluator lr LinearRegression maxIter maxIteration m
  • HMC SHA1 哈希 - Java 生成与 C# 不同的哈希输出

    这是后续this https stackoverflow com questions 7175067 hmc sha1 hash c sharp producing different hash output than ruby问题 但我正
  • C# - 调整图像画布大小(保持源图像的原始像素尺寸)

    我的目标是获取图像文件并将尺寸增加到 2 的下一个幂 同时保留像素原样 也称为不缩放源图像 因此基本上最终结果将是原始图像 加上跨越图像右侧和底部的额外空白 因此总尺寸是 2 的幂 下面是我现在正在使用的代码 它创建了具有正确尺寸的图像 但
  • 在 Linux 上获取机器 ID 的最佳方法?

    获取唯一机器 ID 的最佳实践方法是什么GNU Linux for i386建筑学 除了这个还有什么好的办法吗mac地址 根据您的内核 DMI 信息可能可以通过 sysfs 获得 尝试一下 cat sys class dmi id boar
  • git-svn rebase 和 dcommit 问题

    git version 1 7 1 svn version 1 6 12 Ubuntu 10 10 我只有 git 我用过 svn 不过我没一起用过 我有一个 git 存储库 我必须将我的存储库升级为 subversion 存储库 所以我一
  • Drupal 7中用户的图片存储在哪里?

    我正在使用 SelectQuery 对象来检索和显示用户列表 但我不知道从哪里获取用户的图片 users 表有一列名为 picture 但其中的数据只是一个整数 图片是否存储在某个 blob 字段中 或者是否存在指向另一个表中图片的链接 图
  • Android:使用选择器更改按钮背景图像和颜色

    我有一个按钮 我将其背景设置为特定selector 选择器当前更改按钮背景并更改图像作为背景 我还希望更改背景颜色 图像是周围有透明空间的图标 这是选择器
  • PM2 是否应该在开发过程中使用?

    我从 Node js 世界开始 我注意到节点进程不会自动重新启动 通过搜索 我发现 Nodemon 可以完成这项工作 但我还发现 PM2 是 Nodemon 的替代品 那么我应该尝试 PM2 进行开发还是直接将其用于生产并使用 nodemo
  • 使用PHP openssl_verify()函数验证Android客户端APP创建的签名和数据

    我读到了关于帖子openssl verify http php net manual en function openssl verify php 我想问一些与openssl verify 因为我的 PHP 代码无法验证从 Java 创建的
  • 类似于 Android 的 Cocoa Pods 和 Bundler(用于依赖项)?

    有没有类似于bundler ruby 和cocoa pods ios 的东西来管理Android中的依赖关系 Gradle Maven Central 似乎是 Android 的等价物
  • 在 NodeJS 中创建 HTTPS 客户端

    我花了很长时间才弄清楚如何使用 Node js v0 3 8 安全地连接到 HTTP 服务器 我有以下代码 var http require http var client http createClient 443 host secure
  • XSLT 输出格式:保留换行符、删除缩进

    这是我的 XML
  • 如何使用 ChemDraw/Python 从 InChI 创建 .cdx 文件?

    我想使用 Python 从 InChI 创建一个 ChemDraw cdx 文件 这answer https stackoverflow com a 51543307 7295599给出了一个解决方案cdx gt InChI 下面的最小示例
  • VIM 闪烁问题

    我从我的 mac OSX 10 6 8 通过 SSH 连接到运行 centOS5 的学校服务器 当我尝试使用 VIM 时 它不会停止在 mac 终端内闪烁 有想法该怎么解决这个吗 请记住 我无权修改服务器上的任何 etc 文件或 bin 文
  • 在 Spring Boot 应用程序中检索具有相同密钥的多个 aws Secret

    有一个 Spring Boot 应用程序 起始父级为 2 4 8 该应用程序正在连接到多个数据源 并且用于在整个公司创建机密的自动化 Jenkins 作业的方式是 尽管机密名称不同 每个应用程序 源 但它们都具有相同的值 用户名 和 密码