Header menu logo FsCDK

Lambda Lambda production defaults

Lambda Production Defaults

FsCDK bakes in the guidance from AWS Heroes Yan Cui, Heitor Lessa, and Alex Casalboni, along with the AWS Lambda Operator Guide, so every function starts production-ready without additional wiring.

Lambda Production Architecture

Lambda Production Architecture with FsCDK Defaults

Why these defaults matter

Serverless workloads succeed when they: - Retain failed events – DLQs capture payloads for replay and debugging. - Control spend and contention – Reserved concurrency prevents noisy neighbours. - Emit rich telemetry – JSON logs, X-Ray tracing, and Powertools illuminate behaviour. - Fail predictably – Retry and event-age limits avoid infinite loops and stale updates.

FsCDK turns these best practices into defaults so you don’t have to wire them by hand.


Defaults applied to every function

Every Lambda function in FsCDK automatically gets these production-safe defaults:

Feature

Default value

Rationale

Reserved concurrency

10

Limits blast radius and mirrors Yan Cui's cost-control advice.

X-Ray tracing

ACTIVE

Enables end-to-end tracing per Heitor Lessa's observability workshops.

Logging format

JSON

Unlocks CloudWatch Logs Insights and downstream analytics.

Log retention

1 week (via logGroup)

Corey Quinn cost optimization: "Never store logs forever." Use logGroup builder for custom retention.

Ephemeral storage

512 MB

AWS free tier default. Increase only when processing large files.

Retry attempts

2

Prevents infinite retry loops while allowing transient recovery.

Max event age

6 hours

Avoids stale data processing as recommended in the Lambda operator guide.

Dead-letter queue

Auto-created SQS (14-day retention)

Guarantees recoverability and audit trails.

Lambda Powertools

Enabled

Adds structured logging, metrics, and tracing helpers automatically.


Basic usage (defaults already applied)

#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/FsCDK.dll"

#r "nuget: Amazon.CDK.Lib, 2.128.0"

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

let app = App()

stack "ProductionStack" {
    scope app

    lambda "OrderProcessor" {
        handler "index.handler"
        runtime Runtime.PYTHON_3_11
        code "./src"

        environment [ "TABLE_NAME", "orders-table"; "POWERTOOLS_SERVICE_NAME", "order-service" ] // Powertools auto-configured
    }
// Reserved concurrency = 10
// X-Ray tracing enabled
// JSON logging enabled
// DLQ auto-created: "OrderProcessor-dlq"
// Powertools layer added automatically
// Max event age = 6 hours
// Retry attempts = 2
}

Overriding defaults

When you understand traffic patterns and operational maturity, override the presets. Follow the decision points outlined in Production-Ready Serverless and validate changes through load tests before relaxing safeguards:

stack "CustomStack" {
    scope app

    // High-throughput function
    lambda "HighVolumeProcessor" {
        handler "index.handler"
        runtime Runtime.NODEJS_20_X
        code "./dist"

        // Override defaults
        reservedConcurrentExecutions 500 // Allow higher concurrency
        tracing Tracing.PASS_THROUGH // Disable X-Ray
        loggingFormat LoggingFormat.TEXT // Use plain text logs
        autoCreateDLQ false // Disable DLQ
        autoAddPowertools false // Skip Powertools layer
        maxEventAge (Duration.Hours(1.0)) // 1 hour instead of 6
        retryAttempts 0 // No retries
    }
}

Dead Letter Queue (DLQ) Auto-Creation

How it works

FsCDK provisions a standard SQS queue and wires it to the Lambda’s asynchronous failure destination—matching the blueprint from the AWS Lambda Operator Guide:

lambda "PaymentProcessor" {
    handler "process_payment"
    runtime Runtime.PYTHON_3_11
    code "./payment-service"
}
// Automatically creates SQS queue: "PaymentProcessor-dlq"
// Failed events stored for 14 days

Manual DLQ configuration

Large or regulated workloads may require custom encryption, retention, or monitoring. The pattern below mirrors the approach described in the AWS Compute Blog post “Designing resilient asynchronous workflows with DLQs.”

open Amazon.CDK.AWS.SQS

