putBotAlias 在 AWS LexModelBuildingService node.js 中不起作用

Sal*_*mim 5 amazon-web-services node.js aws-sdk aws-lambda amazon-lex

我一直在尝试LATEST用新创建的机器人版本替换现有的 LexBot 别名(命名)。

现在,根据 aws 文档

当您要更新机器人别名时,请将校验和字段设置为 $LATEST 版本的最新修订版的校验和。

我可以看到 Alias在 Lex 控制台中LATEST使用机器人版本12

我尝试使用以下方法获取校验和(我正在使用getBot(...)LexModelBuildingService 来获取机器人的校验和):

  • 使用别名名称本身作为版本 ie 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:请在评论中提及任何其他必需的信息。

Sal*_*mim 2

显然,我输入的是“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)

愚蠢的错误,但希望它对犯此错误的人有所帮助。:)