首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWS Lambda是否支持aws-sdk v3?

AWS Lambda是否支持aws-sdk v3?
EN

Stack Overflow用户
提问于 2021-02-10 10:13:13
回答 1查看 2.4K关注 0票数 6

我基于cdk研讨会的here编写了一个小的lambda函数。我正在用typescript编写lambda函数,通过创建包含lambda函数的云形成堆栈的管道进行部署。

我正在尝试使用lambda,as demoed here中的sdk v3。但随后我看到了相互冲突的文档here

这些错误是因为我正在尝试使用V3,而我不应该使用它,还是其他一些原因?处理程序设置正确,函数运行但失败,并显示以下错误:

代码语言:javascript
运行
复制
{
    "errorType": "Runtime.ImportModuleError",
    "errorMessage": "Error: Cannot find module '@aws-sdk/client-sns'\nRequire stack:\n- /var/task/ReceiveMessageLoraThing.js\n- /var/runtime/UserFunction.js\n- /var/runtime/index.js",
    "stack": [
        "Runtime.ImportModuleError: Error: Cannot find module '@aws-sdk/client-sns'",
        "Require stack:",
        "- /var/task/ReceiveMessageLoraThing.js",
        "- /var/runtime/UserFunction.js",
        "- /var/runtime/index.js",
        "    at _loadUserApp (/var/runtime/UserFunction.js:100:13)",
        "    at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)",
        "    at Object.<anonymous> (/var/runtime/index.js:43:30)",
        "    at Module._compile (internal/modules/cjs/loader.js:999:30)",
        "    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)",
        "    at Module.load (internal/modules/cjs/loader.js:863:32)",
        "    at Function.Module._load (internal/modules/cjs/loader.js:708:14)",
        "    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)",
        "    at internal/main/run_main_module.js:17:47"
    ]
}

该文件被部署为js,并设置了正确的处理程序。如果我注释掉require语句,它可以很好地工作:

代码语言:javascript
运行
复制
// works
"use strict";
//const sns = require("@aws-sdk/client-sns");
exports.handler = async (event) => {
    console.log("hello");
    return true;
}

// doesn't work
"use strict";
const sns = require("@aws-sdk/client-sns");
exports.handler = async (event) => {
    console.log("hello");
    return true;
}

使用本研讨会中的代码没有生成node_modules或层,但在我开始之前,我想知道我是否可以在lambda上实际使用V3。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-14 07:16:15

可以,您可以使用AWS SDK v3,就像使用任何其他JS库一样。

Lambda的节点环境附带了安装的AWS SDK v2 (前一个),您可以在此处看到:https://docs.aws.amazon.com/lambda/latest/dg/lambda-nodejs.html

因此,要使用v3,您应该像绑定任何其他依赖项一样将其与应用程序捆绑在一起,并部署该捆绑包(https://docs.aws.amazon.com/lambda/latest/dg/nodejs-package.html)。

实际上,即使可以在Lambda环境中使用SDK v2,最好还是自己将其与您的应用程序捆绑在一起并进行部署。这样,您将始终使用您指定的版本,而不是Lambda上的版本,并且可以随时更新。即使他们没有做任何不兼容的更改,新的SDK版本也总是有可能会有一些bug,这将破坏您的Lambda (非常不可能,但也是有可能的)。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66129993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档