stack "CustomDLQStack" {
    scope app

    // Create custom DLQ with specific settings
    let! customDlq =
        queue "critical-failures" {
            retentionPeriod (30.0 * 24.0 * 3600.0) // 30 days in seconds
            encryption QueueEncryption.KMS
        }

    lambda "CriticalFunction" {
        handler "index.handler"
        runtime Runtime.PYTHON_3_11
        code "./src"
        deadLetterQueue customDlq // Use custom DLQ
        autoCreateDLQ false // Disable auto-creation
    }
}

AWS Lambda Powertools integration

Created by AWS Principal Engineer Heitor Lessa, Lambda Powertools delivers the structured logging, metrics, and tracing helpers showcased in the Powertools Live Workshops (average rating 4.9★). FsCDK automatically layers these utilities so your handlers follow the same blueprint Heitor presents in re:Invent sessions.

Key capabilities

Supported runtimes

Runtime

Delivery

Notes

Python 3.8–3.12

AWSLambdaPowertoolsPython layer

Latest version pinned automatically

Node.js 14–20

AWSLambdaPowertoolsTypeScript layer

Includes utilities for ESM and CommonJS

Java 8, 11, 17

AWSLambdaPowertoolsJava layer

Aligns with Powertools Java starter kit

.NET 6+

NuGet packages

Add AWS.Lambda.Powertools.* packages manually

For .NET, install the NuGet packages (Logging, Metrics, Tracing) as demonstrated in the official Powertools .NET docs.

Python Example

lambda "PythonFunction" {
    handler "app.handler"
    runtime Runtime.PYTHON_3_11
    code "./python-service"

    environment
        [ "POWERTOOLS_SERVICE_NAME", "user-service"
          "POWERTOOLS_METRICS_NAMESPACE", "MyApp"
          "LOG_LEVEL", "INFO" ]
}
// Powertools layer added automatically!

In your Python code:

from aws_lambda_powertools import Logger, Tracer, Metrics
from aws_lambda_powertools.utilities.typing import LambdaContext

logger = Logger()
tracer = Tracer()
metrics = Metrics()

@logger.inject_lambda_context
@tracer.capture_lambda_handler
@metrics.log_metrics(capture_cold_start_metric=True)
def handler(event: dict, context: LambdaContext) -> dict:
    logger.info("Processing user request", extra={"user_id": event.get("user_id")})
    metrics.add_metric(name="UserRequestProcessed", unit="Count", value=1)

    # Your business logic here

    return {"statusCode": 200, "body": "Success"}

Node.js/TypeScript Example

lambda "NodeFunction" {
    handler "index.handler"
    runtime Runtime.NODEJS_20_X
    code "./nodejs-service"

    environment
        [ "POWERTOOLS_SERVICE_NAME", "order-service"
          "POWERTOOLS_METRICS_NAMESPACE", "MyApp"
          "LOG_LEVEL", "INFO" ]
}

In your TypeScript code:

import { Logger } from '@aws-lambda-powertools/logger';
import { Tracer } from '@aws-lambda-powertools/tracer';
import { Metrics } from '@aws-lambda-powertools/metrics';

const logger = new Logger();
const tracer = new Tracer();
const metrics = new Metrics();

export const handler = async (event: any) => {
    logger.info('Processing order', { orderId: event.orderId });
    metrics.addMetric('OrderProcessed', 'Count', 1);

    // Your business logic here

    return { statusCode: 200, body: 'Success' };
};

Disabling Powertools

If you don't want Powertools (e.g., for .NET or custom logging):

lambda "CustomLoggingFunction" {
    handler "index.handler"
    runtime Runtime.DOTNET_8
    code "./dotnet-service"
    autoAddPowertools false // Skip Powertools layer
}

Reserved Concurrency

Why reserved concurrency?

By default, Lambda can consume the entire account concurrency pool (1,000 per Region). Without guard rails you risk surprise costs and throttling other services—a scenario highlighted in Yan Cui’s “All you need to know about Lambda concurrency”. FsCDK therefore caps concurrency at 10 by default.

When to override

Increase or remove the cap only after: - Load testing confirms throughput requirements - You’ve configured cost and error alarms - Other critical functions have explicit concurrency protections in place

// Development/staging - keep defaults
lambda "DevFunction" {
    handler "index.handler"
    runtime Runtime.PYTHON_3_11
    code "./src"
// Reserved concurrency = 10 (default)
}

