AWS Transcribe javascript API UnexpectedParameter:在参数中发现意外键 'OutputBucketName'
AWS Transcribe javascript API UnexpectedParameter: Unexpected key 'OutputBucketName' found in params
我正在从 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 的源代码 OutputBucketName
被定义为 StartTranscriptionJobRequest
的成员
https://github.com/aws/aws-sdk-js/blob/75978fcfe4186d5a310e9b5c6d6328e90997edf0/apis/transcribe-2017-10-26.normal.json#L491
我唯一的猜测是 lambda 没有使用正确的 SDK,即使我声明了 API 版本。
感谢任何帮助,如果我这边有错误,请告诉我。
谢谢
问题是 AWS Lambda 没有使用最新的 JS SDK
解决方案是将最新的 JS SDK 包含在您自己的 node_module 文件夹中
npm install aws-sdk
那么你的lambda代码将使用最新版本的SDK
谢谢约翰!!此解决方案有效,如果您之前直接在 Web 中编辑 UI,您将失去内联编辑代码的能力。
然后在您下载后,解压缩并运行 John 发布的命令。
npm install aws-sdk
最后,将其压缩备份,确保您的压缩包包含 node_modules 目录以及您最初下载的 .js 文件
我正在从 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 的源代码 OutputBucketName
被定义为 StartTranscriptionJobRequest
的成员
https://github.com/aws/aws-sdk-js/blob/75978fcfe4186d5a310e9b5c6d6328e90997edf0/apis/transcribe-2017-10-26.normal.json#L491
我唯一的猜测是 lambda 没有使用正确的 SDK,即使我声明了 API 版本。
感谢任何帮助,如果我这边有错误,请告诉我。
谢谢
问题是 AWS Lambda 没有使用最新的 JS SDK
解决方案是将最新的 JS SDK 包含在您自己的 node_module 文件夹中
npm install aws-sdk
那么你的lambda代码将使用最新版本的SDK
谢谢约翰!!此解决方案有效,如果您之前直接在 Web 中编辑 UI,您将失去内联编辑代码的能力。
然后在您下载后,解压缩并运行 John 发布的命令。
npm install aws-sdk
最后,将其压缩备份,确保您的压缩包包含 node_modules 目录以及您最初下载的 .js 文件