AWS PSM validation: Compute
Lambda rules check the parts of a function that AWS cannot safely infer: execution role, code location, runtime/handler pairing, package form, resource limits, environment-secret handling, event-source bounds, destinations, logging, and production safeguards.
Source profile: mde/validation/psm/rules/compute.evl.
Reading these rules
Each entry preserves the actual EVL guard and check. Treat the guard as the applicability boundary. When it evaluates to false, EVL skips the rule. The diagnostic is the message emitted at runtime, and its final sentence usually gives the repository's recommended repair.
LambdaHasExecutionRole
Context: AWSPSM!AwsLambdaFunction
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:9
Why this rule exists
Lambda's execution role is both a deployment requirement and the boundary for what the function may do. A missing role means the function cannot run and its permission design cannot be reviewed.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.role.isDefined()
This rule reads: role, resourceLabel.
Diagnostic and repair
Lambda has no execution role. Fix: attach an IamRole that Lambda can assume.
How to fix it:
attach an IamRole that Lambda can assume.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
LambdaHasLogGroup
Context: AWSPSM!AwsLambdaFunction
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:15
Why this rule exists
The rule checks whether lambda has log group. The aws lambda function element provides the relevant evidence through log group, resource label. At this level, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: Lambda has no logGroup.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.logGroup.isDefined()
This rule reads: logGroup, resourceLabel.
Diagnostic and repair
Lambda has no logGroup. Fix: attach the CloudWatchLogGroup used for function logs.
How to fix it:
attach the CloudWatchLogGroup used for function logs.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
LambdaHasCodeConfig
Context: AWSPSM!AwsLambdaFunction
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:21
Why this rule exists
A Lambda resource without code configuration has no executable artifact. Requiring one code source keeps deployment generation from producing an infrastructure object that can never be invoked successfully.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.code.isDefined()
This rule reads: code, resourceLabel.
Diagnostic and repair
Lambda has no code configuration. Fix: attach LambdaZipCodeConfig or LambdaImageCodeConfig.
How to fix it:
attach LambdaZipCodeConfig or LambdaImageCodeConfig.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
LambdaHasSupportedCodeConfig
Context: AWSPSM!AwsLambdaFunction
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:27
Why this rule exists
The PSM supports specific code-source forms, and each form has different required properties. This rule rejects a structurally shaped but semantically unsupported combination before CloudFormation does.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.code.isKindOf(AWSPSM!LambdaZipCodeConfig) or self.code.isKindOf(AWSPSM!LambdaImageCodeConfig)
This rule reads: code, resourceLabel.
Diagnostic and repair
Lambda uses an unsupported code configuration. Fix: use LambdaZipCodeConfig for ZIP functions or LambdaImageCodeConfig for container-image functions.
How to fix it:
use LambdaZipCodeConfig for ZIP functions or LambdaImageCodeConfig for container-image functions.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
LambdaPackageTypeMatchesCodeConfig
Context: AWSPSM!AwsLambdaFunction
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:33
Why this rule exists
Zip and container-image Lambdas are packaged and deployed differently. The package type must agree with the code object so the generated resource does not ask AWS to interpret one artifact as another.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.packageType.isUndefined() or self.code.isUndefined() or (self.code.isKindOf(AWSPSM!LambdaZipCodeConfig) and self.packageType = AWSPSMENUMS!PackageType#ZIP) or (self.code.isKindOf(AWSPSM!LambdaImageCodeConfig) and self.packageType = AWSPSMENUMS!PackageType#IMAGE)
This rule reads: packageType, code, resourceLabel.
Diagnostic and repair
Lambda packageType does not match its code configuration. Fix: use ZIP for LambdaZipCodeConfig and IMAGE for LambdaImageCodeConfig, or omit packageType when it is derived by generators.
How to fix it:
use ZIP for LambdaZipCodeConfig and IMAGE for LambdaImageCodeConfig, or omit packageType when it is derived by generators.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
LambdaMemoryRange
Context: AWSPSM!AwsLambdaFunction
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:41
Why this rule exists
The rule checks whether lambda memory range. The aws lambda function element provides the relevant evidence through memory size mb, resource label. At this level, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: Lambda memorySizeMb is outside the valid range 128..10240.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : (self.memorySizeMb.isUndefined()) or ((self.memorySizeMb >= 128) and (self.memorySizeMb <= 10240))
This rule reads: memorySizeMb, resourceLabel.
Diagnostic and repair
Lambda memorySizeMb is outside the valid range 128..10240. Fix: set memorySizeMb to a valid Lambda memory value in MB.
How to fix it:
set memorySizeMb to a valid Lambda memory value in MB.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
LambdaTimeoutRange
Context: AWSPSM!AwsLambdaFunction
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:47
Why this rule exists
The rule checks whether lambda timeout range. The aws lambda function element provides the relevant evidence through timeout seconds, resource label. At this level, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: Lambda timeoutSeconds is outside the valid range 1..900.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : (self.timeoutSeconds.isUndefined()) or ((self.timeoutSeconds >= 1) and (self.timeoutSeconds <= 900))
This rule reads: timeoutSeconds, resourceLabel.
Diagnostic and repair
Lambda timeoutSeconds is outside the valid range 1..900. Fix: choose a timeout from 1 second to 15 minutes.
How to fix it:
choose a timeout from 1 second to 15 minutes.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
LambdaEphemeralStorageRange
Context: AWSPSM!AwsLambdaFunction
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:53
Why this rule exists
The rule checks whether lambda ephemeral storage range. The aws lambda function element provides the relevant evidence through ephemeral storage mb, resource label. At this level, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: Lambda ephemeralStorageMb is outside the valid range 512..10240.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : (self.ephemeralStorageMb.isUndefined()) or ((self.ephemeralStorageMb >= 512) and (self.ephemeralStorageMb <= 10240))
This rule reads: ephemeralStorageMb, resourceLabel.
Diagnostic and repair
Lambda ephemeralStorageMb is outside the valid range 512..10240. Fix: set /tmp storage to a valid MB value.
How to fix it:
set /tmp storage to a valid MB value.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
ReservedConcurrencyNonNegative
Context: AWSPSM!AwsLambdaFunction
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:59
Why this rule exists
The rule checks whether reserved concurrency non negative. The aws lambda function element provides the relevant evidence through reserved concurrent executions, resource label. At this level, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: Lambda has a negative reservedConcurrentExecutions value.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : (self.reservedConcurrentExecutions.isUndefined()) or (self.reservedConcurrentExecutions >= 0)
This rule reads: reservedConcurrentExecutions, resourceLabel.
Diagnostic and repair
Lambda has a negative reservedConcurrentExecutions value. Fix: remove the value or set it to zero or greater.
How to fix it:
remove the value or set it to zero or greater.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
AutoPublishAliasRequiresVersionPublishing
Context: AWSPSM!AwsLambdaFunction
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:65
Why this rule exists
The rule checks whether auto publish alias requires version publishing. The aws lambda function element provides the relevant evidence through auto publish alias, publish version, resource label. At this level, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: Lambda has autoPublishAlias but publishVersion is not true.
When it applies
The rule is considered only when the guard below is true. A false guard is intentional: it means this invariant is not relevant to the current variant or modeling situation.
guard : self.autoPublishAlias.hasText()
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.publishVersion = true
This rule reads: autoPublishAlias, publishVersion, resourceLabel.
Diagnostic and repair
Lambda has autoPublishAlias but publishVersion is not true. Fix: set publishVersion to true so aliases can point to immutable versions.
How to fix it:
set publishVersion to true so aliases can point to immutable versions.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
CodeSigningDecisionHonored
Context: AWSPSM!AwsLambdaFunction
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:72
Why this rule exists
The rule checks whether code signing decision honored. The aws lambda function element provides the relevant evidence through code signing decision, code signing config, resource label. At this level, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: Lambda requires code signing but has no codeSigningConfig.
When it applies
The rule is considered only when the guard below is true. A false guard is intentional: it means this invariant is not relevant to the current variant or modeling situation.
guard : self.codeSigningDecision = AWSPSMENUMS!Decision#REQUIRED
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.codeSigningConfig.isDefined()
This rule reads: codeSigningDecision, codeSigningConfig, resourceLabel.
Diagnostic and repair
Lambda requires code signing but has no codeSigningConfig. Fix: attach a CodeSigningConfig or change codeSigningDecision if code signing is not required.
How to fix it:
attach a CodeSigningConfig or change codeSigningDecision if code signing is not required.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
ProductionLambdaShouldUseTracing
Context: AWSPSM!AwsLambdaFunction
Classification: Advisory critique (warning)
Source: mde/validation/psm/rules/compute.evl:79
Why this rule exists
The rule checks whether production lambda should use tracing. It examines is production scoped, tracing, resource label. Within this part of the model, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. The gap is Production-scoped Lambda does not enable active tracing. A later transformation, generator, or reviewer would otherwise have to infer the missing decision.
When it applies
The rule is considered only when the guard below is true. A false guard is intentional: it means this invariant is not relevant to the current variant or modeling situation.
guard : self.isProductionScoped()
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.tracing.isDefined() and self.tracing.mode = AWSPSMENUMS!LambdaTracingMode#ACTIVE
This rule reads: isProductionScoped, tracing, resourceLabel.
Diagnostic and repair
Production-scoped Lambda does not enable active tracing. Fix: add LambdaTracingConfig with mode ACTIVE unless tracing is intentionally disabled with a documented rationale.
How to fix it:
add LambdaTracingConfig with mode ACTIVE unless tracing is intentionally disabled with a documented rationale.
A critique does not necessarily make the model invalid. It is a deliberate quality/readiness signal; disposition it by improving the model, documenting why it is acceptable, or carrying the decision into the review record.
ProductionLambdaShouldUseStructuredLogging
Context: AWSPSM!AwsLambdaFunction
Classification: Advisory critique (warning)
Source: mde/validation/psm/rules/compute.evl:86
Why this rule exists
The rule checks whether production lambda should use structured logging. It examines is production scoped, logging, resource label. Within this part of the model, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. The gap is Production-scoped Lambda has no explicit logging configuration. A later transformation, generator, or reviewer would otherwise have to infer the missing decision.
When it applies
The rule is considered only when the guard below is true. A false guard is intentional: it means this invariant is not relevant to the current variant or modeling situation.
guard : self.isProductionScoped()
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.logging.isDefined() and self.logging.logFormat.hasText()
This rule reads: isProductionScoped, logging, resourceLabel.
Diagnostic and repair
Production-scoped Lambda has no explicit logging configuration. Fix: add LambdaLoggingConfig and set logFormat/applicationLogLevel/systemLogLevel to the platform standard.
How to fix it:
add LambdaLoggingConfig and set logFormat/applicationLogLevel/systemLogLevel to the platform standard.
A critique does not necessarily make the model invalid. It is a deliberate quality/readiness signal; disposition it by improving the model, documenting why it is acceptable, or carrying the decision into the review record.
ProductionLambdaShouldHaveFailureDestinationOrDlq
Context: AWSPSM!AwsLambdaFunction
Classification: Advisory critique (warning)
Source: mde/validation/psm/rules/compute.evl:93
Why this rule exists
The rule checks whether production lambda should have failure destination or dlq. It examines is production scoped, dead letter config, event invoke configs, destination config, resource label. Within this part of the model, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. The gap is Production-scoped Lambda has no DLQ or async failure destination. A later transformation, generator, or reviewer would otherwise have to infer the missing decision.
When it applies
The rule is considered only when the guard below is true. A false guard is intentional: it means this invariant is not relevant to the current variant or modeling situation.
guard : self.isProductionScoped()
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.deadLetterConfig.isDefined() or self.eventInvokeConfigs.exists(invokeItem | invokeItem.destinationConfig.isDefined() and invokeItem.destinationConfig.onFailure.isDefined())
This rule reads: isProductionScoped, deadLetterConfig, eventInvokeConfigs, destinationConfig, resourceLabel.
Diagnostic and repair
Production-scoped Lambda has no DLQ or async failure destination. Fix: add LambdaDeadLetterConfig or LambdaEventInvokeConfig.destinationConfig.onFailure.
How to fix it:
add LambdaDeadLetterConfig or LambdaEventInvokeConfig.destinationConfig.onFailure.
A critique does not necessarily make the model invalid. It is a deliberate quality/readiness signal; disposition it by improving the model, documenting why it is acceptable, or carrying the decision into the review record.
ZipCodeHasRuntimeAndHandler
Context: AWSPSM!LambdaZipCodeConfig
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:104
Why this rule exists
A zip artifact is not self-describing enough for Lambda to find its entry point. Runtime and handler together tell the platform how to load the function and where execution begins.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : (self.runtimeIdentifier.hasText() and self.handler.hasText()) or self.isGeneratorManagedCodeSkeleton()
This rule reads: runtimeIdentifier, handler, isGeneratorManagedCodeSkeleton.
Diagnostic and repair
ZIP Lambda code configuration is missing runtimeIdentifier or handler. Fix: set runtimeIdentifier and handler for externally supplied ZIP code; generator-managed skeletons may rely on the artifact generator runtime defaults.
How to fix it:
set runtimeIdentifier and handler for externally supplied ZIP code; generator-managed skeletons may rely on the artifact generator runtime defaults.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
ZipCodeHasExactlyOneLocation
Context: AWSPSM!LambdaZipCodeConfig
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:110
Why this rule exists
The rule checks whether zip code has exactly one location. The lambda zip code config element provides the relevant evidence through code uri, s3 bucket, s3 key, inline zip file. At this level, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: ZIP Lambda code configuration must define exactly one code location.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : ((self.codeUri.hasText() ? 1 else 0) + (((self.s3Bucket.hasText()) and (self.s3Key.hasText())) ? 1 else 0) + (self.inlineZipFile.hasText() ? 1 else 0)) = 1
This rule reads: codeUri, s3Bucket, s3Key, inlineZipFile.
Diagnostic and repair
ZIP Lambda code configuration must define exactly one code location. Fix: use either codeUri, or s3Bucket+s3Key, or inlineZipFile; remove the others.
How to fix it:
use either codeUri, or s3Bucket+s3Key, or inlineZipFile; remove the others.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
ImageCodeHasImageUri
Context: AWSPSM!LambdaImageCodeConfig
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:121
Why this rule exists
An image-based function can only be deployed from a concrete image location. The URI is the bridge between the modeled package choice and the registry artifact that Lambda will execute.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.imageUri.hasText()
This rule reads: imageUri.
Diagnostic and repair
Image Lambda code configuration has no imageUri. Fix: provide the ECR image URI including repository and tag or digest.
How to fix it:
provide the ECR image URI including repository and tag or digest.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
EnvironmentVariableNameValid
Context: AWSPSM!LambdaEnvironmentVariable
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:130
Why this rule exists
The rule checks whether environment variable name valid. The lambda environment variable element provides the relevant evidence through variable name. At this level, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: Lambda environment variable name is invalid.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.variableName.matches('^[A-Za-z][A-Za-z0-9_]*$')
This rule reads: variableName.
Diagnostic and repair
Lambda environment variable name is invalid. Fix: start with a letter and use only letters, digits, and underscores.
How to fix it:
start with a letter and use only letters, digits, and underscores.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
SecretEnvironmentValueUsesSecureReference
Context: AWSPSM!LambdaEnvironmentVariable
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:136
Why this rule exists
Environment variables are easy to inspect and copy, so putting a secret literal there defeats the security model. The rule requires a reference to a managed secure value instead.
When it applies
The rule is considered only when the guard below is true. A false guard is intentional: it means this invariant is not relevant to the current variant or modeling situation.
guard : self.value.isDefined() and self.value.secret = true
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.value.usesSecureSource()
This rule reads: value, variableName.
Diagnostic and repair
Lambda environment variable is marked secret but does not use a secure source. Fix: use SSM_SECURE_REFERENCE, SECRETS_MANAGER_REFERENCE, or DYNAMIC_REFERENCE.
How to fix it:
use SSM_SECURE_REFERENCE, SECRETS_MANAGER_REFERENCE, or DYNAMIC_REFERENCE.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
StageSpecificVariableShouldHaveRationale
Context: AWSPSM!LambdaEnvironmentVariable
Classification: Advisory critique (warning)
Source: mde/validation/psm/rules/compute.evl:143
Why this rule exists
The rule checks whether stage specific variable should have rationale. It examines stage specific, rationale, variable name. Within this part of the model, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. The gap is Stage-specific environment variable has no rationale. A later transformation, generator, or reviewer would otherwise have to infer the missing decision.
When it applies
The rule is considered only when the guard below is true. A false guard is intentional: it means this invariant is not relevant to the current variant or modeling situation.
guard : self.stageSpecific = true
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.rationale.hasText()
This rule reads: stageSpecific, rationale, variableName.
Diagnostic and repair
Stage-specific environment variable has no rationale. Fix: add rationale explaining why the value must vary by stage.
How to fix it:
add rationale explaining why the value must vary by stage.
A critique does not necessarily make the model invalid. It is a deliberate quality/readiness signal; disposition it by improving the model, documenting why it is acceptable, or carrying the decision into the review record.
DlqHasExactlyOneTarget
Context: AWSPSM!LambdaDeadLetterConfig
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:153
Why this rule exists
The rule checks whether dlq has exactly one target. The lambda dead letter config element provides the relevant evidence through target queue, target topic. At this level, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: Lambda DLQ configuration must choose exactly one target.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : ((self.targetQueue.isDefined() ? 1 else 0) + (self.targetTopic.isDefined() ? 1 else 0)) = 1
This rule reads: targetQueue, targetTopic.
Diagnostic and repair
Lambda DLQ configuration must choose exactly one target. Fix: set either targetQueue or targetTopic, not both.
How to fix it:
set either targetQueue or targetTopic, not both.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
BatchSizePositive
Context: AWSPSM!LambdaEventSourceMapping
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:162
Why this rule exists
The rule checks whether batch size positive. The lambda event source mapping element provides the relevant evidence through batch size, resource label. At this level, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: Lambda event source mapping has an invalid batchSize.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : (self.batchSize.isUndefined()) or (self.batchSize > 0)
This rule reads: batchSize, resourceLabel.
Diagnostic and repair
Lambda event source mapping has an invalid batchSize. Fix: remove batchSize to use the service default, or set it to a positive integer.
How to fix it:
remove batchSize to use the service default, or set it to a positive integer.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
MaximumBatchingWindowRange
Context: AWSPSM!LambdaEventSourceMapping
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:168
Why this rule exists
The rule checks whether maximum batching window range. The lambda event source mapping element provides the relevant evidence through maximum batching window seconds, resource label. At this level, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: Lambda event source mapping maximumBatchingWindowSeconds is outside 0..300.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : (self.maximumBatchingWindowSeconds.isUndefined()) or ((self.maximumBatchingWindowSeconds >= 0) and (self.maximumBatchingWindowSeconds <= 300))
This rule reads: maximumBatchingWindowSeconds, resourceLabel.
Diagnostic and repair
Lambda event source mapping maximumBatchingWindowSeconds is outside 0..300. Fix: choose a batching window within five minutes.
How to fix it:
choose a batching window within five minutes.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
ParallelizationFactorRange
Context: AWSPSM!LambdaEventSourceMapping
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:174
Why this rule exists
The rule checks whether parallelization factor range. The lambda event source mapping element provides the relevant evidence through parallelization factor, resource label. At this level, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: Lambda event source mapping parallelizationFactor is outside 1..10.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : (self.parallelizationFactor.isUndefined()) or ((self.parallelizationFactor >= 1) and (self.parallelizationFactor <= 10))
This rule reads: parallelizationFactor, resourceLabel.
Diagnostic and repair
Lambda event source mapping parallelizationFactor is outside 1..10. Fix: set a value from 1 to 10 or remove it.
How to fix it:
set a value from 1 to 10 or remove it.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
StartingTimestampRequiresAtTimestamp
Context: AWSPSM!LambdaEventSourceMapping
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:180
Why this rule exists
The rule checks whether starting timestamp requires at timestamp. The lambda event source mapping element provides the relevant evidence through starting position timestamp, starting position, resource label. At this level, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: Event source mapping has startingPositionTimestamp without AT_TIMESTAMP.
When it applies
The rule is considered only when the guard below is true. A false guard is intentional: it means this invariant is not relevant to the current variant or modeling situation.
guard : self.startingPositionTimestamp.hasText()
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.startingPosition = AWSPSMENUMS!StartingPosition#AT_TIMESTAMP
This rule reads: startingPositionTimestamp, startingPosition, resourceLabel.
Diagnostic and repair
Event source mapping has startingPositionTimestamp without AT_TIMESTAMP. Fix: set startingPosition to AT_TIMESTAMP or remove startingPositionTimestamp.
How to fix it:
set startingPosition to AT_TIMESTAMP or remove startingPositionTimestamp.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
QueueVisibilityGreaterThanFunctionTimeout
Context: AWSPSM!SqsLambdaEventSourceMapping
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:190
Why this rule exists
The rule checks whether queue visibility greater than function timeout. The sqs lambda event source mapping element provides the relevant evidence through queue, function, resource label. At this level, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: SQS queue visibility timeout must be greater than Lambda timeout for mapping.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.queue.isDefined() and self.`function`.isDefined() and ((self.queue.visibilityTimeoutSeconds.isUndefined()) or (self.`function`.timeoutSeconds.isUndefined()) or (self.queue.visibilityTimeoutSeconds > self.`function`.timeoutSeconds))
This rule reads: queue, function, resourceLabel.
Diagnostic and repair
SQS queue visibility timeout must be greater than Lambda timeout for mapping . Fix: increase queue.visibilityTimeoutSeconds or reduce function.timeoutSeconds to avoid duplicate processing.
How to fix it:
increase queue.visibilityTimeoutSeconds or reduce function.timeoutSeconds to avoid duplicate processing.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
PartialBatchFailureRecommendedForSqs
Context: AWSPSM!SqsLambdaEventSourceMapping
Classification: Advisory critique (warning)
Source: mde/validation/psm/rules/compute.evl:199
Why this rule exists
The rule checks whether partial batch failure recommended for sqs. It examines report batch item failures, resource label. Within this part of the model, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. The gap is SQS event source mapping does not report partial batch item failures. A later transformation, generator, or reviewer would otherwise have to infer the missing decision.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.reportBatchItemFailures = true
This rule reads: reportBatchItemFailures, resourceLabel.
Diagnostic and repair
SQS event source mapping does not report partial batch item failures. Fix: set reportBatchItemFailures to true and include FunctionResponseTypes=ReportBatchItemFailures in the generated mapping.
How to fix it:
set reportBatchItemFailures to true and include FunctionResponseTypes=ReportBatchItemFailures in the generated mapping.
A critique does not necessarily make the model invalid. It is a deliberate quality/readiness signal; disposition it by improving the model, documenting why it is acceptable, or carrying the decision into the review record.
RequiredPartialBatchFailureDecisionHonored
Context: AWSPSM!SqsLambdaEventSourceMapping
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:205
Why this rule exists
The rule checks whether required partial batch failure decision honored. The sqs lambda event source mapping element provides the relevant evidence through partial batch failure handling decision, report batch item failures, resource label. At this level, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: SQS event source mapping marks partial batch failure handling as REQUIRED but does not enable it.
When it applies
The rule is considered only when the guard below is true. A false guard is intentional: it means this invariant is not relevant to the current variant or modeling situation.
guard : self.partialBatchFailureHandlingDecision = AWSPSMENUMS!Decision#REQUIRED
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.reportBatchItemFailures = true
This rule reads: partialBatchFailureHandlingDecision, reportBatchItemFailures, resourceLabel.
Diagnostic and repair
SQS event source mapping marks partial batch failure handling as REQUIRED but does not enable it. Fix: set reportBatchItemFailures to true or change the decision with rationale.
How to fix it:
set reportBatchItemFailures to true or change the decision with rationale.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
DynamoStreamMappingRequiresStreamSpecification
Context: AWSPSM!DynamoDbStreamLambdaEventSourceMapping
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:215
Why this rule exists
The rule checks whether dynamo stream mapping requires stream specification. The dynamo db stream lambda event source mapping element provides the relevant evidence through table, resource label. At this level, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: DynamoDB stream event source mapping points to a table without streamSpecification.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.table.isDefined() and self.table.streamSpecification.isDefined()
This rule reads: table, resourceLabel.
Diagnostic and repair
DynamoDB stream event source mapping points to a table without streamSpecification. Fix: enable DynamoDbStreamSpecification on the table or remove the mapping.
How to fix it:
enable DynamoDbStreamSpecification on the table or remove the mapping.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
DynamoStreamMappingHasStartingPosition
Context: AWSPSM!DynamoDbStreamLambdaEventSourceMapping
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:221
Why this rule exists
The rule checks whether dynamo stream mapping has starting position. The dynamo db stream lambda event source mapping element provides the relevant evidence through e is set, e class, resource label. At this level, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: DynamoDB stream event source mapping has no startingPosition.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.eIsSet(self.eClass().getEStructuralFeature('startingPosition'))
This rule reads: eIsSet, eClass, resourceLabel.
Diagnostic and repair
DynamoDB stream event source mapping has no startingPosition. Fix: set startingPosition to LATEST, TRIM_HORIZON, or AT_TIMESTAMP.
How to fix it:
set startingPosition to LATEST, TRIM_HORIZON, or AT_TIMESTAMP.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
ProvisionedConcurrencyPositive
Context: AWSPSM!LambdaProvisionedConcurrencyConfig
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:230
Why this rule exists
The rule checks whether provisioned concurrency positive. The lambda provisioned concurrency config element provides the relevant evidence through provisioned concurrent executions. At this level, Lambda deployment settings agree with the chosen package type, runtime, permissions, limits, event source, and production posture. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: Provisioned concurrency must be greater than zero.
When it applies
No guard is defined, so the check runs for every instance of this context in the validated model.
No guard expression is present. Every instance of the context is checked.
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.provisionedConcurrentExecutions > 0
This rule reads: provisionedConcurrentExecutions.
Diagnostic and repair
Provisioned concurrency must be greater than zero. Fix: set provisionedConcurrentExecutions to a positive integer or remove the provisioned concurrency config.
How to fix it:
set provisionedConcurrentExecutions to a positive integer or remove the provisioned concurrency config.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.
ProductionFunctionUrlRequiresAuth
Context: AWSPSM!LambdaFunctionUrl
Classification: Mandatory semantic constraint (error)
Source: mde/validation/psm/rules/compute.evl:239
Why this rule exists
A production function URL bypasses many API-layer controls. Requiring an authentication mode makes that direct entry point subject to an explicit access decision.
When it applies
The rule is considered only when the guard below is true. A false guard is intentional: it means this invariant is not relevant to the current variant or modeling situation.
guard : self.`function`.isDefined() and self.`function`.isProductionScoped()
What counts as valid
The model passes when the following EVL check evaluates to true:
check : self.authType <> AWSPSMENUMS!LambdaFunctionUrlAuthType#NONE
This rule reads: function, authType.
Diagnostic and repair
Production-scoped Lambda function URL for has authType NONE. Fix: use AWS_IAM or expose the function through an authenticated API Gateway route.
How to fix it:
use AWS_IAM or expose the function through an authenticated API Gateway route.
A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.