Header menu logo FsCDK

FsCDK lets you describe AWS infrastructure with a small, expressive F# DSL built on top of the AWS Cloud Development Kit (CDK). If you like computation expressions, immutability, and readable diffs, you’ll feel right at home.

This page gives you a quick, human-sized tour. No buzzwords, just a couple of realistic stacks you can read end-to-end.

What you’ll see below: - Define per-environment settings once and reuse them. - Declare DynamoDB tables, Lambdas, queues and topics with intent, not boilerplate. - Wire resources together (grants and subscriptions) without hunting for ARNs.

#r "../src/bin/Release/net8.0/publish/Amazon.JSII.Runtime.dll"
#r "../src/bin/Release/net8.0/publish/Constructs.dll"
#r "../src/bin/Release/net8.0/publish/Amazon.CDK.Lib.dll"
#r "../src/bin/Release/net8.0/publish/System.Text.Json.dll"
#r "../src/bin/Release/net8.0/publish/FsCDK.dll"

open FsCDK
open Amazon.CDK
open Amazon.CDK.AWS.DynamoDB
open Amazon.CDK.AWS.Lambda

// 1) Environments
let devEnv =
    environment {
        account "123456789012"
        region "us-east-1"
    }

let prodEnv =
    environment {
        account "123456789012"
        region "us-east-1"
    }

// 2) A Dev stack you can actually work with
stack "Dev" {
    env devEnv
    description "Developer stack for feature work"
    tags [ "service", "users"; "env", "dev" ]

    // resources
    table "users" {
        partitionKey "id" AttributeType.STRING
        billingMode BillingMode.PAY_PER_REQUEST
        removalPolicy RemovalPolicy.DESTROY
    }

    lambda "users-api-dev" {
        handler "Users::Handler::FunctionHandler"
        runtime Runtime.DOTNET_8
        code "./examples/lambdas/users"
        memorySize 512
        timeout 10.0
        description "CRUD over the users table"
    }

    let! usersDlq =
        queue "users-dlq" {
            retentionPeriod (7.0 * 24.0 * 3600.0) // 7 days
        }

    let dlq =
        deadLetterQueue {
            queue usersDlq
            maxReceiveCount 5
        }

    queue "users-queue" {
        deadLetterQueue dlq
        visibilityTimeout 30.0
    }

    topic "user-events" { displayName "User events" }

    grant {
        table "users"
        lambda "users-api-dev"
        readWriteAccess
    }
}

stack "Prod" {
    env prodEnv
    terminationProtection true
    tags [ "service", "users"; "env", "prod" ]

    table "users" {
        partitionKey "id" AttributeType.STRING
        billingMode BillingMode.PAY_PER_REQUEST
        removalPolicy RemovalPolicy.RETAIN
        pointInTimeRecovery true
    }

    lambda "users-api" {
        handler "Users::Handler::FunctionHandler"
        runtime Runtime.DOTNET_8
        code "./examples/lambdas/users"
        memorySize 1024
        timeout 15.0
        description "CRUD over the users table"
    }

    grant {
        table "users"
        lambda "users-api"
        readWriteAccess
    }
}

Why FsCDK?

Why FsCDK

FsCDK Architecture Overview

FsCDK Architecture Overview

Production-Safe Defaults

Security by Default

F# Developer Experience

List of builders and their operations

(Most of them, this might not be complete)

AWS Resource

Builder Name(s)

Parameters

ALB

applicationLoadBalancer

constructId, deletionProtection, dropInvalidHeaderFields, http2Enabled, internetFacing, securityGroup, vpc, vpcSubnets

App Runner Service

appRunnerService

accessRole, autoScalingConfigurationArn, constructId, healthCheckConfiguration, instanceConfiguration, instanceRole, sourceConfiguration, tag, tags

AppSync GraphQL API

appSyncGraphqlApi

authorizationConfig, constructId, domainName, logConfig, name, schema, xrayEnabled

Bastion Host

bastionHost

constructId, instanceName, instanceType, machineImage, requireImdsv2, securityGroup, subnetSelection, vpc

Bucket

bucket, s3Bucket

autoDeleteObjects, blockPublicAccess, constructId, encryption, encryptionKey, enforceSSL, removalPolicy, serverAccessLogsBucket, serverAccessLogsPrefix, versioned, websiteErrorDocument, websiteIndexDocument

CDK App

app

context, stackTraces, synthesizer

CloudWatch Alarm

cloudwatchAlarm

comparisonOperator, constructId, description, dimensions, evaluationPeriods, metric, metricName, metricNamespace, period, statistic, threshold, treatMissingData

CloudWatch Log Group

logGroup

constructId, encryptionKey, logGroupClass, removalPolicy, retention

CloudWatch Metric Filter

metricFilter

constructId, defaultValue, filterPattern, logGroup, metricName, metricNamespace, metricValue, unit

CloudWatch Subscription Filter

subscriptionFilter

constructId, destination, filterPattern, logGroup

CloudHSM Cluster

cloudHSMCluster

constructId, hsmType, subnetIds, vpc

CloudTrail

cloudTrail

cloudWatchLogsRetention, constructId, enableFileValidation, includeGlobalServiceEvents, isMultiRegionTrail, isOrganizationTrail, managementEvents, s3Bucket, sendToCloudWatchLogs

Cors Rule

corsRule

allowedHeaders, allowedMethods, allowedOrigins, exposedHeaders, id, maxAgeSeconds

Custom Resource

customResource

constructId, installLatestAwsSdk, logRetention, onCreate, onDelete, onUpdate, policy, timeout

Database Instance

rdsInstance

allocatedStorage, autoMinorVersionUpgrade, backupRetentionDays, constructId, credentials, databaseName, deleteAutomatedBackups, deletionProtection, enablePerformanceInsights, engine, iamAuthentication, instanceType, masterUsername, monitoringInterval, multiAz, performanceInsightRetention, postgresEngine, preferredBackupWindow, preferredMaintenanceWindow, publiclyAccessible, removalPolicy, securityGroup, storageEncrypted, storageType, vpc, vpcSubnets

Distribution

cloudFrontDistribution

additionalBehavior, additionalHttpBehavior, additionalS3Behavior, certificate, comment, constructId, defaultBehavior, defaultRootObject, domainName, enableIpv6, enableLogging, enabled, httpDefaultBehavior, httpVersion, minimumProtocolVersion, priceClass, s3DefaultBehavior, webAclId

DocumentDB Cluster

documentDBCluster

backupRetentionDays, backupWindow, constructId, deletionProtection, instanceType, instances, maintenanceWindow, masterPassword, masterUsername, port, removalPolicy, securityGroup, storageEncrypted, tag, tags, vpc, vpcSubnets

ECR Lifecycle Rule

(helpers)

deleteUntaggedAfterDays, keepLastNImages, deleteTaggedAfterDays, standardDevLifecycleRules, standardProdLifecycleRules

ECR Repository

ecrRepository

constructId, emptyOnDelete, imageScanOnPush, imageTagMutability, lifecycleRule, removalPolicy, repositoryName

ECS Cluster

ecsCluster

constructId, containerInsights, enableFargateCapacityProviders, vpc

ECS Fargate Service

ecsFargateService

assignPublicIp, circuitBreaker, cluster, constructId, desiredCount, enableExecuteCommand, healthCheckGracePeriod, maxHealthyPercent, minHealthyPercent, securityGroups, serviceName, taskDefinition, vpcSubnets

EKS Cluster

eksCluster

addFargateProfile, addHelmChart, addNodegroupCapacity, addServiceAccount, constructId, coreDnsComputeType, defaultCapacity, defaultCapacityInstance, disableClusterLogging, enableAlbController, encryptionKey, endpointAccess, mastersRole, setClusterLogging, version, vpc, vpcSubnet

ElastiCache Redis

elastiCacheRedis

autoMinorVersionUpgrade, availabilityZone, cacheNodeType, constructId, engineVersion, maintenanceWindow, numCacheNodes, port, securityGroupId, securityGroupIds, snapshotRetentionLimit, snapshotWindow, subnetGroup, tag, tags

Elastic Beanstalk Application

elasticBeanstalkApplication

constructId, description

Elastic Beanstalk Environment

elasticBeanstalkEnvironment

applicationName, constructId, description, optionSettings, solutionStackName, tier

Event BridgeRule

eventBridgeRule

constructId, description, enabled, eventBus, eventPattern, ruleName, schedule, target

Event Bus

eventBus

constructId, customEventBusName, eventSourceName

Fargate Task Definition

fargateTaskDefinition

constructId, cpu, ephemeralStorageGiB, executionRole, family, memory, runtimePlatform, taskRole, volume, volumes

Function

lambda

architecture, code, constructId, deadLetterQueue, deadLetterQueueEnabled, description, dockerImageCode, environment, environmentEncryption, envVar, ephemeralStorageSize, handler, inlineCode, insightsVersion, layer, layers, loggingFormat, logGroup, maxEventAge, memory, reservedConcurrentExecutions, retryAttempts, role, runtime, securityGroups, timeout, tracing, xrayEnabled

Gateway VPC Endpoint

gatewayVpcEndpoint

constructId, service, subnets, vpc

Grant

grant

customAccess, lambda, readAccess, readWriteAccess, table, writeAccess

HTTP API (API Gateway V2)

httpApi

apiName, constructId, cors, createDefaultStage, defaultIntegration, description, disableExecuteApiEndpoint

IAM PolicyStatement

policyStatement

(none - uses method chaining, not CustomOperations)

Import Source

importSource

bucket, bucketOwner, compressionType, inputFormat, keyPrefix

Interface VPC Endpoint

interfaceVpcEndpoint

constructId, privateDnsEnabled, securityGroups, service, subnets, vpc

Kinesis Stream

kinesisStream

constructId, encryption, encryptionKey, grantRead, grantWrite, onDemand, retentionPeriod, shardCount, streamMode, streamName, unencrypted

KMS Key

kmsKey

admissionPrincipal, alias, constructId, description, disableKeyRotation, enableKeyRotation, enabled, keySpec, keyUsage, pendingWindow, policy, removalPolicy

LambdaRole

lambdaRole

assumeRolePrincipal, basicExecution, constructId, inlinePolicy, kmsDecrypt, managedPolicy, vpcExecution, xrayTracing

Origin Access Identity

originAccessIdentity

constructId, comment

Queue

queue

constructId, contentBasedDeduplication, dataKeyReuse, deadLetterQueue, deduplicationScope, deliveryDelay, encryption, encryptionMasterKey, enforceSSL, fifo, fifoThroughputLimit, maxMessageSizeBytes, receiveMessageWaitTime, redriveAllowPolicy, removalPolicy, retentionPeriod, visibilityTimeout

RDS Proxy

rdsProxy

constructId, debugLogging, iamAuth, idleClientTimeout, initQuery, maxConnectionsPercent, maxIdleConnectionsPercent, proxyTarget, requireTLS, secrets, sessionPinningFilters, vpc

REST API (API Gateway V1)

restApi

binaryMediaTypes, cloneFrom, constructId, defaultCorsPreflightOptions, defaultIntegration, defaultMethodOptions, deployOptions, description, disableExecuteApiEndpoint, endpointTypes, failOnWarnings, parameters, policy, restApiName, retainDeployments

Route53 ARecord

aRecord

comment, constructId, target, ttl, zone

Route53 HostedZone

hostedZone

comment, constructId, queryLogsLogGroupArn, vpc, vpcs

Route53 PrivateHostedZone

privateHostedZone

constructId, comment, vpc

Route Table

routeTable

constructId, tag, vpc

Route

route

constructId, destinationCidrBlock, destinationIpv6CidrBlock, gatewayId, natGatewayId, networkInterfaceId, routeTable, transitGatewayId, vpcPeeringConnectionId

Secrets Manager Secret

secretsManager

constructId, description, encryptionKey, generateSecretString, removalPolicy, replicaRegions, secretStringValue

Security Group

securityGroup

allowAllOutbound, constructId, description, disableInlineRules, vpc

SSM Parameter

ssmParameter

allowedPattern, constructId, description, stringValue, tier

SSM Document

ssmDocument

constructId, content, documentFormat, documentType, targetType

Stack

stack

-

Step Functions

stepFunction

comment, constructId, definition, logDestination, loggingLevel, logs, role, stateMachineName, stateMachineType, timeout, tracingEnabled

Subscription

subscription

email, filterPolicy, http, https, lambda, queue, sms, subscriptionDeadLetterQueue, topic

Table

table

billingMode, constructId, kinesisStream, partitionKey, pointInTimeRecovery, removalPolicy, sortKey, stream

Token Authorizer

tokenAuthorizer

assumeRole, constructId, handler, identitySource, resultsCacheTtl, validationRegex

Topic

topic

constructId, displayName, fifo, contentBasedDeduplication

User Pool

userPool

accountRecovery, autoVerify, constructId, customAttribute, emailSettings, lambdaTriggers, mfa, mfaSecondFactor, passwordPolicy, removalPolicy, selfSignUpEnabled, signInAliases, signInWithEmail, signInWithEmailAndUsername, smsRole, standardAttributes, userPoolName

User Pool Client

userPoolClient

authFlows, constructId, generateSecret, oAuth, preventUserExistenceErrors, supportedIdentityProvider, tokenValidities, userPool

Vpc

vpc

cidr, constructId, defaultInstanceTenancy, enableDnsHostnames, enableDnsSupport, ipAddresses, maxAzs, natGateways, subnet

VPC Link

vpcLink

constructId, description, targets, vpcLinkName

X-Ray Group

xrayGroup

constructId, filterExpression, insightsEnabled, tag, tags

X-Ray Sampling Rule

xraySamplingRule

constructId, fixedRate, host, httpMethod, priority, reservoirSize, resourceArn, serviceName, serviceType, tag, tags, urlPath

The following AWS services are supported by FsCDK

Service

What it does

ALB

ALB (Application Load Balancer)

Distributes incoming HTTP/HTTPS traffic across multiple targets 📚 with curated learning resources

API Gateway

API Gateway (REST & HTTP API)

Creates REST and HTTP APIs to expose your backend services 📚 with curated learning resources

App Runner

App Runner

Fully managed container service for web apps and APIs

AppSync

AppSync

Builds managed GraphQL APIs with real-time data synchronization

Bastion Host

Bastion Host

Secure SSH access to instances in private subnets 📚 with curated learning resources

Certificate Manager

Certificate Manager

Manages SSL/TLS certificates for secure connections 📚 with curated learning resources

CloudFront

CloudFront

Content delivery network (CDN) for fast global content distribution

CloudHSM

CloudHSM

Hardware security modules for cryptographic key storage

CloudWatch

CloudWatch

Monitors resources with alarms, log groups, metric filters, subscription filters, dashboards, and synthetic canaries

Cognito

Cognito

User authentication and authorization for web and mobile apps

DocumentDB

DocumentDB

MongoDB-compatible document database

DynamoDB

DynamoDB

Fully managed NoSQL database for key-value and document data

EC2

EC2

Virtual servers in the cloud

ECR

ECR (Elastic Container Registry)

Stores and manages Docker container images

ECS

ECS (Elastic Container Service)

Runs containerized applications using Docker and Fargate

EFS

EFS (Elastic File System)

Scalable file storage for Lambda and EC2

EKS

EKS (Elastic Kubernetes Service)

Managed Kubernetes clusters for container orchestration

ElastiCache

ElastiCache

In-memory caching with Redis and Memcached

Elastic Beanstalk

Elastic Beanstalk

Platform-as-a-Service (PaaS) for deploying applications

Elastic IP

Elastic IP

Static IPv4 addresses for dynamic cloud computing

EventBridge

EventBridge

Event bus for connecting applications with event-driven architecture

IAM

IAM (Identity & Access Management)

Controls access to AWS resources with users, roles, and policies

Kinesis

Kinesis

Real-time data streaming for analytics and processing

KMS

KMS (Key Management Service)

Creates and manages encryption keys

Lambda

Lambda

Runs code without managing servers (serverless functions) with cost optimization controls

NLB

Network Load Balancer

High-performance TCP/UDP load balancer

OIDC Provider

OIDC Provider

Federated identity using OpenID Connect

RDS

RDS (Relational Database Service)

Managed relational databases (PostgreSQL, MySQL, etc.)

Route53

Route53

DNS service and domain name management

S3

S3 (Simple Storage Service)

Object storage for files, backups, and static websites

Secrets Manager

Secrets Manager

Securely stores and rotates database credentials and API keys

SNS

SNS (Simple Notification Service)

Pub/sub messaging for sending notifications

SQS

SQS (Simple Queue Service)

Message queuing for decoupling and scaling applications

SSM

SSM (Systems Manager)

Manages parameters and documents for configuration

Step Functions

Step Functions

Coordinates multiple AWS services into serverless workflows

VPC

VPC (Virtual Private Cloud)

Isolated network environment for your AWS resources

X-Ray

X-Ray

Distributed tracing for debugging and analyzing microservices

Additional Capabilities

namespace FsCDK
namespace Amazon
namespace Amazon.CDK
namespace Amazon.CDK.AWS
namespace Amazon.CDK.AWS.DynamoDB
namespace Amazon.CDK.AWS.Lambda
val devEnv: Environment
val environment: EnvironmentBuilder
<summary>Creates an AWS CDK Environment configuration.</summary>
<code lang="fsharp"> environment { account "123456789012" region "us-west-2" } </code>
custom operation: account (string) Calls EnvironmentBuilder.Account
<summary>Sets the AWS account ID for the environment.</summary>
<param name="config">The current configuration.</param>
<param name="accountId">The AWS account ID.</param>
<code lang="fsharp"> environment { account "123456789012" } </code>
custom operation: region (string) Calls EnvironmentBuilder.Region
<summary>Sets the AWS region for the environment.</summary>
<param name="config">The current configuration.</param>
<param name="regionName">The AWS region name.</param>
<code lang="fsharp"> environment { region "us-west-2" } </code>
val prodEnv: Environment
val stack: name: string -> StackBuilder
<summary>Creates an AWS CDK Stack construct.</summary>
<param name="name">The name of the stack.</param>
<code lang="fsharp"> stack "MyStack" { lambda myFunction bucket myBucket } </code>
custom operation: env (IEnvironment) Calls StackBuilder.Env
custom operation: description (string) Calls StackBuilder.Description
<summary>Sets the stack description.</summary>
<param name="config">The current stack configuration.</param>
<param name="desc">A description of the stack.</param>
<code lang="fsharp"> stack "MyStack" { description "My application stack" } </code>
custom operation: tags ((string * string) list) Calls StackBuilder.Tags
<summary>Adds tags to the stack.</summary>
<param name="config">The current stack configuration.</param>
<param name="tags">A list of key-value pairs for tagging.</param>
<code lang="fsharp"> stack "MyStack" { tags [ "Environment", "Production"; "Team", "DevOps" ] } </code>
val table: name: string -> TableBuilder
<summary>Creates a DynamoDB table configuration.</summary>
<param name="name">The table name.</param>
<code lang="fsharp"> table "MyTable" { partitionKey "id" AttributeType.STRING billingMode BillingMode.PAY_PER_REQUEST } </code>
custom operation: partitionKey (string) (AttributeType) Calls TableBuilder.PartitionKey
<summary>Sets the partition key for the table.</summary>
<param name="config">The current table configuration.</param>
<param name="name">The attribute name for the partition key.</param>
<param name="attrType">The attribute type (STRING, NUMBER, or BINARY).</param>
<code lang="fsharp"> table "MyTable" { partitionKey "id" AttributeType.STRING } </code>
[<Struct>] type AttributeType = | BINARY = 0 | NUMBER = 1 | STRING = 2
field AttributeType.STRING: AttributeType = 2
custom operation: billingMode (BillingMode) Calls TableBuilder.BillingMode
<summary>Sets the billing mode for the table.</summary>
<param name="config">The current table configuration.</param>
<param name="mode">The billing mode (PAY_PER_REQUEST or PROVISIONED).</param>
<code lang="fsharp"> table "MyTable" { billingMode BillingMode.PAY_PER_REQUEST } </code>
[<Struct>] type BillingMode = | PAY_PER_REQUEST = 0 | PROVISIONED = 1
field BillingMode.PAY_PER_REQUEST: BillingMode = 0
custom operation: removalPolicy (RemovalPolicy) Calls TableBuilder.RemovalPolicy
<summary>Sets the removal policy for the table.</summary>
<param name="config">The current table configuration.</param>
<param name="policy">The removal policy (DESTROY, RETAIN, or SNAPSHOT).</param>
<code lang="fsharp"> table "MyTable" { removalPolicy RemovalPolicy.DESTROY } </code>
[<Struct>] type RemovalPolicy = | DESTROY = 0 | RETAIN = 1 | SNAPSHOT = 2 | RETAIN_ON_UPDATE_OR_DELETE = 3
field RemovalPolicy.DESTROY: RemovalPolicy = 0
val lambda: name: string -> FunctionBuilder
<summary>Creates a Lambda function configuration.</summary>
<param name="name">The function name.</param>
<code lang="fsharp"> lambda "MyFunction" { handler "index.handler" runtime Runtime.NODEJS_18_X code "./lambda" timeout 30.0 } </code>
custom operation: handler (string) Calls FunctionBuilder.Handler
<summary>Sets the handler for the Lambda function.</summary>
<param name="config">The function configuration.</param>
<param name="handler">The handler name (e.g., "index.handler").</param>
<code lang="fsharp"> lambda "MyFunction" { handler "index.handler" } </code>
custom operation: runtime (Runtime) Calls FunctionBuilder.Runtime
<summary>Sets the runtime for the Lambda function.</summary>
<param name="config">The function configuration.</param>
<param name="runtime">The Lambda runtime.</param>
<code lang="fsharp"> lambda "MyFunction" { runtime Runtime.NODEJS_18_X } </code>
Multiple items
type Runtime = inherit DeputyBase new: name: string * ?family: Nullable<RuntimeFamily> * ?props: ILambdaRuntimeProps -> unit member RuntimeEquals: other: Runtime -> bool member ToString: unit -> string member BundlingImage: DockerImage member Family: Nullable<RuntimeFamily> member IsVariable: bool member Name: string member SupportsCodeGuruProfiling: bool member SupportsInlineCode: bool ...

--------------------
Runtime(name: string, ?family: System.Nullable<RuntimeFamily>, ?props: ILambdaRuntimeProps) : Runtime
property Runtime.DOTNET_8: Runtime with get
custom operation: code (Code) Calls FunctionBuilder.Code
<summary>Sets the code source from a Code object.</summary>
<param name="config">The function configuration.</param>
<param name="path">The Code object.</param>
<code lang="fsharp"> lambda "MyFunction" { code (Code.FromBucket myBucket "lambda.zip") } </code>
custom operation: memorySize (int) Calls FunctionBuilder.MemorySize
<summary>Sets the memory allocation for the Lambda function.</summary>
<param name="config">The function configuration.</param>
<param name="mb">The memory size in megabytes.</param>
<code lang="fsharp"> lambda "MyFunction" { memory 512 } </code>
custom operation: timeout (float) Calls FunctionBuilder.Timeout
<summary>Sets the timeout for the Lambda function.</summary>
<param name="config">The function configuration.</param>
<param name="seconds">The timeout in seconds.</param>
<code lang="fsharp"> lambda "MyFunction" { timeout 30.0 } </code>
custom operation: description (string) Calls FunctionBuilder.Description
<summary>Sets the description for the Lambda function.</summary>
<param name="config">The function configuration.</param>
<param name="desc">The function description.</param>
<code lang="fsharp"> lambda "MyFunction" { description "Processes incoming orders" } </code>
val usersDlq: AWS.SQS.IQueue
val queue: name: string -> QueueBuilder
<summary>Creates an SQS queue configuration.</summary>
<param name="name">The queue name.</param>
<code lang="fsharp"> queue "MyQueue" { visibilityTimeout 30.0 fifo true } </code>
custom operation: retentionPeriod (float) Calls QueueBuilder.RetentionPeriod
<summary>Sets the message retention period for the queue.</summary>
<param name="config">The queue configuration.</param>
<param name="seconds">The retention period in seconds.</param>
<code lang="fsharp"> queue "MyQueue" { retentionPeriod 345600.0 // 4 days } </code>
val dlq: AWS.SQS.IDeadLetterQueue
val deadLetterQueue: DeadLetterBuilder
<summary>Creates a dead-letter queue configuration.</summary>
<code lang="fsharp"> deadLetterQueue { queue myDeadLetterQueue maxReceiveCount 5 } </code>
custom operation: queue (AWS.SQS.IQueue) Calls DeadLetterBuilder.Queue
<summary>Sets the queue that will receive dead letters.</summary>
<param name="config">The dead-letter queue configuration.</param>
<param name="queue">The queue to use as the dead-letter queue.</param>
<code lang="fsharp"> deadLetterQueue { queue myDeadLetterQueue maxReceiveCount 5 } </code>
custom operation: maxReceiveCount (int) Calls DeadLetterBuilder.MaxReceiveCount
<summary>Sets the maximum number of times a message can be delivered to the source queue before being moved to the dead-letter queue.</summary>
<param name="config">The dead-letter queue configuration.</param>
<param name="count">The maximum receive count.</param>
<code lang="fsharp"> deadLetterQueue { maxReceiveCount 10 } </code>
custom operation: deadLetterQueue (AWS.SQS.IDeadLetterQueue) Calls QueueBuilder.DeadLetterQueue
<summary>Configures a dead-letter queue for the queue.</summary>
<param name="config">The queue configuration.</param>
<param name="deadLetterQueue">The dead-letter queue configuration.</param>
<code lang="fsharp"> queue "MyQueue" { deadLetterQueue myDeadLetterQueue } </code>
custom operation: visibilityTimeout (float) Calls QueueBuilder.VisibilityTimeout
<summary>Sets the visibility timeout for messages in the queue.</summary>
<param name="config">The queue configuration.</param>
<param name="seconds">The visibility timeout in seconds.</param>
<code lang="fsharp"> queue "MyQueue" { visibilityTimeout 30.0 } </code>
val topic: name: string -> TopicBuilder
<summary>Creates an SNS topic configuration.</summary>
<param name="name">The topic name.</param>
<code lang="fsharp"> topic "MyTopic" { displayName "My Notification Topic" fifo true } </code>
custom operation: displayName (string) Calls TopicBuilder.DisplayName
<summary>Sets the display name for the topic.</summary>
<param name="displayName">The display name shown in email notifications.</param>
<code lang="fsharp"> topic "MyTopic" { displayName "Order Notifications" } </code>
val grant: GrantBuilder
<summary>Creates a grant configuration for permissions between resources.</summary>
<code lang="fsharp"> grant { table "MyTable" lambda "MyFunction" readWriteAccess } </code>
custom operation: table (string) Calls GrantBuilder.Table
<summary>Sets the DynamoDB table for the grant.</summary>
<param name="tableConstructId">The construct ID of the table.</param>
<code lang="fsharp"> grant { table "MyTable" } </code>
custom operation: lambda (string) Calls GrantBuilder.Lambda
<summary>Sets the Lambda function for the grant.</summary>
<param name="lambdaConstructId">The construct ID of the Lambda function.</param>
<code lang="fsharp"> grant { lambda "MyFunction" } </code>
custom operation: readWriteAccess Calls GrantBuilder.ReadWriteAccess
<summary>Grants read and write access to the table.</summary>
<code lang="fsharp"> grant { table "MyTable" lambda "MyFunction" readWriteAccess } </code>
custom operation: terminationProtection (bool) Calls StackBuilder.TerminationProtection
<summary>Enables or disables termination protection for the stack.</summary>
<param name="config">The current stack configuration.</param>
<param name="enabled">Whether termination protection is enabled.</param>
<code lang="fsharp"> stack "MyStack" { terminationProtection true } </code>
field RemovalPolicy.RETAIN: RemovalPolicy = 1
custom operation: pointInTimeRecovery (bool) Calls TableBuilder.PointInTimeRecovery
<summary>Enables or disables point-in-time recovery.</summary>
<param name="config">The current table configuration.</param>
<param name="enabled">Whether point-in-time recovery is enabled.</param>
<code lang="fsharp"> table "MyTable" { pointInTimeRecovery true } </code>

Type something to start searching.