无法列出来自 lambda 的步骤函数标签

Cannot list step function tags from lambda

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

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

lambda.listTags(...)不过,好像是可以用的。我觉得问一个(看似)简单的问题真的很愚蠢:

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

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

简答:

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

长答案:

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

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

此时的最新版本(在您的文档 link 中)是 2.409.0,它确实定义了 listTagsForResource 函数。您可以在 v2.409.0 source code.

中确认这一点 不幸的是,

listTagsForResourcev2.290.0, so you won't be able to call it in the Lambda inline editor. (It appears that function was added in this commit for v2.382.0 中不可用。)

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

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