node.js - 如何使用 NodeJS 在 lambda 中访问 AWS iot.describeCertificate()?
问题描述
我需要使用带有 NodeJS 的 lambda 函数来检索 IoT 证书状态。按照我应该用来完成此任务的文档。describeCertificate()
这是我到目前为止的代码(用于睾丸):
const AWS = require('aws-sdk')
const iot = new AWS.Iot()
let cert = {}
async function descCert (params) {
console.log("start descCert")
console.log("params")
console.log(params)
await iot.describeCertificate(params, function(err, data) {
console.log('describeCertificate - Fn')
if (err) {
console.log('describeCertificate - Error')
console.log(err, err.stack)
}else{
console.log('describeCertificate - data')
cert = data
console.log(data)
}
console.log("end describeCertificate - Fn")
})
console.log("end descCert")
}
module.exports.testFn = async (event, context, callback) => {
var zzz = {
certificateId: 'xxxx8c0891f8xxxxxx'
}
await descCert(zzz)
console.log("after descCert")
console.log(cert)
...
}
我的猜测是我没有访问该功能await iot.describeCertificate( ...
,因为我看不到登录CloudWatch
。
我应该收到这个序列:
- 开始 descCert
- 参数
- {certificateId:'xxxx8c0891f8xxxxxx'}
- 描述证书 - Fn
- 或 describeCertificate - 错误或 describeCertificate - 数据
- 实际数据响应
- 结束 describeCertificate - Fn
- 结束说明
- 在 descCert 之后
- 实际数据响应
但这就是我得到的:
- 开始 descCert
- 参数
- {certificateId:'xxxx8c0891f8xxxxxx'}
- (8) end descCert
- (9) 在 descCert 之后
- (10) os dados mesmo //{}
我在日志信息中看不到步骤 4-7。所以结论是没有调用函数。
我错过了什么?
解决方案
要访问 IoT 核心服务(或任何其他服务),您应该为 Lambda 函数提供对该服务的相应 RIGHT 访问权限。为此,您可以转到 IAM -> 角色并将相应的策略添加到附加到您的 Lambda 函数的角色中。
您可以将内联策略添加到相应的 lambda-role:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "iot:DescribeCertificate",
"Resource": "arn:aws:iot:*:*:cert/*"
}
]
}
最好将 更改Resource
为您对应的arn
.
推荐阅读
- javascript - HighCharts 数据结构 - 多个独立系列,堆积柱形图
- sql-server - SQL Server 是否存储最初创建用户定义函数的用户的名称?
- python - 选择一个选项后添加带有 n-1 个选项的连续下拉菜单
- bash - 从脚本中的 ftp 链接下载基因组序列时的 BASH 变量解释
- c# - 为什么此 ASP.NET Core POST 请求返回“405(不允许方法)”?
- wpf - 使用 Resources.BeginInit() 更新 ResourceDictionary
- google-app-engine - 在本地开发服务器上使用 get_serving_url() 提供图像时出现问题
- java - SQS Java lambda获取空对象
- arrays - R,从矩阵和向量控制数组的数量
- javascript - ArangoDB + JSON + Vue 命名法:如果到处使用 kebab-case 会遇到什么问题?