【问题标题】:AWS Transcribe javascript API UnexpectedParameter: Unexpected key 'OutputBucketName' found in paramsAWS Transcribe javascript API UnexpectedParameter:在参数中找到意外的键“OutputBucketName”
【发布时间】:2018-08-06 23:08:14
【问题描述】:

我从 Lambda 调用 AWS Transcribe 服务

Lambda 代码:

  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的Source code OutputBucketName被定义为StartTranscriptionJobRequest的成员 https://github.com/aws/aws-sdk-js/blob/75978fcfe4186d5a310e9b5c6d6328e90997edf0/apis/transcribe-2017-10-26.normal.json#L491

我唯一的猜测是 lambda 没有使用正确的 SDK,即使我说明了 API 版本。

感谢任何帮助,如果我有错误,请告诉我。

谢谢

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-sdk-js aws-transcribe


    【解决方案1】:

    问题是 AWS Lambda 没有使用最新的 JS SDK

    解决方法是在自己的 node_module 文件夹中包含最新的 JS SDK

    npm install aws-sdk

    那么您的 lambda 代码将使用最新版本的 SDK

    【讨论】:

      【解决方案2】:

      谢谢约翰!!此解决方案有效,如果您之前直接在 Web UI 中进行编辑,您将失去内联编辑代码的能力。

      然后,一旦你下载,解压缩并运行 John 发布的命令。

      npm install aws-sdk
      

      最后,将其压缩备份,确保您的 zip 包含 node_modules 目录以及您最初下载的 .js 文件

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-28
        • 1970-01-01
        • 2017-02-24
        • 2021-08-13
        • 2019-02-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多