// Production - increase based on load testing
lambda "ProdFunction" {
    handler "index.handler"
    runtime Runtime.PYTHON_3_11
    code "./src"
    reservedConcurrentExecutions 500 // Tested capacity
}

// Unlimited (use with caution!)
lambda "UnlimitedFunction" {
    handler "index.handler"
    runtime Runtime.PYTHON_3_11
    code "./src"
    reservedConcurrentExecutions -1 // Remove limit (not recommended!)
}

X-Ray Tracing

Default: ACTIVE

Active tracing mirrors the workflow taught in AWS Powertools workshops—capturing every invocation for dependency mapping, latency analysis, and incident response. Keep it enabled unless regulatory requirements dictate otherwise.

Tracing modes

// Active tracing (default) - traces all requests
lambda "ActiveTracing" {
    handler "index.handler"
    runtime Runtime.PYTHON_3_11
    code "./src"
    tracing Tracing.ACTIVE // Default
}

// Pass-through - only traces if upstream sent trace header
lambda "PassThroughTracing" {
    handler "index.handler"
    runtime Runtime.PYTHON_3_11
    code "./src"
    tracing Tracing.PASS_THROUGH
}

// Disabled - no tracing
lambda "NoTracing" {
    handler "index.handler"
    runtime Runtime.PYTHON_3_11
    code "./src"
    tracing Tracing.DISABLED
}

X-Ray with Powertools

When using Lambda Powertools, X-Ray tracing is automatically integrated:

from aws_lambda_powertools import Tracer

tracer = Tracer()

@tracer.capture_lambda_handler
def handler(event, context):
    # Automatically creates X-Ray segments
    process_order()

@tracer.capture_method
def process_order():
    # Creates subsegments for detailed tracing
    validate_order()
    save_to_database()

Structured Logging (JSON)

Default: JSON format

Structured JSON logs are the backbone of Yan Cui’s observability playbook and the AWS Lambda Operator Guide. They unlock CloudWatch Logs Insights, make Datadog/Splunk ingestion straightforward, and enforce consistent fields for downstream analytics.

lambda "JsonLoggingFunction" {
    handler "index.handler"
    runtime Runtime.PYTHON_3_11
    code "./src"
    loggingFormat LoggingFormat.JSON // Default
}

// Override to text format if needed
lambda "TextLoggingFunction" {
    handler "index.handler"
    runtime Runtime.PYTHON_3_11
    code "./src"
    loggingFormat LoggingFormat.TEXT
}

CloudWatch Logs Insights Example

With JSON logging, you can query logs efficiently:

fields @timestamp, level, message, userId
| filter level = "ERROR"
| filter userId = "user-123"
| sort @timestamp desc
| limit 20

Async Invocation Configuration

Default event handling

Async invocations inherit a 6-hour max age and two retry attempts, echoing the configuration recommended in the AWS Lambda Operator Guide to balance resiliency with timely processing.

When to override

Use configureAsyncInvoke when business SLAs require tighter delivery windows or fewer retries—after validating downstream systems can cope.

lambda "CustomAsyncFunction" {
    handler "index.handler"
    runtime Runtime.PYTHON_3_11
    code "./src"

    // Custom async configuration

    asyncInvokeOption (
        eventInvokeConfigOptions {
            maxEventAge (Duration.Minutes(30.0)) // Process within 30 min
            retryAttempts 1 // Only retry once
        }
    )
}
// Note: When using configureAsyncInvoke, MaxEventAge/RetryAttempts
// are NOT set on the function props to avoid conflicts

Why limit event age?

Stale events lead to incorrect business logic, wasted compute, and confusing audit trails—an issue repeatedly called out in the AWS Compute Blog. FsCDK therefore drops payloads older than six hours by default.


Complete Production Example

Here's a complete example showing all production features:

let productionApp = App()

