You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Amazon Lex V2 Custom Resource with property "CR.botLocales" breaks cfn_nag command and throws error due to not being apart of instance variable names.
Expected Behavior
cfn_nag command runs successfully on the AWS SAM template.
Current Behavior
When running
cfn_nag test.yaml
I receive the following error:
Traceback (most recent call last):
16: from /usr/local/bin/cfn_nag:23:in `<main>'
15: from /usr/local/bin/cfn_nag:23:in `load'
14: from /Library/Ruby/Gems/2.6.0/gems/cfn-nag-0.8.10/bin/cfn_nag:11:in `<top (required)>'
13: from /Library/Ruby/Gems/2.6.0/gems/cfn-nag-0.8.10/lib/cfn-nag/cfn_nag_executor.rb:30:in `scan'
12: from /Library/Ruby/Gems/2.6.0/gems/cfn-nag-0.8.10/lib/cfn-nag/cfn_nag_executor.rb:39:in `execute_file_or_piped_scan'
11: from /Library/Ruby/Gems/2.6.0/gems/cfn-nag-0.8.10/lib/cfn-nag/cfn_nag_executor.rb:60:in `scan_file'
10: from /Library/Ruby/Gems/2.6.0/gems/cfn-nag-0.8.10/lib/cfn-nag/cfn_nag.rb:87:in `audit'
9: from /Library/Ruby/Gems/2.6.0/gems/cfn-model-0.6.6/lib/cfn-model/parser/cfn_parser.rb:43:in `parse'
8: from /Library/Ruby/Gems/2.6.0/gems/cfn-model-0.6.6/lib/cfn-model/parser/cfn_parser.rb:86:in `parse_without_parameters'
7: from /Library/Ruby/Gems/2.6.0/gems/cfn-model-0.6.6/lib/cfn-model/parser/cfn_parser.rb:165:in `transform_hash_into_model_elements_with_numbers'
6: from /Library/Ruby/Gems/2.6.0/gems/cfn-model-0.6.6/lib/cfn-model/parser/cfn_parser.rb:165:in `each'
5: from /Library/Ruby/Gems/2.6.0/gems/cfn-model-0.6.6/lib/cfn-model/parser/cfn_parser.rb:173:in `block in transform_hash_into_model_elements_with_numbers'
4: from /Library/Ruby/Gems/2.6.0/gems/cfn-model-0.6.6/lib/cfn-model/parser/cfn_parser.rb:255:in `assign_fields_based_upon_properties'
3: from /Library/Ruby/Gems/2.6.0/gems/cfn-model-0.6.6/lib/cfn-model/parser/cfn_parser.rb:255:in `each'
2: from /Library/Ruby/Gems/2.6.0/gems/cfn-model-0.6.6/lib/cfn-model/parser/cfn_parser.rb:257:in `block in assign_fields_based_upon_properties'
1: from /Library/Ruby/Gems/2.6.0/gems/cfn-model-0.6.6/lib/cfn-model/model/model_element.rb:101:in `method_missing'
/Library/Ruby/Gems/2.6.0/gems/cfn-model-0.6.6/lib/cfn-model/model/model_element.rb:101:in `instance_variable_get': `@cR.botLocales=' is not allowed as an instance variable name (NameError)
Reproduction Steps
Generate the following test.yaml file from lex-v2-cfn-cr:
Parameters:
# add a parameter to your bot template to reference the Custom Resource stack
LexV2CfnCrStackName:
Description: >-
Existing Lex V2 Custom Resource Stack Name. This is used to import the
Lambda function and IAM role provisioned by the Custom Resource stack
Type: String
# If you deployed via the SAR Console and used the defaults, your stack
# will be named serverlessrepo-lex-v2-cfn-cr. If you deployed manually,
# make it match the name of your Custom Resource stack
Default: serverlessrepo-lex-v2-cfn-cr
Resources:
# LexBot resource contains the bot definition and subresources including:
# locales, slot types, intents and slots. These subresources use custom
# attributes with a name prefix: CR.<subresource name>
# The changes are done to the DRAFT version of the bot.
# All locales are automatically built
LexBot:
Type: Custom::LexBot
Properties:
ServiceToken:
# Points to the Custom Resource Lambda function
!ImportValue
Fn::Sub: "${LexV2CfnCrStackName}-LexV2CfnCrFunctionArn"
# Bot level attributes
# https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lexv2-models.html#LexModelsV2.Client.create_bot
botName:
ZipCodeUpdateBot
dataPrivacy:
childDirected: True
description: Test bot deployed using CloudFormation Custom Resource
idleSessionTTLInSeconds: 300
roleArn:
# Points to the Custom Resource IAM Service Linked role
!ImportValue
Fn::Sub: "${LexV2CfnCrStackName}-LexServiceLinkedRole"
# List of Bot Locale definitions. Requires one or more locales
CR.botLocales:
# Locale level attributes
# https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lexv2-models.html#LexModelsV2.Client.create_bot_locale
- localeId: en_US
nluIntentConfidenceThreshold: 0.40
voiceSettings:
voiceId: Salli
# List of optional Slot Type definitions
CR.slotTypes:
# Slot Type level attributes
# https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lexv2-models.html#LexModelsV2.Client.create_slot_type
- slotTypeName: ZipCodeType
parentSlotTypeSignature: AMAZON.AlphaNumeric
valueSelectionSetting:
resolutionStrategy: OriginalValue
regexFilter:
pattern: '[0-9]{8}'
# List of Intent definitions. Requires one or more Intents
CR.intents:
# Intent level attributes
# https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lexv2-models.html#LexModelsV2.Client.create_intent
- intentName: UpdateZipCode
sampleUtterances:
- utterance: i want to change my zip code
- utterance: i have a new zip code
- utterance: my new zip code is {ZipCode}
# List of optional Slot definitions. Defined in order of slot priority
CR.slots:
# Slot level attributes
# https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lexv2-models.html#LexModelsV2.Client.create_slot
- slotName: ZipCode
# Slot Type Name is used to dyanmically resolve the ID of the
# associated Slot Type defined above
CR.slotTypeName: ZipCodeType
valueElicitationSetting:
slotConstraint: Required
promptSpecification:
messageGroups:
- message:
plainTextMessage:
value: What is your zipcode?
maxRetries: 2
allowInterrupt: true
# The Fallback intent is automatically created by the Lex service
# This will update the default fallback intent
- intentName: FallbackIntent
description: Default fallback intent when no other intent matches
intentClosingSetting:
closingResponse:
messageGroups:
- message:
plainTextMessage:
value: Sorry I am having trouble understanding.
# Creates an immutable Bot Version
LexBotVersion:
# Bot versions are deleted by the Bot on Stack deletions. This deletion
# policy speeds up deletes
DeletionPolicy: Retain
# Version number changes between updates which cause a CloudFormation
# delete event since the version number is the physical resource ID.
# The following policies prevents deletion events to retain the bot versions
# and speed up updates
UpdateReplacePolicy: Retain
Type: Custom::LexBotVersion
Properties:
ServiceToken:
!ImportValue
Fn::Sub: "${LexV2CfnCrStackName}-LexV2CfnCrFunctionArn"
# Bot Version level attributes
# https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lexv2-models.html#LexModelsV2.Client.create_bot_version
botId: !Ref LexBot
# botVersionLocaleSpecification is derived from the bot locales
# this controls which locales are added to the version
CR.botLocaleIds: !GetAtt LexBot.botLocaleIds
# lastUpdatedDateTime is used to detect changes in the bot
CR.lastUpdatedDateTime: !GetAtt LexBot.lastUpdatedDateTime
# Provisions a Bot Alias that points to a version
LexBotAlias:
# Bot aliases are deleted by the Bot on Stack deletions. This deletion
# policy speeds up deletes
DeletionPolicy: Retain
Type: Custom::LexBotAlias
Properties:
ServiceToken:
!ImportValue
Fn::Sub: "${LexV2CfnCrStackName}-LexV2CfnCrFunctionArn"
# https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lexv2-models.html#LexModelsV2.Client.create_bot_alias
botId: !Ref LexBot
botAliasName: live
# points to the latest version of the resource above
botVersion: !Ref LexBotVersion
# enable locales under this alias
botAliasLocaleSettings:
en_US:
enabled: True
Outputs:
LexBotId:
Description: Lex Bot ID
Value: !Ref LexBot
LexBotLocaleIds:
Description: Lex Bot Locale IDs
Value: !Join [",", !GetAtt LexBot.botLocaleIds]
LexBotLatestVersion:
Description: Latest Lex Bot Version ID
Value: !Ref LexBotVersion
LexBotAliasId:
Description: Lex Bot Alias ID
Value: !Ref LexBotAlias
Run the command:
cfn_nag test.yaml
Possible Solution
N/A
Additional Information / Context
Ruby Version
3.0.3
OS
macOS Big Sur 11.6.5
The text was updated successfully, but these errors were encountered:
Describe the Bug
cfn_nag Version: 0.8.10 (build 97717cb)
Amazon Lex V2 Custom Resource with property "CR.botLocales" breaks
cfn_nag
command and throws error due to not being apart of instance variable names.Expected Behavior
cfn_nag command runs successfully on the AWS SAM template.
Current Behavior
When running
I receive the following error:
Reproduction Steps
Generate the following
test.yaml
file from lex-v2-cfn-cr:Run the command:
Possible Solution
N/A
Additional Information / Context
Ruby Version
3.0.3
OS
macOS Big Sur 11.6.5
The text was updated successfully, but these errors were encountered: