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 回答
0

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

感谢您关注Lex Cloud Formation功能。

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

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

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

profile picture
专家
已回答 1 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则