stack "ProductionOrderService" {
    scope productionApp

    // DynamoDB table for orders
    let ordersTable =
        table "production-orders" {
            partitionKey "orderId" AWS.DynamoDB.AttributeType.STRING
            billingMode AWS.DynamoDB.BillingMode.PAY_PER_REQUEST
            pointInTimeRecovery true
        // Note: Encryption is managed by AWS by default
        }

    // Order processor with all production defaults
    lambda "OrderProcessor" {
        handler "process_order.handler"
        runtime Runtime.PYTHON_3_11
        code "./services/order-processor"
        memorySize 512
        timeout 30.0

        // Environment variables for Powertools
        environment
            [ "TABLE_NAME", ordersTable.TableName
              "POWERTOOLS_SERVICE_NAME", "order-processor"
              "POWERTOOLS_METRICS_NAMESPACE", "OrderService"
              "LOG_LEVEL", "INFO" ]

        // Production-safe defaults applied automatically:
        // Reserved concurrency = 10
        // X-Ray tracing = ACTIVE
        // JSON logging
        // DLQ = "OrderProcessor-dlq" (14-day retention)
        // Powertools layer added
        // Max event age = 6 hours
        // Retry attempts = 2

        // Grant DynamoDB permissions
        addRolePolicyStatement (
            policyStatement {
                actions [ "dynamodb:PutItem"; "dynamodb:UpdateItem" ]
                resources [ ordersTable.Table.Value.TableArn ]
            }
        )
    }

    // High-volume notification sender (custom concurrency)
    lambda "NotificationSender" {
        handler "send_notification.handler"
        runtime Runtime.NODEJS_20_X
        code "./services/notification-sender"
        memorySize 256
        timeout 10.0

        // Override concurrency for high volume
        reservedConcurrentExecutions 200 // Validated through load testing

        environment
            [ "POWERTOOLS_SERVICE_NAME", "notification-sender"
              "POWERTOOLS_METRICS_NAMESPACE", "OrderService" ]

    // Other defaults still applied:
    // X-Ray tracing = ACTIVE
    // JSON logging
    // DLQ auto-created
    // Powertools layer
    }

    // Legacy function (custom configuration)
    lambda "LegacyProcessor" {
        handler "legacy.handler"
        runtime Runtime.JAVA_17
        code "./legacy-service"

        // Disable new features for legacy compatibility
        autoCreateDLQ false // Custom error handling
        autoAddPowertools false // Custom logging library
        loggingFormat LoggingFormat.TEXT // Legacy log parser

    // Still protected:
    // Reserved concurrency = 10
    // X-Ray tracing = ACTIVE (can disable if needed)
    }
}

productionApp.Synth() |> ignore

Best practices (from AWS Heroes)

DO

DON’T


Related Documentation


📚 Learning Resources from AWS Heroes

Yan Cui (The Burning Monk) - AWS Serverless Hero

Essential Reading:

Cost Optimization:

Observability & Debugging:

Video Content:

AWS Lambda Powertools

Official Documentation:

Key Features Explained:

AWS Official Resources

Lambda Best Practices:

Async Invocation & Error Handling:

X-Ray Tracing:

Community Tools

Lambda Development:

Monitoring & Alerting:

Recommended Reading Order

Beginner → Intermediate:

  1. Start with AWS Lambda Operator Guide
  2. Read AWS Lambda Cold Start Best Practices
  3. Implement Lambda Powertools in your functions
  4. Learn X-Ray Tracing

Intermediate → Advanced:

  1. Deep dive into Lambda Concurrency
  2. Take Production-Ready Serverless Course
  3. Implement Cost Optimization Strategies
  4. Master Serverless Observability

Why FsCDK Uses These Defaults

FsCDK's production defaults are based on lessons learned by AWS Heroes and the broader serverless community:

  1. Reserved Concurrency (10) - Prevents runaway costs and protects downstream systems (AWS docs)
  2. Auto-create DLQ - Never lose events, always have audit trail (AWS DLQ docs)
  3. X-Ray Tracing - Essential for debugging distributed systems (AWS X-Ray)
  4. Structured JSON Logging - Enables CloudWatch Logs Insights queries (Lambda Powertools)
  5. Lambda Powertools - Battle-tested utilities from AWS (official docs)

FsCDK Implementation Details

These defaults are implemented in src/Function.fs and src/LambdaPowertools.fs. See AGENTS.md for architectural details.


Summary

FsCDK's production defaults ensure your Lambda functions are:

Feature

Benefit

Reserved Concurrency

Prevents runaway costs

X-Ray Tracing

Full observability across services

JSON Logging

Structured logs for better debugging

Auto-created DLQ

Never lose failed events

Lambda Powertools

Production-grade logging, metrics, tracing

Event Age Limits

Prevents stale event processing

Retry Limits

Prevents infinite retry loops

These defaults can all be overridden, but they provide a safe starting point for production workloads.

()
namespace Amazon
namespace Amazon.CDK
namespace Amazon.CDK.AWS
namespace Amazon.CDK.AWS.Lambda
namespace FsCDK
val app: App
Multiple items
type App = inherit Stage new: ?props: IAppProps -> unit static member IsApp: obj: obj -> bool

--------------------
App(?props: IAppProps) : App
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: scope (Constructs.Construct) Calls StackBuilder.Scope
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.PYTHON_3_11: 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: environment ((string * string) list) Calls FunctionBuilder.Environment
<summary>Sets environment variables for the Lambda function.</summary>
<param name="config">The function configuration.</param>
<param name="env">List of key-value pairs for environment variables.</param>
<code lang="fsharp"> lambda "MyFunction" { environment [ "KEY1", "value1"; "KEY2", "value2" ] } </code>
property Runtime.NODEJS_20_X: Runtime with get
custom operation: reservedConcurrentExecutions (int) Calls FunctionBuilder.ReservedConcurrentExecutions
<summary>Sets reserved concurrent executions for the function.</summary>
<param name="config">The function configuration.</param>
<param name="value">Reserved concurrency value.</param>
<code lang="fsharp"> lambda "MyFunction" { reservedConcurrentExecutions 50 } </code>
custom operation: tracing (Tracing) Calls FunctionBuilder.Tracing
<summary>Sets the tracing mode for AWS X-Ray.</summary>
<param name="config">The function configuration.</param>
<param name="tracing">Tracing mode (e.g., ACTIVE, PASS_THROUGH).</param>
<code lang="fsharp"> lambda "MyFunction" { tracing Tracing.ACTIVE } </code>
[<Struct>] type Tracing = | ACTIVE = 0 | PASS_THROUGH = 1 | DISABLED = 2
field Tracing.PASS_THROUGH: Tracing = 1
custom operation: loggingFormat (LoggingFormat) Calls FunctionBuilder.LoggingFormat
<summary>Sets the logging format for CloudWatch Logs (JSON or TEXT).</summary>
<param name="config">The function configuration.</param>
<param name="format">Logging format.</param>
<code lang="fsharp"> lambda "MyFunction" { loggingFormat LoggingFormat.JSON } </code>
[<Struct>] type LoggingFormat = | TEXT = 0 | JSON = 1
field LoggingFormat.TEXT: LoggingFormat = 0
custom operation: autoCreateDLQ (bool) Calls FunctionBuilder.AutoCreateDLQ
<summary> Controls automatic DLQ creation. Default: true (Yan Cui recommendation). Set to false to disable auto-DLQ creation. </summary>
<param name="config">The function configuration.</param>
<param name="value">True to enable, false to disable automatic DLQ creation.</param>
<code lang="fsharp"> lambda "MyFunction" { autoCreateDLQ true } </code>
custom operation: autoAddPowertools (bool) Calls FunctionBuilder.AutoAddPowertools
<summary> Controls automatic Lambda Powertools layer addition. Default: true (Yan Cui recommendation). Set to false to disable Powertools auto-addition. </summary>
<param name="config">The function configuration.</param>
<param name="value">True to auto-add Powertools, false to skip.</param>
<code lang="fsharp"> lambda "MyFunction" { autoAddPowertools true } </code>
custom operation: maxEventAge (Duration) Calls FunctionBuilder.MaxEventAge
<summary>Sets the maximum event age for asynchronous invocations.</summary>
<param name="config">The function configuration.</param>
<param name="age">Maximum event age as a duration.</param>
<code lang="fsharp"> lambda "MyFunction" { maxEventAge (Duration.Minutes 2.0) } </code>
type Duration = inherit DeputyBase member FormatTokenToNumber: unit -> string member IsUnresolved: unit -> bool member Minus: rhs: Duration -> Duration member Plus: rhs: Duration -> Duration member ToDays: ?opts: ITimeConversionOptions -> float member ToHours: ?opts: ITimeConversionOptions -> float member ToHumanString: unit -> string member ToIsoString: unit -> string member ToMilliseconds: ?opts: ITimeConversionOptions -> float ...
Duration.Hours(amount: float) : Duration
custom operation: retryAttempts (int) Calls FunctionBuilder.RetryAttempts
<summary>Sets the number of retry attempts for asynchronous invocations.</summary>
<param name="config">The function configuration.</param>
<param name="value">Number of retries.</param>
<code lang="fsharp"> lambda "MyFunction" { retryAttempts 2 } </code>
namespace Amazon.CDK.AWS.SQS
val customDlq: 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>
custom operation: encryption (QueueEncryption) Calls QueueBuilder.Encryption
<summary>Sets the encryption type for the queue.</summary>
<param name="config">The queue configuration.</param>
<param name="encryption">The encryption type (KMS, KMS_MANAGED, SQS_MANAGED, or UNENCRYPTED).</param>
<code lang="fsharp"> queue "MyQueue" { encryption QueueEncryption.KMS_MANAGED } </code>
[<Struct>] type QueueEncryption = | UNENCRYPTED = 0 | KMS_MANAGED = 1 | KMS = 2 | SQS_MANAGED = 3
field QueueEncryption.KMS: QueueEncryption = 2
custom operation: deadLetterQueue (IQueue) Calls FunctionBuilder.DeadLetterQueue
<summary>Sets an SQS dead-letter queue for asynchronous invocation failures.</summary>
<param name="config">The function configuration.</param>
<param name="queue">Dead-letter queue.</param>
<code lang="fsharp"> lambda "MyFunction" { deadLetterQueue myDlq } </code>
property Runtime.DOTNET_8: Runtime with get
field Tracing.ACTIVE: Tracing = 0
field Tracing.DISABLED: Tracing = 2
field LoggingFormat.JSON: LoggingFormat = 1
custom operation: asyncInvokeOption (IEventInvokeConfigOptions) Calls FunctionBuilder.AsyncInvokeOption
<summary>Adds a single asynchronous invocation option.</summary>
<param name="config">The function configuration.</param>
<param name="options">Async invoke option.</param>
<code lang="fsharp"> lambda "MyFunction" { asyncInvokeOption myOpts } </code>
val eventInvokeConfigOptions: EventInvokeConfigOptionsBuilder
custom operation: maxEventAge (Duration) Calls EventInvokeConfigOptionsBuilder.MaxEventAge
Duration.Minutes(amount: float) : Duration
custom operation: retryAttempts (int) Calls EventInvokeConfigOptionsBuilder.RetryAttempts
val productionApp: App
val ordersTable: TableSpec
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) (AWS.DynamoDB.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>
namespace Amazon.CDK.AWS.DynamoDB
[<Struct>] type AttributeType = | BINARY = 0 | NUMBER = 1 | STRING = 2
field AWS.DynamoDB.AttributeType.STRING: AWS.DynamoDB.AttributeType = 2
custom operation: billingMode (AWS.DynamoDB.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 AWS.DynamoDB.BillingMode.PAY_PER_REQUEST: AWS.DynamoDB.BillingMode = 0
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>
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>
TableSpec.TableName: string
custom operation: addRolePolicyStatement (AWS.IAM.PolicyStatement) Calls FunctionBuilder.AddRolePolicyStatement
<summary>Adds a single role policy statement.</summary>
<param name="config">The function configuration.</param>
<param name="statements">Policy statement.</param>
<code lang="fsharp"> lambda "MyFunction" { addRolePolicyStatement stmt } </code>
val policyStatement: PolicyStatementBuilder
custom operation: actions (string list) Calls PolicyStatementBuilder.Actions
custom operation: resources (string list) Calls PolicyStatementBuilder.Resources
TableSpec.Table: AWS.DynamoDB.ITable option
property Option.Value: AWS.DynamoDB.ITable with get
property AWS.DynamoDB.ITable.TableArn: string with get
property Runtime.JAVA_17: Runtime with get
Stage.Synth(?options: IStageSynthesisOptions) : CXAPI.CloudAssembly
val ignore: value: 'T -> unit

Type something to start searching.