在一次 API 调用 JavaScript 中从 AWS Secrets Manager 请求 2 个密钥

Requesting 2 secrets from AWS Secrets Manager in One API Call with JavaScript

背景

我正在使用 AWS Secrets Manager 在 AWS 中存储一些不同的密码和秘密值。第一个条目专门用于 AWS RDS 信息。

要在 Secrets Manager 中输入任意机密数据,您必须 select 与 RDS 不同的条目。

我这样做了,然后创建了几个要存储的键值对。完成此操作后,我就有了 2 组 SecretId。 SecretIds 用于 return 来自 Secrets Manager 的正确机密。我有 2 个不同的 SecretId,需要 return 2 组不同的秘密。我希望我可以做到这一点而不必进行 2 个单独的 API 调用。

例子

最初这是 returnRDS 用户名和密码的 secretId。

const secretRds = 'some/thing/something';

我能够 return 这样的数据,

client.getSecretValue({ SecretId: secretRds }, {...}

问题

现在我有了第二个 secretId,我有 2 个这样的集合,

const secretRds = 'some/thing/something';
const secretConfigs = 'some/thing/sopmethingElse';

由于原始 secretId 已作为 getSecretValue 参数中的值传递到 SecretId 键中,我如何传递第二个 secretId

查看文档 here,我似乎找不到任何解释这一点的内容。

这就是我想要完成的事情,

显然这行不通,因为密钥被命名了两次。 我需要了解如何将 2 个 secretId 传递给同一个 secretId。

const secretRds = 'some/thing/something';
const secretConfigs = 'some/thing/sopmethingElse';

client.getSecretValue({ SecretId: secretRds: SecretId: secretConfigs }, {...}

不幸的是,Secrets Manager API does not support passing multiple SecretId's in a single GetSecretValue 调用。

似乎没有任何方法可以在单个 API 调用中检索超过 1 个秘密值。您必须向 GetSecretValue.

发出 2 次不同的 API 调用

您存储的这些值是什么?如果它们是相关的,例如数据库用户名、密码和连接字符串,您可以将它们全部存储在秘密中的同一个 JSON blob 中。您可以返回控制台并编辑密钥以组合所有内容。

如果它们并非全都相关,您可能希望将它们保存在单独的秘密中,以便您可以单独管理对它们的权限。