首页 > 解决方案 > 无法从 lambda 列出阶跃函数标签

问题描述

我浪费了几个小时试图找出stepfunctions.listTagsForResource(...)从 AWS Lambda 集成编辑器调用它时为什么没有定义,如下所示:

const { tags } = await stepfunctions.listTagsForResource({
  resourceArn: process.env.STATE_MACHINE_ARN
}).promise()

lambda.listTags(...)但是,似乎可用。问一个(看似)简单的问题,我觉得真的很愚蠢:

如何使用 AWS 开发工具包访问 AWS Step Functions 资源标签?文档当然没有帮助。

编辑:值得注意的是,所有其他list功能都按预期工作,listTagsForResource是唯一未定义的功能。

标签: javascriptamazon-web-servicesaws-lambdaaws-sdkaws-step-functions

解决方案


简短的回答:

可在内联 AWS Lambda 编辑器中使用的版本aws-sdk通常已过时;当前版本没有定义该listTagsForResource功能。

长答案:

现在,在内联编辑器中运行以下命令显示aws-sdk版本为2.290.0

var AWS = require("aws-sdk")
exports.handler = async (event) => {
    console.log(AWS.VERSION)
}

此时的最新版本(如您的文档链接中所示)是2.409.0,它确实定义了listTagsForResource函数。您可以在v2.409.0 源代码中确认这一点。

listTagsForResource不幸的是,在v2.290.0中不可用,因此您将无法在 Lambda 内联编辑器中调用它。(似乎在v2.382.0的此提交中添加了该功能。)

仍然可以在 Lambda 中使用此功能,只是不需要通过时髦的内联编辑器——您必须构建Node 应用程序包并将其作为 Zip 文件部署到 Lambda。

所以,你的问题一点也不愚蠢。您遇到了一个令人沮丧的问题,该问题经常困扰想要在内联编辑器中快速尝试某些东西的人。


推荐阅读