我浪费了几个小时试图找出为什么 stepfunctions.listTagsForResource(...)
在从 AWS Lambda 集成编辑器调用它时未定义,如下所示:
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)
}
此时的最新版本(在您的文档链接中)是 2.409.0
,它确实定义了 listTagsForResource
函数。您可以在 v2.409.0 source code 中确认这一点.
listTagsForResource
在 v2.290.0 中不可用,因此您将无法在 Lambda 内联编辑器中调用它。 (似乎在 this commit 中为 v2.382.0 添加了函数。)
仍然可以在 Lambda 中使用这个函数,只是不能通过时髦的内联编辑器——你必须 build a package您的 Node 应用程序并将其作为 Zip 文件部署到 Lambda。
所以,您的问题一点也不愚蠢;您遇到了一个令人沮丧的问题,它经常困扰着想要在内联编辑器中快速尝试某些东西的人们。
关于javascript - 无法列出来自 lambda 的步骤函数标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54670578/