Skip to content

CloudFormation Parameters Reference

This page documents all parameters for the EvidentSource CloudFormation templates.

The enterprise template (evidentsource-enterprise.dynamodb.cloudformation.yml) deploys a production-ready, auto-scaling EvidentSource cluster.

Before deploying, you must have an existing Kafka cluster with pre-created topics:

TopicDefault NameAccessPurpose
Transaction Proposalsevidentsource-transaction-proposalsInternalDistributed transaction coordination
Database Eventsevidentsource-database-eventsPublic ReadDatabase lifecycle notifications
Async Commandsevidentsource-async-commandsPublic WriteAsynchronous command submission
Async Responsesevidentsource-async-responsesPublic ReadAsynchronous command results

See Kafka Prerequisites for detailed setup instructions including topic configuration, access control, and AWS MSK integration.

ParameterTypeDescription
HostStringAPI hostname (e.g., api.evidentsource.example.com). See DNS Configuration.
VPCAWS::EC2::VPC::IdVPC for deployment
ClusterSubnetsList<AWS::EC2::Subnet::Id>Private subnets for EC2 instances (min 2 for HA)
LoadBalancerSubnetsList<AWS::EC2::Subnet::Id>Subnets for Application Load Balancer
LoadBalancerCertificateArnStringACM certificate ARN for TLS termination
KafkaBrokersStringKafka bootstrap servers (comma-separated). See Kafka Prerequisites.
StorageTableNameStringDynamoDB table name for event storage
S3BucketNameStringS3 bucket for large objects
LambdaCodeS3BucketStringS3 bucket containing Lambda deployment packages
ParameterTypeDefaultDescription
ClusterMinSizeNumber1Minimum instances in Auto Scaling Group
ClusterMaxSizeNumber4Maximum instances in Auto Scaling Group
ClusterInstanceTypeStringm8g.largeEC2 instance type (Graviton recommended)
RequireAuthStringtrueEnable JWT authentication
JwtAudienceString-Expected JWT audience claim
EnableMcpStringfalseDeploy MCP server cluster for AI agents
ParameterTypeDefaultDescription
TransactionProposalsTopicStringevidentsource-transaction-proposalsInternal linearizer topic (do not consume externally)
DatabaseEventsTopicStringevidentsource-database-eventsPublic topic for database lifecycle events
AsyncCommandsTopicStringevidentsource-async-commandsPublic topic for async command submission
AsyncResponsesTopicStringevidentsource-async-responsesPublic topic for async command responses
ParameterTypeDefaultDescription
KafkaSecurityProtocolString(empty)Security protocol: PLAINTEXT, SSL, or SASL_SSL
KafkaSaslMechanismString(empty)SASL mechanism: PLAIN, SCRAM-SHA-256, SCRAM-SHA-512, or AWS_MSK_IAM
KafkaSaslJaasConfigString(empty)JAAS configuration string for SCRAM/PLAIN authentication (not required for AWS_MSK_IAM)

Note: For development environments without Kafka authentication, leave security parameters empty (defaults to PLAINTEXT). For production with AWS MSK, use SASL_SSL with AWS_MSK_IAM mechanism—no JAAS config needed as it uses IAM roles automatically.

Example JAAS configurations:

For SCRAM-SHA-512:

org.apache.kafka.common.security.scram.ScramLoginModule required username="user" password="pass";

For PLAIN:

org.apache.kafka.common.security.plain.PlainLoginModule required username="user" password="pass";

The Host parameter specifies the hostname for all EvidentSource API endpoints. This hostname must be configured to resolve correctly for both external clients and internal services.

  1. External Access: The hostname must resolve to the Application Load Balancer for external clients
  2. Internal Access: The hostname must also resolve to the ALB from within the VPC (required for MCP server connectivity)
  3. TLS Certificate: The ACM certificate (LoadBalancerCertificateArn) must be valid for this hostname

For the MCP server to connect to the EvidentSource API, configure DNS resolution within the VPC:

Terminal window
# Create private hosted zone
aws route53 create-hosted-zone \
--name example.com \
--vpc VPCRegion=us-east-1,VPCId=vpc-xxxxx \
--caller-reference $(date +%s) \
--hosted-zone-config PrivateZone=true
# Create alias record pointing to ALB
aws route53 change-resource-record-sets \
--hosted-zone-id Z1234567890ABC \
--change-batch '{
"Changes": [{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "api.evidentsource.example.com",
"Type": "A",
"AliasTarget": {
"HostedZoneId": "Z35SXDOTRQ7X7K",
"DNSName": "internal-evidentsource-alb-123456.us-east-1.elb.amazonaws.com",
"EvaluateTargetHealth": true
}
}
}]
}'

Once configured, EvidentSource exposes:

EndpointPortDescription
https://{Host}443REST and gRPC API
https://{Host}:80008000MCP server (when EnableMcp=true)

The test template (evidentsource-test.dynamodb.cloudformation.yml) deploys a single-instance setup with integrated Kafka for development and testing.

ParameterTypeDescription
HostStringAPI hostname for CloudEvents source URLs
VPCAWS::EC2::VPC::IdVPC for deployment
InstanceSubnetAWS::EC2::Subnet::IdSubnet for the EC2 instance
StorageTableNameStringDynamoDB table name
S3BucketNameStringS3 bucket for large objects
LambdaCodeS3BucketStringS3 bucket for Lambda code
ParameterTypeDefaultDescription
InstanceTypeStringm8g.2xlargeEC2 instance type
RequireAuthStringfalseEnable JWT authentication

The CloudFormation parameter was renamed from Authority to Host to better reflect its purpose:

  • Before: Authority accepted a full URI authority (host:port)
  • After: Host accepts hostname only (e.g., api.example.com)

The CLI --authority flag remains unchanged and continues to accept host:port for local development flexibility.

Update your CloudFormation deployments:

Terminal window
# Before
--parameter-overrides Authority=api.example.com:443
# After
--parameter-overrides Host=api.example.com

ProspectiveBatchesTopic → TransactionProposalsTopic Rename

Section titled “ProspectiveBatchesTopic → TransactionProposalsTopic Rename”

The CloudFormation parameter was renamed from ProspectiveBatchesTopic to TransactionProposalsTopic to align with the environment variable naming convention (KAFKA_TRANSACTION_PROPOSALS_TOPIC).

  • Before: ProspectiveBatchesTopic (default: evidentsource-prospective-batches)
  • After: TransactionProposalsTopic (default: evidentsource-transaction-proposals)

Update your CloudFormation deployments:

Terminal window
# Before
--parameter-overrides ProspectiveBatchesTopic=my-prospective-batches
# After
--parameter-overrides TransactionProposalsTopic=my-transaction-proposals

Note: The default topic name has also changed. If you were using the default value, create a new topic with the new default name or explicitly set the parameter to your existing topic name.

The following parameters were added to support Kafka security and async processing:

  • KafkaSecurityProtocol, KafkaSaslMechanism, KafkaSaslJaasConfig - Security configuration
  • AsyncCommandsTopic, AsyncResponsesTopic - Async command processing topics

All new parameters have sensible defaults and are backward compatible with existing deployments.

Username/Password → JAAS Config Migration

Section titled “Username/Password → JAAS Config Migration”

The KafkaSaslUsername and KafkaSaslPassword parameters were replaced with a single KafkaSaslJaasConfig parameter to align with industry standard Kafka tooling (following patterns from Kpow and Lenses).

Before:

KafkaSaslUsername: "myuser"
KafkaSaslPassword: "mypassword"

After:

KafkaSaslJaasConfig: 'org.apache.kafka.common.security.scram.ScramLoginModule required username="myuser" password="mypassword";'

For AWS MSK IAM authentication, no JAAS config is needed—the system automatically uses the IAM role.