'Terraform For Using AWS Lambda With Amazon Lex

I have been having some trouble trying to get the fulfillment_activity codehook to work so that I can use Lambda Functions for the backend. For some reason, I am getting this error message from Terraform.

Error: error waiting for Lex Bot (helloBot) create: unexpected state 'FAILED', wanted target 'NOT_BUILT, READY, READY_BASIC_TESTING'. last error: Intent 'sample_intent' has an invalid message version defined for its fulfillment.

Here is my Terraform config:

# AWS Lex Bot
resource "aws_lex_bot" "helloBot" {
  depends_on = [ aws_lex_intent.sample_intent ]
  locale                      = "en-US"
  name                        = "helloBot"
  process_behavior            = "BUILD"
  voice_id                    = "Salli"
  create_version              = true
  idle_session_ttl_in_seconds = 300
  child_directed              = false

  abort_statement {
    message {
      content      = "Abort Abort!"
      content_type = "PlainText"
    }
  }

  clarification_prompt {
    max_attempts = 2

    message {
      content      = "No Idea What You're Saying!"
      content_type = "PlainText"
    }
  }

  intent {
    intent_name    = "sampleIntentName"
    intent_version = aws_lex_intent.sample_intent.version
  }
}

resource "aws_lambda_permission" "lex_sample_intent_lambda" {
  statement_id  = "AllowExecutionFromAmazonLex"
  action        = "lambda:InvokeFunction"
  function_name = "someLambdaFunctionName"
  principal     = "lex.amazonaws.com"

  # https://docs.aws.amazon.com/lex/latest/dg/gs-cli-update-lambda.html
  source_arn = "arn:aws:lex:myRegion:accountId:intent:sampleIntentName:*"
}

# AWS Lex Intents
data "aws_lambda_function" "existing" {
  function_name = "someLambdaFunctionName"
  qualifier     = "dev"
}

resource "aws_lex_intent" "sample_intent" {
  create_version = true
  name           = "sampleIntentName"

  fulfillment_activity {
    type = "CodeHook"
    code_hook {
      message_version = "1.0"
      uri             = data.aws_lambda_function.existing.qualified_arn
    }
  }

  sample_utterances = [
    "hi",
    "hello"
  ]
}

I looked at the cli documentation and it appears that we are supposed to use "1.0" for the message version.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source