LexModelBuldingService putBot создает исключение BadRequestException, хотя я предоставляю последнюю контрольную сумму - PullRequest
0 голосов
/ 13 апреля 2020

Я занимаюсь CI / CD-ботом Lex для своей организации. Я прошел через большую часть этого, используя документацию, но я ударил стену. Я знаю, что если бота не существует, вы не можете предоставить контрольную сумму операции putBot. Я также знаю, что если она существует, вы должны предоставить контрольную сумму, и она должна соответствовать контрольной сумме версии $ LATEST.

Я получаю бота после того, как он был создан впервые, и я помещаю контрольную сумму из ответа в параметрах в putBot. Тем не менее, я получаю badRequestException, утверждая, что мой ресурс уже существует:

  params: {name:"xxx",
           ....
          intents: [...],
           ....
          checksum:"xxxxxxxxxxx-xxxxx-xxxxxx"
         }

 exception: "ERROR   There was an error:  BadRequestException: The specified resource 
 'xxx' already exists. Use the TagResource or UntagResource operations to update 
 tags."

Я использую контрольную сумму, которая возвращается после выполнения вызова getBot ... так что это последний. Может ли кто-нибудь помочь мне выяснить, является ли это ошибкой или я что-то упускаю?

Обновление: я еще больше запутался сегодня, потому что документация не учитывает такого рода исключения, учитывая сценарий. Вот что говорится о возможных исключениях, связанных с контрольной суммой для putBot:

"When you create a new bot, leave the checksum field blank. If you specify a 
checksum you get a BadRequestException exception.

When you want to update a bot, set the checksum field to the checksum of the 
most recent revision of the $LATEST version. If you don't specify the 
checksum field, or if the checksum does not match the $LATEST version, you 
get a PreconditionFailedException exception."

Обновление: тот же шаблон, с которым у меня возникла проблема, отлично подходит для обновления слотов и намерений, но не для бота. Пока я просто удаляю бота, если он существует, а затем воссоздаю, но я бы хотел избежать этого, если кто-то знает способ. Может быть, это просто ошибка в SDK?

...