【问题标题】:How to get past errors using putParameter with aws-sdk for nodejs in Lambda?如何在 Lambda 中使用 putParameter 和 aws-sdk for nodejs 来解决过去的错误?
【发布时间】:2019-10-01 15:15:12
【问题描述】:

我正在尝试使用 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 开发工具包的问题,​​但 runtimes page 表明 nodejs10.x 正在运行适用于 JavaScript 的 AWS 开发工具包 2.437.0。

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

【问题讨论】:

    标签: node.js amazon-web-services aws-lambda aws-sdk aws-ssm


    【解决方案1】:

    不幸的是,直到v2.442.0 (see diff) 才添加层和策略

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

    应该注意的是,无论是针对内置版本进行开发/测试,还是使用您使用的 aws-sdk 进行部署,通常都被认为是良好做法。如果您正在部署您的版本,您可以使用显式客户端导入(例如 const SSM = require('aws-sdk/clients/ssm') 以减小部署大小。如果您针对预览版 AWS-SDK Version 3 进行开发,这将更加有效。

    【讨论】:

    • 我想内置的 lambda sdk 迟早会更新,所以即使我不采取任何行动,这也可能会自行解决。感谢您的帮助
    • 又一次带来了坏消息,但是内置的 aws-sdk 只会随着每个新的运行时发生变化(因为它可能对每个部署的 lambda 来说都是一个重大变化) ,所以我希望在 node 12 运行时发布之前你不会得到更高的版本。
    • 这可能是个坏消息,但它仍然为我省去了很多麻烦。再次感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 2022-11-24
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 2021-07-09
    • 2019-12-25
    相关资源
    最近更新 更多