1use crate::template_section::TopLevelSection;
2
3pub const PSEUDO_PREFIX: &str = "AWS::";
4pub const PSEUDO_NO_VALUE: &str = "AWS::NoValue";
5pub const PSEUDO_ACCOUNT_ID: &str = "AWS::AccountId";
6pub const PSEUDO_NOTIFICATION_ARNS: &str = "AWS::NotificationARNs";
7pub const PSEUDO_PARTITION: &str = "AWS::Partition";
8pub const PSEUDO_REGION: &str = "AWS::Region";
9pub const PSEUDO_STACK_ID: &str = "AWS::StackId";
10pub const PSEUDO_STACK_NAME: &str = "AWS::StackName";
11pub const PSEUDO_URL_SUFFIX: &str = "AWS::URLSuffix";
12
13pub const PSEUDO_PARAMETERS: &[&str] = &[
14 PSEUDO_ACCOUNT_ID,
15 PSEUDO_NOTIFICATION_ARNS,
16 PSEUDO_NO_VALUE,
17 PSEUDO_PARTITION,
18 PSEUDO_REGION,
19 PSEUDO_STACK_ID,
20 PSEUDO_STACK_NAME,
21 PSEUDO_URL_SUFFIX,
22];
23
24pub const DEFAULT_ACCOUNT_ID: &str = "123456789012";
25pub const DEFAULT_STACK_NAME: &str = "teststack";
26
27pub const SECTION_PARAMETERS: &str = TopLevelSection::Parameters.name();
31pub const SECTION_MAPPINGS: &str = TopLevelSection::Mappings.name();
32pub const SECTION_CONDITIONS: &str = TopLevelSection::Conditions.name();
33pub const SECTION_RESOURCES: &str = TopLevelSection::Resources.name();
34pub const SECTION_OUTPUTS: &str = TopLevelSection::Outputs.name();
35pub const SECTION_RULES: &str = TopLevelSection::Rules.name();
36pub const SECTION_METADATA: &str = TopLevelSection::Metadata.name();
37pub const SECTION_GLOBALS: &str = "Globals";
38pub const SECTION_FORMAT_VERSION: &str = TopLevelSection::FormatVersion.name();
39pub const SECTION_DESCRIPTION: &str = TopLevelSection::Description.name();
40pub const SECTION_TRANSFORM: &str = TopLevelSection::Transform.name();
41
42pub const KEY_TYPE: &str = "Type";
43pub const KEY_CONDITION: &str = "Condition";
44pub const KEY_PROPERTIES: &str = "Properties";
45pub const KEY_DEPENDS_ON: &str = "DependsOn";
46pub const KEY_DELETION_POLICY: &str = "DeletionPolicy";
47pub const KEY_UPDATE_REPLACE_POLICY: &str = "UpdateReplacePolicy";
48pub const KEY_UPDATE_POLICY: &str = "UpdatePolicy";
49pub const KEY_CREATION_POLICY: &str = "CreationPolicy";
50
51pub const KEY_DEFAULT: &str = "Default";
52pub const KEY_ALLOWED_VALUES: &str = "AllowedValues";
53pub const KEY_ALLOWED_PATTERN: &str = "AllowedPattern";
54pub const KEY_NO_ECHO: &str = "NoEcho";
55pub const KEY_MIN_LENGTH: &str = "MinLength";
56pub const KEY_MAX_LENGTH: &str = "MaxLength";
57pub const KEY_MIN_VALUE: &str = "MinValue";
58pub const KEY_MAX_VALUE: &str = "MaxValue";
59
60pub const KEY_VALUE: &str = "Value";
61pub const KEY_EXPORT: &str = "Export";
62pub const KEY_NAME: &str = "Name";
63pub const KEY_CONSTRAINT_DESCRIPTION: &str = "ConstraintDescription";
64
65pub const KEY_DEFAULT_VALUE: &str = "DefaultValue";
67
68pub const KEY_STACK_NAME: &str = "StackName";
71pub const KEY_OUTPUT_NAME: &str = "OutputName";
72pub const KEY_REGION: &str = "Region";
73pub const KEY_ROLE_ARN: &str = "RoleArn";
74
75pub const SAM_SERVERLESS_TYPE_PREFIX: &str = "AWS::Serverless::";
76pub const SAM_FUNCTION_TYPE: &str = "AWS::Serverless::Function";
77pub const SAM_API_TYPE: &str = "AWS::Serverless::Api";
78pub const SAM_HTTP_API_TYPE: &str = "AWS::Serverless::HttpApi";
79pub const SAM_SIMPLE_TABLE_TYPE: &str = "AWS::Serverless::SimpleTable";
80pub const SAM_LAYER_VERSION_TYPE: &str = "AWS::Serverless::LayerVersion";
81pub const SAM_APPLICATION_TYPE: &str = "AWS::Serverless::Application";
82pub const SAM_STATE_MACHINE_TYPE: &str = "AWS::Serverless::StateMachine";
83pub const SAM_CONNECTOR_TYPE: &str = "AWS::Serverless::Connector";
84pub const SAM_GRAPHQL_API_TYPE: &str = "AWS::Serverless::GraphQLApi";
85
86pub const DYNAMODB_TABLE_TYPE: &str = "AWS::DynamoDB::Table";
87pub const CLOUDFORMATION_STACK_TYPE: &str = "AWS::CloudFormation::Stack";
88
89pub fn effective_deployed_resource_type(resource_type: &str) -> &str {
92 match resource_type {
93 SAM_SIMPLE_TABLE_TYPE => DYNAMODB_TABLE_TYPE,
94 SAM_APPLICATION_TYPE => CLOUDFORMATION_STACK_TYPE,
95 _ => resource_type,
96 }
97}
98pub const SAM_EVENT_TYPE_API: &str = "Api";
99pub const SAM_EVENT_TYPE_HTTP_API: &str = "HttpApi";
100pub const SAM_EVENT_TYPE_SCHEDULE: &str = "Schedule";
101pub const SAM_IMPLICIT_REST_API: &str = "ServerlessRestApi";
102pub const SAM_IMPLICIT_HTTP_API: &str = "ServerlessHttpApi";
103pub const SAM_IMPLICIT_REST_API_STAGE: &str = "ServerlessRestApiProdStage";
106pub const SAM_AUTO_PUBLISH_ALIAS: &str = "AutoPublishAlias";
107pub const SAM_LAYER_CONTENT_URI: &str = "ContentUri";
108pub const SAM_APPLICATION_LOCATION: &str = "Location";
109pub const SAM_FUNCTION_EVENTS: &str = "Events";
110pub const SAM_FUNCTION_ROLE: &str = "Role";
111pub const SAM_SCHEDULE_PROPERTY: &str = "Schedule";
112pub const SAM_API_STAGE_NAME: &str = "StageName";
113pub const SAM_DEFINITION: &str = "Definition";
114pub const SAM_DEFINITION_URI: &str = "DefinitionUri";
115pub const SAM_CONNECTOR_SOURCE: &str = "Source";
116pub const SAM_CONNECTOR_DESTINATION: &str = "Destination";
117pub const SAM_CONNECTOR_PERMISSIONS: &str = "Permissions";
118pub const SAM_GRAPHQL_AUTH: &str = "Auth";
119pub const SAM_SIMPLE_TABLE_PRIMARY_KEY: &str = "PrimaryKey";
120pub const SAM_PRIMARY_KEY_TYPE: &str = "Type";
121pub const SAM_PRIMARY_KEY_TYPES: &[&str] = &["String", "Number", "Binary"];
123
124pub const SAM_FUNCTION_PACKAGE_TYPE: &str = "PackageType";
126pub const SAM_FUNCTION_RUNTIME: &str = "Runtime";
127pub const SAM_FUNCTION_HANDLER: &str = "Handler";
128pub const SAM_FUNCTION_LAYERS: &str = "Layers";
129pub const SAM_FUNCTION_DEAD_LETTER_QUEUE: &str = "DeadLetterQueue";
130pub const SAM_FUNCTION_TARGET_ARN: &str = "TargetArn";
131pub const SAM_FUNCTION_PROVISIONED_CONCURRENCY: &str = "ProvisionedConcurrencyConfig";
132pub const SAM_FUNCTION_CAPACITY_PROVIDER: &str = "CapacityProviderConfig";
133pub const SAM_FUNCTION_VPC_CONFIG: &str = "VpcConfig";
134pub const SAM_FUNCTION_SCALING_CONFIG: &str = "FunctionScalingConfig";
135pub const SAM_FUNCTION_VERSION_DELETION_POLICY: &str = "VersionDeletionPolicy";
136pub const SAM_FUNCTION_IMAGE_URI: &str = "ImageUri";
137pub const SAM_FUNCTION_IMAGE_CONFIG: &str = "ImageConfig";
138pub const SAM_FUNCTION_URL_CONFIG: &str = "FunctionUrlConfig";
139pub const SAM_FUNCTION_URL_AUTH_TYPE: &str = "AuthType";
140pub const SAM_FUNCTION_DEPLOYMENT_PREFERENCE: &str = "DeploymentPreference";
141pub const SAM_PACKAGE_TYPE_ZIP: &str = "Zip";
142pub const SAM_PACKAGE_TYPE_IMAGE: &str = "Image";
143pub const SAM_DLQ_TYPES: &[&str] = &["SQS", "SNS"];
145pub const SAM_FUNCTION_URL_AUTH_TYPES: &[&str] = &["AWS_IAM", "NONE"];
147
148pub const SAM_LAYER_RETENTION_POLICY: &str = "RetentionPolicy";
150pub const SAM_LAYER_COMPATIBLE_ARCHITECTURES: &str = "CompatibleArchitectures";
151pub const SAM_LAYER_RETENTION_POLICIES: &[&str] = &["Retain", "Delete"];
153pub const SAM_ARCHITECTURES: &[&str] = &["x86_64", "arm64"];
155
156pub const SAM_GLOBALS_TYPE_MAP: &[(&str, &str)] = &[
159 (SAM_FUNCTION_GLOBALS_KEY, SAM_FUNCTION_TYPE),
160 (SAM_API_GLOBALS_KEY, SAM_API_TYPE),
161 (SAM_HTTP_API_GLOBALS_KEY, SAM_HTTP_API_TYPE),
162 (SAM_SIMPLE_TABLE_GLOBALS_KEY, SAM_SIMPLE_TABLE_TYPE),
163];
164
165pub const SAM_FUNCTION_GLOBALS_KEY: &str = "Function";
168pub const SAM_API_GLOBALS_KEY: &str = "Api";
169pub const SAM_HTTP_API_GLOBALS_KEY: &str = "HttpApi";
170pub const SAM_SIMPLE_TABLE_GLOBALS_KEY: &str = "SimpleTable";
171
172pub const CDK_METADATA_TYPE: &str = "AWS::CDK::Metadata";
173
174pub const OUTPUT_PSEUDO_RESOURCE_PREFIX: &str = "__output__";
175pub const OUTPUTS_PSEUDO_RESOURCE: &str = "__outputs__";
176
177pub const PARAM_UNKNOWN_SENTINEL: &str = "__unknown__";
186
187pub const RULE_PSEUDO_RESOURCE_PREFIX: &str = "__rule__";
188
189pub const MAX_TEMPLATE_SIZE_BYTES: usize = 10 * 1024 * 1024;
190
191pub const MAX_SCENARIO_COMBINATIONS: usize = 262_144;
200
201pub const MAX_TOTAL_SCENARIO_COMBINATIONS: u64 = 33_554_432;
214
215pub const MAX_RESOLVE_DEPTH: u32 = 512;
216
217pub const MAX_YAML_NESTING_DEPTH: usize = 512;
229
230pub const MAX_FOREACH_EXPANSION_WORK: u64 = 100_000;
241
242pub const MAX_ENUM_EXPANSION: usize = 4_096;
248
249pub const MAX_FINGERPRINT_DEPTH: u32 = 64;
254
255pub const MAX_SCHEMA_SCENARIO_ASSIGNMENTS: usize = 256;
258
259pub const MAX_SCHEMA_SCENARIO_MERGE_ATTEMPTS: usize = 4_096;
262
263pub const MAX_SCHEMA_MATCH_DEPTH: usize = 16;
266
267pub const MAX_REQUIRED_PROPERTY_COMBINATIONS: usize = 256;
270
271pub const MAX_SAT_ITERATIONS: u64 = 1_000_000;
297
298pub const MAX_PARAM_COMBINATIONS: u64 = 1_048_576;
318
319pub const MAX_TOTAL_SAT_ITERATIONS: u64 = 100_000_000;
343
344pub const FORMAT_VERSION: &str = "2010-09-09";
345
346pub const MARKER_DYNAMIC: &str = "__dynamic";
350pub const MARKER_REF: &str = "__ref";
351
352pub const SUB_PARTIAL_PREFIX: &str = "Sub:";
359pub const JOIN_PARTIAL_PREFIX: &str = "Join:";
360pub const UNRESOLVED_REF_PLACEHOLDER_PREFIX: &str = "{ref:";
361pub const UNRESOLVED_DYNAMIC_PLACEHOLDER: &str = "{dynamic}";
362pub const MARKER_CONDITIONAL: &str = "__conditional";
363pub const MARKER_INTRINSIC: &str = "__intrinsic";
364pub const MARKER_ENUM: &str = "__enum";
365pub const MARKER_PARAM_TYPE: &str = "__param_type";
366pub const MARKER_KIND: &str = "__kind";
367pub const MARKER_IF_TRUE: &str = "__if_true";
368pub const MARKER_IF_FALSE: &str = "__if_false";
369
370pub const KEY_RULE_CONDITION: &str = "RuleCondition";
371pub const KEY_ASSERTIONS: &str = "Assertions";
372pub const KEY_ASSERT: &str = "Assert";
373pub const KEY_ASSERT_DESCRIPTION: &str = "AssertDescription";
374
375pub const FN_PREFIX: &str = "Fn::";
376
377pub const FN_REF: &str = "Ref";
378pub const FN_GET_ATT: &str = "Fn::GetAtt";
379pub const FN_SUB: &str = "Fn::Sub";
380pub const FN_JOIN: &str = "Fn::Join";
381pub const FN_SELECT: &str = "Fn::Select";
382pub const FN_IF: &str = "Fn::If";
383pub const FN_FIND_IN_MAP: &str = "Fn::FindInMap";
384pub const FN_SPLIT: &str = "Fn::Split";
385pub const FN_BASE64: &str = "Fn::Base64";
386pub const FN_CIDR: &str = "Fn::Cidr";
387pub const FN_GET_AZS: &str = "Fn::GetAZs";
388pub const FN_GET_STACK_OUTPUT: &str = "Fn::GetStackOutput";
389pub const FN_IMPORT_VALUE: &str = "Fn::ImportValue";
390pub const FN_TRANSFORM: &str = "Fn::Transform";
391pub const FN_AND: &str = "Fn::And";
392pub const FN_OR: &str = "Fn::Or";
393pub const FN_NOT: &str = "Fn::Not";
394pub const FN_EQUALS: &str = "Fn::Equals";
395pub const FN_TO_JSON_STRING: &str = "Fn::ToJsonString";
396pub const FN_LENGTH: &str = "Fn::Length";
397pub const FN_FOR_EACH: &str = "Fn::ForEach";
398pub const FN_CONDITION: &str = "Condition";
399
400pub const FN_VALUE_OF: &str = "Fn::ValueOf";
401pub const FN_VALUE_OF_ALL: &str = "Fn::ValueOfAll";
402pub const FN_REF_ALL: &str = "Fn::RefAll";
403pub const FN_CONTAINS: &str = "Fn::Contains";
404pub const FN_EACH_MEMBER_EQUALS: &str = "Fn::EachMemberEquals";
405pub const FN_EACH_MEMBER_IN: &str = "Fn::EachMemberIn";
406
407pub const FN_FOR_EACH_KEY_PREFIX: &str = "Fn::ForEach::";
408
409pub const INTRINSIC_FN_PATH_SEGMENTS: &[&str] = &[
415 FN_GET_ATT,
416 FN_SUB,
417 FN_JOIN,
418 FN_SELECT,
419 FN_IF,
420 FN_FIND_IN_MAP,
421 FN_SPLIT,
422 FN_BASE64,
423 FN_CIDR,
424 FN_GET_AZS,
425 FN_GET_STACK_OUTPUT,
426 FN_IMPORT_VALUE,
427 FN_TRANSFORM,
428 FN_AND,
429 FN_OR,
430 FN_NOT,
431 FN_EQUALS,
432 FN_TO_JSON_STRING,
433 FN_LENGTH,
434 FN_FOR_EACH,
435 FN_VALUE_OF,
436 FN_VALUE_OF_ALL,
437 FN_REF_ALL,
438 FN_CONTAINS,
439 FN_EACH_MEMBER_EQUALS,
440 FN_EACH_MEMBER_IN,
441];
442
443pub const SSM_SECURE_ALLOWED_PROPERTY_PATHS: &[&str] = &[
448 "Resources/AWS::DirectoryService::MicrosoftAD/Properties/Password",
449 "Resources/AWS::DirectoryService::SimpleAD/Properties/Password",
450 "Resources/AWS::ElastiCache::ReplicationGroup/Properties/AuthToken",
451 "Resources/AWS::IAM::User/Properties/LoginProfile/Password",
452 "Resources/AWS::KinesisFirehose::DeliveryStream/Properties/RedshiftDestinationConfiguration/Password",
453 "Resources/AWS::OpsWorks::App/Properties/AppSource/Password",
454 "Resources/AWS::OpsWorks::Stack/Properties/RdsDbInstances/*/DbPassword",
455 "Resources/AWS::OpsWorks::Stack/Properties/CustomCookbooksSource/Password",
456 "Resources/AWS::RDS::DBCluster/Properties/MasterUserPassword",
457 "Resources/AWS::RDS::DBInstance/Properties/MasterUserPassword",
458 "Resources/AWS::Redshift::Cluster/Properties/MasterUserPassword",
459];
460
461pub const YAML_MERGE_KEY: &str = "<<";
465
466pub const TAG_REF: &str = "Ref";
470pub const TAG_GET_ATT: &str = "GetAtt";
471pub const TAG_SUB: &str = "Sub";
472pub const TAG_JOIN: &str = "Join";
473pub const TAG_SELECT: &str = "Select";
474pub const TAG_IF: &str = "If";
475pub const TAG_FIND_IN_MAP: &str = "FindInMap";
476pub const TAG_SPLIT: &str = "Split";
477pub const TAG_BASE64: &str = "Base64";
478pub const TAG_CIDR: &str = "Cidr";
479pub const TAG_GET_AZS: &str = "GetAZs";
480pub const TAG_GET_STACK_OUTPUT: &str = "GetStackOutput";
481pub const TAG_IMPORT_VALUE: &str = "ImportValue";
482pub const TAG_TRANSFORM: &str = "Transform";
483pub const TAG_AND: &str = "And";
484pub const TAG_OR: &str = "Or";
485pub const TAG_NOT: &str = "Not";
486pub const TAG_EQUALS: &str = "Equals";
487pub const TAG_CONDITION: &str = "Condition";
488pub const TAG_TO_JSON_STRING: &str = "ToJsonString";
489pub const TAG_LENGTH: &str = "Length";
490pub const TAG_FOR_EACH: &str = "ForEach";
491pub const TAG_VALUE_OF: &str = "ValueOf";
492pub const TAG_VALUE_OF_ALL: &str = "ValueOfAll";
493pub const TAG_REF_ALL: &str = "RefAll";
494pub const TAG_CONTAINS: &str = "Contains";
495pub const TAG_EACH_MEMBER_EQUALS: &str = "EachMemberEquals";
496pub const TAG_EACH_MEMBER_IN: &str = "EachMemberIn";
497
498pub const TAG_IF_EXPR: &str = "IfExpr";
502
503pub const SHORT_TAG_TO_FN_KEY: &[(&str, &str)] = &[
506 (TAG_REF, FN_REF),
507 (TAG_GET_ATT, FN_GET_ATT),
508 (TAG_SUB, FN_SUB),
509 (TAG_JOIN, FN_JOIN),
510 (TAG_SELECT, FN_SELECT),
511 (TAG_IF, FN_IF),
512 (TAG_FIND_IN_MAP, FN_FIND_IN_MAP),
513 (TAG_SPLIT, FN_SPLIT),
514 (TAG_BASE64, FN_BASE64),
515 (TAG_CIDR, FN_CIDR),
516 (TAG_GET_AZS, FN_GET_AZS),
517 (TAG_GET_STACK_OUTPUT, FN_GET_STACK_OUTPUT),
518 (TAG_IMPORT_VALUE, FN_IMPORT_VALUE),
519 (TAG_TRANSFORM, FN_TRANSFORM),
520 (TAG_AND, FN_AND),
521 (TAG_OR, FN_OR),
522 (TAG_NOT, FN_NOT),
523 (TAG_EQUALS, FN_EQUALS),
524 (TAG_CONDITION, FN_CONDITION),
525 (TAG_TO_JSON_STRING, FN_TO_JSON_STRING),
526 (TAG_LENGTH, FN_LENGTH),
527 (TAG_FOR_EACH, FN_FOR_EACH),
528 (TAG_VALUE_OF, FN_VALUE_OF),
529 (TAG_VALUE_OF_ALL, FN_VALUE_OF_ALL),
530 (TAG_REF_ALL, FN_REF_ALL),
531 (TAG_CONTAINS, FN_CONTAINS),
532 (TAG_EACH_MEMBER_EQUALS, FN_EACH_MEMBER_EQUALS),
533 (TAG_EACH_MEMBER_IN, FN_EACH_MEMBER_IN),
534];
535
536pub const BOOLEAN_FN_KEYS: &[&str] =
546 &[FN_CONDITION, FN_EQUALS, FN_AND, FN_OR, FN_NOT, FN_CONTAINS, FN_EACH_MEMBER_EQUALS, FN_EACH_MEMBER_IN];
547
548pub const EQUALS_ARG_FN_KEYS: &[&str] =
558 &[FN_REF, FN_FIND_IN_MAP, FN_SUB, FN_JOIN, FN_SELECT, FN_SPLIT, FN_LENGTH, FN_TO_JSON_STRING];
559
560pub const EDGE_KIND_REF: &str = "Ref";
563pub const EDGE_KIND_GET_ATT: &str = "GetAtt";
564pub const EDGE_KIND_SUB: &str = "Sub";
565pub const EDGE_KIND_DEPENDS_ON: &str = "DependsOn";
566pub const EDGE_KIND_SELECT: &str = "Select";
567pub const EDGE_KIND_CONDITION: &str = "Condition";
568
569pub const FIELD_RESOURCES: &str = "resources";
571pub const FIELD_PARAMETERS: &str = "parameters";
572pub const FIELD_CONDITIONS: &str = "conditions";
573pub const FIELD_MAPPINGS: &str = "mappings";
574pub const FIELD_OUTPUTS: &str = "outputs";
575pub const FIELD_EDGES: &str = "edges";
576pub const FIELD_TRANSFORMS: &str = "transforms";
577pub const FIELD_RESOURCE_TYPE: &str = "resourceType";
578pub const FIELD_PROPERTIES: &str = "properties";
579pub const FIELD_DEPENDS_ON: &str = "dependsOn";
580pub const FIELD_CONDITION: &str = "condition";
581pub const FIELD_OUTGOING_REFS: &str = "outgoingRefs";
582pub const FIELD_INCOMING_REFS: &str = "incomingRefs";
583pub const FIELD_DELETION_POLICY: &str = "deletionPolicy";
584pub const FIELD_UPDATE_REPLACE_POLICY: &str = "updateReplacePolicy";
585pub const FIELD_CREATION_POLICY: &str = "creationPolicy";
586pub const FIELD_UPDATE_POLICY: &str = "updatePolicy";
587pub const FIELD_KIND: &str = "kind";
588pub const FIELD_TARGET: &str = "target";
589pub const FIELD_SOURCE: &str = "source";
590pub const FIELD_SOURCE_PATH: &str = "sourcePath";
591pub const FIELD_ATTR: &str = "attr";
592pub const FIELD_CONDITION_CONTEXT: &str = "conditionContext";
593
594pub const TRANSFORM_LANGUAGE_EXTENSIONS: &str = "AWS::LanguageExtensions";
596pub const TRANSFORM_SERVERLESS: &str = "AWS::Serverless-2016-10-31";
597pub const TRANSFORM_INCLUDE: &str = "AWS::Include";
598
599pub const POLICY_DELETE: &str = "Delete";
601pub const POLICY_RETAIN: &str = "Retain";
602pub const POLICY_SNAPSHOT: &str = "Snapshot";
603pub const POLICY_RETAIN_EXCEPT_ON_CREATE: &str = "RetainExceptOnCreate";
604
605pub const CONDITION_REF_PREFIX: &str = "Condition:";
607
608pub const PARAM_TYPE_STRING: &str = "String";
609pub const PARAM_TYPE_NUMBER: &str = "Number";
610pub const PARAM_TYPE_COMMA_DELIMITED_LIST: &str = "CommaDelimitedList";
611
612pub const SAM_TRANSFORM_ERROR_RULE_ID: &str = "E0001";
617
618pub const SAM_TRANSFORM_ERROR_PREFIX: &str = "Error transforming template:";
621
622pub fn is_sam_transform_error_message(message: &str) -> bool {
624 message.starts_with(SAM_TRANSFORM_ERROR_PREFIX)
625}