Can't create Lambda code hook for Lex's TestBotAlias with CloudFormation

1

My team is building a Lex Bot backed by AWS Lambda as a fulfillment code hook. We're using CloudFormation to deploy the stack.

We're facing an issue where with each deployment introducing changes to the bot, the association between the Lambda and the TestBotAlias gets removed.

We've tried to build an AWS::Lex::BotAlias, but it doesn't work because CloudFormation tries to create a second alias with the same name. Moreover, references to the DRAFT version of the bot are not possible because AWS::Lex::BotVersion allows us only to use numerical values.

Is there a recommended way to associate the Lex bot with Lambda for tests so that it doesn't get removed every time we deploy a stack?

2 Respuestas
0

Hello!

With the way that the CloudFormation workflow is set up, there is currently no mechanism of modifying the TestBotAlias within a CFN template. In the meantime a possible solution you can use is to create a new BotVersion when you are ready to test your bot and associate an AWS::Lex::BotAlias resource with templated bot version.

If there are any other questions please feel free to reach out again!

KevinC
respondido hace 2 años
  • This is really inconvenient.. Is there a way to modify the TestBotAlias after deployment?

0

I was finally able to get this working (in AWS CDK)

While defining the lex bot:

test_bot_alias_settings = (
    lex.CfnBot.TestBotAliasSettingsProperty(
        bot_alias_locale_settings=[
            lex.CfnBot.BotAliasLocaleSettingsItemProperty(
                locale_id="en_US",
                bot_alias_locale_setting=lex.CfnBot.BotAliasLocaleSettingsProperty(
                    enabled=True,
                    code_hook_specification=lex.CfnBot.CodeHookSpecificationProperty(
                        lambda_code_hook=lex.CfnBot.LambdaCodeHookProperty(
                            code_hook_interface_version="1.0",
                            lambda_arn=self.my_lex_lambda.function_arn,
                        )
                    ),
                ),
            )
        ],
    ),
)

wcheek
respondido hace 2 años

No has iniciado sesión. Iniciar sesión para publicar una respuesta.

Una buena respuesta responde claramente a la pregunta, proporciona comentarios constructivos y fomenta el crecimiento profesional en la persona que hace la pregunta.

Pautas para responder preguntas