【问题标题】:Syntax Error when attempting to import aws\ssm-parameters in nodes on a lambda尝试在 lambda 上的节点中导入 aws\ssm 参数时出现语法错误
【发布时间】:2021-10-24 16:07:51
【问题描述】:

我对 AWS Lambda 的 aws nodejs sdk 有疑问。从官方文档中,我尝试使用 lambda 获取 aws\ssm 参数。

文档:[https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-ssm/classes/getparameterscommand.html

这是我的 Lambda 代码

import { SSMClient, GetParametersCommand } from "@aws-sdk/client-ssm"
const config = { region: "eu-central-1"}


exports.handler = async (event, context) => {


const client = new SSMClient({ region: config.region});
const command = new GetParametersCommand({Names: ["/my-app/dev/db-url"]});
const response = await client.send(command);

console.log(response);
};

但是当运行 aws lambda 函数时,它通过错误给我如下:

"errorType": "Runtime.UserCodeSyntaxError",
"errorMessage": "SyntaxError: Cannot use import statement outside a module"

我是 JS 世界的新手。有人知道它为什么抱怨吗?

问候

【问题讨论】:

    标签: node.js amazon-web-services aws-lambda devops


    【解决方案1】:

    来自here 使用 ES5 语法:

    const { SSMClient, GetParametersCommand } = require("@aws-sdk/client-ssm");
    

    Lambda 目前仅支持 ES5,对于 SDK 版本 3,您需要按照 here 的说明安装模块。 本地需要:

    npm install @aws-sdk/client-ssm
    

    对于 SDK V2,可以这样做:

    const AWS = require('aws-sdk');
    const ssm = new AWS.SSM();
    const val = await ssm.getParameter(
        {Name: '/my-app/dev/db-url'}).promise();
    console.out(val);
    

    【讨论】:

    • 我试过这个也有不同的错误:“Runtime.ImportModuleError: Error: Cannot find module '@aws-sdk/client-ssm'”
    • 请看我编辑的答案
    猜你喜欢
    • 1970-01-01
    • 2017-12-11
    • 2013-11-15
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 2020-03-09
    相关资源
    最近更新 更多