gpt4 book ai didi

node.js - 如何在 Lambda 中使用 putParameter 和 aws-sdk for nodejs 获取过去的错误?

转载 作者:搜寻专家 更新时间:2023-11-01 00:48:10 25 4
gpt4 key购买 nike

我正在尝试使用 AWS SDK for JavaScript in Node.js 中的 putParameter 设置参数.特别是,我想利用“高级”层,如果可能的话,使用过期策略和标签。当我执行我的代码时,我不断收到如下错误:

There were 2 validation errors:
* UnexpectedParameter: Unexpected key 'Policies' found in params
* UnexpectedParameter: Unexpected key 'Tier' found in params

我怀疑问题出在我使用的 aws-sdk 版本上,所以我尝试使用 SAM local 在本地运行代码,以及使用 nodejs8.10 和 nodejs10.x 环境的 Lambda 函数。错误不会消失。

const AWS = require('aws-sdk');
AWS.config.update({region: 'us-east-1'});
const ssm = new AWS.SSM({apiVersion: '2014-11-06'});

exports.lambdaHandler = async () => {

const tokenExpiration = new Date();
tokenExpiration.setSeconds(tokenExpiration.getSeconds() + 60);

await ssm.putParameter({
Name: 'SECRET_TOKEN',
Type: 'SecureString',
Value: '12345',
Policies: JSON.stringify([
{
"Type":"Expiration",
"Version":"1.0",
"Attributes":{
"Timestamp": tokenExpiration.toISOString()
}
}
]),
Overwrite: true,
Tier: 'Advanced'
}).promise();
};

我希望这段代码能够工作并设置一个过期参数。但是,sdk 似乎无法识别根据文档提供的“策略”和“层”参数。我不知道这是否是等待最新的适用于 JavaScript 的 AWS SDK 的问题,但是 runtimes page建议 nodejs10.x 正在运行 AWS SDK for JavaScript 2.437.0。

知道我可以在没有相关参数(即,仅“名称”、“类型”和“值”参数)的情况下正确运行代码可能会有所帮助。

最佳答案

不幸的是,直到 v2.442.0 ( see diff )

才添加 Tier 和 Policies

这意味着要使用这些功能,您必须使用您正在开发的 aws-sdk 版本进行部署。

应该注意的是,无论是针对内置版本进行开发/测试,还是使用您确实使用的 aws-sdk 进行部署,通常都被认为是良好做法。如果您正在部署您的版本,您可以使用显式客户端导入(例如 const SSM = require('aws-sdk/clients/ssm') 来降低部署规模。如果你根据预览 AWS-SDK Version 3 进行开发。

关于node.js - 如何在 Lambda 中使用 putParameter 和 aws-sdk for nodejs 获取过去的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56133040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com