当前位置: 首页 > 知识库问答 >
问题:

在NodeJS Lambas中访问AWS SSM参数

贺景铄
2023-03-14

我可以从NodeJS本地的AWS SSM参数存储中检索数据,但当我将代码移动到lambdas时就无法检索数据。

我搜索了很多使用NodeJ设置lambda的例子,但没有找到这些例子,这些NodeJ不使用“无服务器”框架

我知道我错过了一些简单的东西。我只是还不知道是什么。

我已授予lambda的IAM策略以下权限:

"Effect": "Allow",
"Action": [
    "ssm:PutParameter",
    "ssm:GetParameter"
],
"Resource": [
    "arn:aws:ssm:region:account-id:parameter/Name/Of/Parameter"
]
AWS.config.update({region: 'my-region'})
const ssm = new AWS.SSM()
ssm.getParameter({
  Name: '/Name/Of/Parameter',
  WithDecryption: false
}, (err, data) => {
  if (err) {
    reject(err);
  }
  if (data.Parameter !== undefined) {
     resolve(data.Parameter.Value);
  }
  reject(new Error('No Parameter'));
});

定义本地数据。在我的lambda中,我得到错误:“{typeerror:Cannot read property'parameter'of null”,这意味着'data'是空的,就像err一样。

任何洞察力都值得赞赏。

共有1个答案

黄博艺
2023-03-14

试试下面的promise语法--它对我有效。注意,我也获得了多个参数,因此调用也是不同的。

"Action": [
    "ssm:GetParameters",
    "ssm:GetParameter"
],

然后...

ssm.getParameters({
      Names: [`/path/${environmentStage}/more/path/${name}`],
      WithDecryption: true,
    }).promise()).then(data => data.Parameters.length ? data.Parameters[0].Value : Promise.reject(new Error(`SSM Parameter ${name} is not set.`)));

 类似资料:
  • 问题内容: C和派生函数的入口点函数具有和(和)参数,但是Swift没有合适的参数:顶级代码只是代码,并且没有参数。 在Swift程序中,如何访问等价的? 问题答案: 进程 刚刚重命名为 CommandLine (自Swift 3.0 8月4日快照以来) (由于某些原因,变更日志中未提及)

  • 问题内容: 我的POST方法看起来像这样: 当我在Netbeans中创建Jersey客户时,调用post方法的方法如下所示: 运行此测试时: 它在服务器中提供以下输出: 我需要更改什么才能使参数给出正确的值? 问题答案: 你的方法应该接受JSON对象而不是字符串。Jersey使用JAXB支持封送和拆封JSON对象(有关详细信息,请参阅jersey文档)。创建一个类似的类: 然后,你的方法将如下所示

  • 问题内容: 这是我的一部分: This is the item reader: 这是Spring Batch在运行时所说的: 怎么了 在Spring 3.0中,我在哪里可以了解有关这些机制的更多信息? 问题答案: 如前所述,你的阅读器需要进行“逐步”调整。你可以通过注释完成此操作。如果你将该注释添加到阅读器,则它应该对你有用,如下所示: 该范围默认情况下不可用,但是如果你正在使用XML名称空间,则

  • 我知道如何获取如下查询的参数: 在这种情况下,我可以使用获取参数(例如中的)。 但是,对于类似的url,如何访问变量? 我尝试了,但没有成功。

  • Rust教程没有解释如何从命令行获取参数。在所有示例中,< code>fn main()只显示了一个空参数列表。 从 访问命令行参数的正确方法是什么?

  • 我想发送我的(在AngularJS控制器中)设置参数如下: 但是我不确定这是否是正确的方法,在Node.js中写什么: