AWS::Lex::BotVersion 只会创建版本号为1的版本。

0

【以下的问题经过翻译处理】 我的团队正在开发一个基于Lex机器人,并且正在使用CloudFormation + CodePipeline部署我们的堆栈。

我们注意到创建AWS::Lex::BotVersion会成功创建第一个机器人版本。但是,对机器人进行后续更改不会触发新版本更新。我们每次都会使用第一个版本的机器人。以下是我们使用的版本定义和相关别名:

ReschedulingBotVersion:
    Type: AWS::Lex::BotVersion
    Properties:
      BotId: !Ref ReschedulingBot
      BotVersionLocaleSpecification:
        - LocaleId: en_US
          BotVersionLocaleDetails:
            SourceBotVersion: DRAFT

  ReschedulingBotAlias:
    Type: AWS::Lex::BotAlias
    Properties:
      BotId: !Ref ReschedulingBot
      BotAliasName: Live
      BotVersion: !GetAtt ReschedulingBotVersion.BotVersion

到目前为止,我们通过一个Lambda函数解决了这个问题,该函数在pipeline运行的最后一步调用update_bot_alias AWS API。正确地将别名与最新的机器人版本关联起来。

除了这种方式之外,我们如何升级机器人版本,以便最终可以避免的Lambda呢?

1 Antwort
0

【以下的回答经过翻译处理】 你好!

感谢您关注Lex Cloud Formation功能。

AWS :: Lex :: BotVersion资源是作为不可变资源进行处理。如果您想对将来保存的工作版本进行编码,则可以使用它作为一种解决方案。例如,一个生产版本(带有相应的别名)和一个预生产版本。因此,如果需要测试或开发同时想要在每次迭代中发布新版本,则这种方式不是很适用。

但是,当您想要更新BotVersion时,可以使用另外一种机制来完成每个CFN迭代创建新版本的任务。可以修改AWS :: Lex :: BotVersion资源的CloudFormation主标识符。对于您的示例,将PrimaryID ReschedulingBotVersion更改为ReschedulingBotVersionTwo。这将有效地删除相应的BotVersion#1并创建一个新的BotVersion#2。如果要保留现有的机器人版本,则需要创建单独的BotVersion资源以避免被删除。

如果您有任何问题,请随时再次发表评论,我们将尽力解决任何问题。

profile picture
EXPERTE
beantwortet vor 8 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen