使用 Node.js 更新 Google Cloud Secret Manager 中的数据
Posted
技术标签:
【中文标题】使用 Node.js 更新 Google Cloud Secret Manager 中的数据【英文标题】:Update data in Google Cloud Secret Manager using Node.js 【发布时间】:2021-10-03 06:12:42 【问题描述】:我在 Google Cloud Secret Manager 中有一些数据,有什么方法可以更新这些数据。我正在尝试使用以下代码进行更新
client.updateSecret(
secret:
name: 'projects/xyz/secrets/test',
labels:
secretmanager: 'rocks',
,
,
updateMask:
paths: ['labels'],
,
).then(res =>
let [data] = res
console.log('success in updating', data)
).catch(rej =>
console.log('erro in updating', rej)
)
【问题讨论】:
【参考方案1】:您可以使用此“Node.js”示例代码作为参考来更新 Google Cloud Secret Manager 中的数据。
/**
* TODO(developer): Uncomment these variables before running.
*/
// const name = 'projects/my-project/secrets/my-secret';
// Imports the Secret Manager library
const SecretManagerServiceClient = require('@google-cloud/secret-manager');
// Instantiates a client
const client = new SecretManagerServiceClient();
async function updateSecret()
const [secret] = await client.updateSecret(
secret:
name: name,
labels:
secretmanager: 'rocks',
,
,
updateMask:
paths: ['labels'],
,
);
console.info(`Updated secret $secret.name`);
updateSecret();
请参阅此documentation 了解更多信息。
【讨论】:
【参考方案2】:假设秘密已经存在,您需要创建一个秘密版本来更新秘密数据。这是我使用的方法。
const SecretManagerServiceClient = require('@google-cloud/secret-manager');
const client = new SecretManagerServiceClient()
const parent = 'projects/YOUR_PROJECT'
async function addSecretVersion(secretName, payload)
if (typeof payload != 'string') throw `Secret payload must be a string`
const [version] = await client.addSecretVersion(
parent: `$parent/secrets/$secretName`,
payload:
data: Buffer.from(payload, 'utf8'),
,
)
console.info(`Added secret version $version.name`)
【讨论】:
【参考方案3】:Secret Manager 中的数据存储在 Secret Version 上。
秘密 - 包含有关秘密的元数据,包括名称、时间戳、标签等。 秘密版本 - 包含实际的秘密数据。一个 Secret 包含 0 个或多个 Secret Versions。 秘密版本是不可变的,所以你不能更新里面的值。但是,您可以add a new Secret Version。这将创建一个新的 Secret Version 并更新“最新”指针的值:
const [version] = await client.addSecretVersion(
parent: parent,
payload:
data: myNewPayload,
,
);
有关版本控制的更多信息,请查看:
What is first-class versioning? Secret and secret version definitions【讨论】:
以上是关于使用 Node.js 更新 Google Cloud Secret Manager 中的数据的主要内容,如果未能解决你的问题,请参考以下文章
Google Drive Node.js - 从节点v7更新到v9后上传文件时出错
使用 node.js 标准环境在 AppEngine 上找不到模块 @google-cloud/firestore
使用 Node.js 的 Google App Engine gcloud app 部署错误 [5]
Mongoose - 更新数组中的每个子文档(node.js)