Sal*_*mim 5 amazon-web-services node.js aws-sdk aws-lambda amazon-lex
我一直在尝试LATEST用新创建的机器人版本替换现有的 LexBot 别名(命名)。
现在,根据 aws 文档
当您要更新机器人别名时,请将校验和字段设置为 $LATEST 版本的最新修订版的校验和。
我可以看到 Alias在 Lex 控制台中LATEST使用机器人版本12。
我尝试使用以下方法获取校验和(我正在使用getBot(...)LexModelBuildingService 来获取机器人的校验和):
LATEST。getBot方法参数中的versionOrAlias 设置为“$LATEST”。12in getBot(..)。我使用了上述场景中的校验和,但错误似乎与
PreconditionFailedException: The checksum value doesn't match for the resource named 'LATEST'.
Run Code Online (Sandbox Code Playgroud)
这是代码片段
async putBotAlias(botVersionResponse){
let checksum;
await this.getBot(botVersionResponse.name,'12').then(botRes=>{ // have used 12, LATEST, $LATEST with same error
console.log("Checksum For Latest: " + botRes.checksum);
checksum = botRes.checksum;
});
var params = {
botName: botVersionResponse.name,
botVersion: (parseInt(botVersionResponse.version,10)).toString(),
name: 'LATEST',
checksum : checksum
};
// checksum: checksum
console.log("Params in putBotAlias : " + JSON.stringify(params));
return new Promise((resolve,reject)=>{
this.modelBuildingService.putBotAlias(params, function(err, data) {
if (err){
reject(err);
} // an error occurred
else{
console.log("Put Alias Response :::" + JSON.stringify(data));
resolve(data);
} // successful response
});
});
}
Run Code Online (Sandbox Code Playgroud)
我真的不知道它到底想要什么版本。
任何帮助是极大的赞赏。
PS:请在评论中提及任何其他必需的信息。
显然,我输入的是“Bot”的校验和,而不是我试图输入的“BotAlias”的校验和。
更新后的代码获取机器人 Alias 的校验和:
async putBotAlias(botVersionResponse,aliasName){
let checksum;
if(typeof aliasName != "undefined"){
await this.getBotAlias(botVersionResponse.name,aliasName).then(res=>{
console.log("Checksum For Latest ALIAS : " + res.checksum);
checksum = res.checksum;
}).catch((err)=>{
console.log(" Unable to getBotAlias checksum " + err);
});
}
Run Code Online (Sandbox Code Playgroud)
愚蠢的错误,但希望它对犯此错误的人有所帮助。:)
| 归档时间: |
|
| 查看次数: |
244 次 |
| 最近记录: |