Доступ к собственным НПМ AWS при сбоях

#aws-lambda #aws-sdk-nodejs

#aws-lambda #aws-sdk-nodejs

Вопрос:

Я работаю над примером для AWS Transcribe прямо из документации Amazon, но он не соответствует требованию, и мне интересно, чего мне не хватает для настройки, чтобы заставить это работать. Отчеты журнала Error: Cannot find module '@aws-sdk/client-transcribe' , и вы можете увидеть полный пример и журнал ниже.

Это мой первый проект с лямбдами и node.js , но я запустил весь остальной лямбда-код AWS, поэтому я подозреваю, что это ошибка с моей стороны. Я искал и пришел с пустыми руками.

 const {
  TranscribeClient,
  StartTranscriptionJobCommand,
} = require("@aws-sdk/client-transcribe");

// Set the AWS Region
const REGION = "REGION"; // For example, "us-east-1"

// Set the parameters
const params = {
  TranscriptionJobName: "JOB_NAME",
  LanguageCode: "LANGUAGE_CODE", // For example, 'en-US'
  MediaFormat: "SOURCE_FILE_FORMAT", // For example, 'wav'
  Media: {
    MediaFileUri: "SOURCE_LOCATION",
    // For example, "https://transcribe-demo.s3-REGION.amazonaws.com/hello_world.wav"
  },
};

// Create an Amazon Transcribe service client object
const client = new TranscribeClient({ region: REGION });

const run = async () => {
  try {
    const data = await client.send(new StartTranscriptionJobCommand(params));
    console.log("Success - put", data);
  } catch (err) {
    console.log("Error", err);
  }
};
run();
 

И это запись в журнале:

 {
    "errorType": "Runtime.ImportModuleError",
    "errorMessage": "Error: Cannot find module '@aws-sdk/client-transcribe'nRequire stack:n- /var/task/index.jsn- /var/runtime/UserFunction.jsn- /var/runtime/index.js",
    "stack": [
        "Runtime.ImportModuleError: Error: Cannot find module '@aws-sdk/client-transcribe'",
        "Require stack:",
        "- /var/task/index.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"
    ]
}

    2021-01-29T23:25:31.952Z undefined ERROR Uncaught Exception {"errorType":"Runtime.ImportModuleError","errorMessage":"Error: Cannot find module '@aws-sdk/client-transcribe'nRequire stack:n- /var/task/index.jsn- /var/runtime/UserFunction.jsn- /var/runtime/index.js","stack":["Runtime.ImportModuleError: Error: Cannot find module '@aws-sdk/client-transcribe'","Require stack:","- /var/task/index.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"]}
 

Ответ №1:

Пример, который вы используете, импортирует и использует клиенты пакетов AWS Service V3.

На данный момент Node.js время выполнения в среде lambda включает AWS SDK 2.804.0.

Вы должны включить новую версию в свое развертывание.

Ответ №2:

Установите npm, затем запустите «npm install» в репозитории github для этих примеров, согласно приведенным здесь предварительным инструкциям для этих примеров.

Он установит все необходимые модули AWS SDK для JavaScript V3, необходимые для примера. Если они отсутствуют, возникает ошибка, которую вы указываете.

Ответ №3:

Оказывается, был способ получить ту же функциональность без установки npm AWS сверх того, что Amazon поставляет с базовым экземпляром lambda.

 const AWS = require('aws-sdk');

// Set the AWS Region
const REGION = "REGION"; // For example, "us-east-1"


// Set the parameters
const params = {
  TranscriptionJobName: "JOB_NAME",
  LanguageCode: "LANGUAGE_CODE", // For example, 'en-US'
  MediaFormat: "SOURCE_FILE_FORMAT", // For example, 'wav'
  Media: {
    MediaFileUri: "SOURCE_LOCATION",
    // For example, "https://transcribe-demo.s3-REGION.amazonaws.com/hello_world.wav"
  },
};

// Create an Amazon Transcribe service client object
const client = new TranscribeClient({ region: REGION });

const run = async () => {
  try {
    transcribe.startTranscriptionJob(params, (err, data) => {
        if (err) {
            console.log("Success - put", data);
            throw(err);
        }
        else
        {
            const data = await client.send(new StartTranscriptionJobCommand(params));
            console.log("Success - put", data);
        }
    });
  } catch (err) {
    console.log("Error", err);
  }
};
run();