AWS Transcribe javascript API UnexpectedParameter: в параметрах найден неожиданный ключ "OutputBucketName"

Я звоню в сервис AWS Transcribe с лямбды

Лямбда-код:

  module.exports.createTranscribeJob = (event, context, callback) => {
  const region = event.Records[0].awsRegion;
  const bucket = event.Records[0].s3.bucket.name;
  const key = event.Records[0].s3.object.key;
  const transcribeservice = new AWS.TranscribeService({apiVersion: '2017-10-26'});

  // Set the  transcribeservice startTranscriptionJob params
  const params = {
    LanguageCode: 'en-US',
    Media: {
      MediaFileUri: `https://s3-${region}.amazonaws.com/${bucket}/${key}`
    },
    MediaFormat: 'mp3',
    TranscriptionJobName: key,
    MediaSampleRateHertz: 0,
    OutputBucketName: bucket
  };

  // call startTranscriptionJob with the params
  transcribeservice.startTranscriptionJob(params, function(err, data) {
    if (err){
      console.log(err, err.stack);
    } else {
      console.log(data);
    }
  });

  callback(null);
};

Я установил версию API, которую хочу использовать new AWS.TranscribeService({apiVersion: '2017-10-26'})

Когда я звоню transcribeservice.startTranscriptionJob задание не выполняется с этой ошибкой:

{ UnexpectedParameter: Unexpected key 'OutputBucketName' found in params
at ParamValidator.fail (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:50:37)
at ParamValidator.validateStructure (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:77:14)
at ParamValidator.validateMember (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:88:21)
at ParamValidator.validate (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:34:10)
at Request.VALIDATE_PARAMETERS (/var/runtime/node_modules/aws-sdk/lib/event_listeners.js:125:42)
at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:105:20)
at callNextListener (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:95:12)
at /var/runtime/node_modules/aws-sdk/lib/event_listeners.js:85:9
at finish (/var/runtime/node_modules/aws-sdk/lib/config.js:320:7)
at /var/runtime/node_modules/aws-sdk/lib/config.js:338:9
message: 'Unexpected key \'OutputBucketName\' found in params',
code: 'UnexpectedParameter',
time: 2018-07-19T12:50:58.278Z } 

Если я удалю OutputBucketName: bucket это работает, так что я знаю, что это не проблема с разрешениями

Глядя на исходный код для AWS Javascript SDK OutputBucketName определяется как член StartTranscriptionJobRequest https://github.com/aws/aws-sdk-js/blob/75978fcfe4186d5a310e9b5c6d6328e90997edf0/apis/transcribe-2017-10-26.normal.json#L491

Мое единственное предположение, что лямбда не использует правильный SDK, хотя я заявляю версию API.

Любая помощь приветствуется, пожалуйста, дайте мне знать, если у меня есть ошибка на моей стороне.

Спасибо

2 ответа

Решение

Проблема в том, что AWS Lambda не использует последнюю версию JS SDK.

Решение состоит в том, чтобы включить последний JS SDK в вашу собственную папку node_module

npm install aws-sdk

Тогда ваш лямбда-код будет использовать последнюю версию SDK

Спасибо Джон!! Это решение сработало, если вы ранее редактировали непосредственно в веб-интерфейсе, вы потеряете возможность редактировать код встроенный.

Функция экспорта

Затем, как только вы загрузите, разархивируйте и запустите команду, опубликованную Джоном.

npm install aws-sdk

Наконец, заархивируйте его, убедитесь, что ваш zip содержит каталог node_modules, а также файлы.js, которые вы изначально скачали

Другие вопросы по тегам