# API Reference ## Constructs ### RustExtension A Lambda extension written in Rust. #### Initializers ```typescript import { RustExtension } from 'cargo-lambda-cdk' new RustExtension(scope: Construct, resourceName: string, props?: RustExtensionProps) ``` | **Name** | **Type** | **Description** | | --- | --- | --- | | scope | constructs.Construct | *No description.* | | resourceName | string | *No description.* | | props | RustExtensionProps | *No description.* | --- ##### `scope`Required - *Type:* constructs.Construct --- ##### `resourceName`Required - *Type:* string --- ##### `props`Optional - *Type:* RustExtensionProps --- #### Methods | **Name** | **Description** | | --- | --- | | toString | Returns a string representation of this construct. | | applyRemovalPolicy | Apply the given removal policy to this resource. | | addPermission | Add permission for this layer version to specific entities. | --- ##### `toString` ```typescript public toString(): string ``` Returns a string representation of this construct. ##### `applyRemovalPolicy` ```typescript public applyRemovalPolicy(policy: RemovalPolicy): void ``` Apply the given removal policy to this resource. The Removal Policy controls what happens to this resource when it stops being managed by CloudFormation, either because you've removed it from the CDK application or because you've made a change that requires the resource to be replaced. The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). ###### `policy`Required - *Type:* aws-cdk-lib.RemovalPolicy --- ##### `addPermission` ```typescript public addPermission(id: string, permission: LayerVersionPermission): void ``` Add permission for this layer version to specific entities. Usage within the same account where the layer is defined is always allowed and does not require calling this method. Note that the principal that creates the Lambda function using the layer (for example, a CloudFormation changeset execution role) also needs to have the ``lambda:GetLayerVersion`` permission on the layer version. ###### `id`Required - *Type:* string --- ###### `permission`Required - *Type:* aws-cdk-lib.aws_lambda.LayerVersionPermission --- #### Static Functions | **Name** | **Description** | | --- | --- | | isConstruct | Checks if `x` is a construct. | | isOwnedResource | Returns true if the construct was created by CDK, and false otherwise. | | isResource | Check whether the given construct is a Resource. | | fromLayerVersionArn | Imports a layer version by ARN. | | fromLayerVersionAttributes | Imports a Layer that has been defined externally. | --- ##### ~~`isConstruct`~~ ```typescript import { RustExtension } from 'cargo-lambda-cdk' RustExtension.isConstruct(x: any) ``` Checks if `x` is a construct. ###### `x`Required - *Type:* any Any object. --- ##### `isOwnedResource` ```typescript import { RustExtension } from 'cargo-lambda-cdk' RustExtension.isOwnedResource(construct: IConstruct) ``` Returns true if the construct was created by CDK, and false otherwise. ###### `construct`Required - *Type:* constructs.IConstruct --- ##### `isResource` ```typescript import { RustExtension } from 'cargo-lambda-cdk' RustExtension.isResource(construct: IConstruct) ``` Check whether the given construct is a Resource. ###### `construct`Required - *Type:* constructs.IConstruct --- ##### `fromLayerVersionArn` ```typescript import { RustExtension } from 'cargo-lambda-cdk' RustExtension.fromLayerVersionArn(scope: Construct, id: string, layerVersionArn: string) ``` Imports a layer version by ARN. Assumes it is compatible with all Lambda runtimes. ###### `scope`Required - *Type:* constructs.Construct --- ###### `id`Required - *Type:* string --- ###### `layerVersionArn`Required - *Type:* string --- ##### `fromLayerVersionAttributes` ```typescript import { RustExtension } from 'cargo-lambda-cdk' RustExtension.fromLayerVersionAttributes(scope: Construct, id: string, attrs: LayerVersionAttributes) ``` Imports a Layer that has been defined externally. ###### `scope`Required - *Type:* constructs.Construct the parent Construct that will use the imported layer. --- ###### `id`Required - *Type:* string the id of the imported layer in the construct tree. --- ###### `attrs`Required - *Type:* aws-cdk-lib.aws_lambda.LayerVersionAttributes the properties of the imported layer. --- #### Properties | **Name** | **Type** | **Description** | | --- | --- | --- | | node | constructs.Node | The tree node. | | env | aws-cdk-lib.interfaces.ResourceEnvironment | The environment this resource belongs to. | | stack | aws-cdk-lib.Stack | The stack in which this resource is defined. | | layerVersionArn | string | The ARN of the Lambda Layer version that this Layer defines. | | layerVersionRef | aws-cdk-lib.interfaces.aws_lambda.LayerVersionReference | A reference to a LayerVersion resource. | | compatibleRuntimes | aws-cdk-lib.aws_lambda.Runtime[] | The runtimes compatible with this Layer. | --- ##### `node`Required ```typescript public readonly node: Node; ``` - *Type:* constructs.Node The tree node. --- ##### `env`Required ```typescript public readonly env: ResourceEnvironment; ``` - *Type:* aws-cdk-lib.interfaces.ResourceEnvironment The environment this resource belongs to. For resources that are created and managed in a Stack (those created by creating new class instances like `new Role()`, `new Bucket()`, etc.), this is always the same as the environment of the stack they belong to. For referenced resources (those obtained from referencing methods like `Role.fromRoleArn()`, `Bucket.fromBucketName()`, etc.), they might be different than the stack they were imported into. --- ##### `stack`Required ```typescript public readonly stack: Stack; ``` - *Type:* aws-cdk-lib.Stack The stack in which this resource is defined. --- ##### `layerVersionArn`Required ```typescript public readonly layerVersionArn: string; ``` - *Type:* string The ARN of the Lambda Layer version that this Layer defines. --- ##### `layerVersionRef`Required ```typescript public readonly layerVersionRef: LayerVersionReference; ``` - *Type:* aws-cdk-lib.interfaces.aws_lambda.LayerVersionReference A reference to a LayerVersion resource. --- ##### `compatibleRuntimes`Optional ```typescript public readonly compatibleRuntimes: Runtime[]; ``` - *Type:* aws-cdk-lib.aws_lambda.Runtime[] The runtimes compatible with this Layer. --- #### Constants | **Name** | **Type** | **Description** | | --- | --- | --- | | PROPERTY_INJECTION_ID | string | Uniquely identifies this class. | --- ##### `PROPERTY_INJECTION_ID`Required ```typescript public readonly PROPERTY_INJECTION_ID: string; ``` - *Type:* string Uniquely identifies this class. --- ### RustFunction A Rust Lambda function. #### Initializers ```typescript import { RustFunction } from 'cargo-lambda-cdk' new RustFunction(scope: Construct, resourceName: string, props?: RustFunctionProps) ``` | **Name** | **Type** | **Description** | | --- | --- | --- | | scope | constructs.Construct | *No description.* | | resourceName | string | *No description.* | | props | RustFunctionProps | *No description.* | --- ##### `scope`Required - *Type:* constructs.Construct --- ##### `resourceName`Required - *Type:* string --- ##### `props`Optional - *Type:* RustFunctionProps --- #### Methods | **Name** | **Description** | | --- | --- | | toString | Returns a string representation of this construct. | | applyRemovalPolicy | Apply the given removal policy to this resource. | | addEventSource | Adds an event source to this function. | | addEventSourceMapping | Adds an event source that maps to this AWS Lambda function. | | addFunctionUrl | Adds a url to this lambda function. | | addPermission | Adds a permission to the Lambda resource policy. | | addToRolePolicy | Adds a statement to the IAM role assumed by the instance. | | configureAsyncInvoke | Configures options for asynchronous invocation. | | considerWarningOnInvokeFunctionPermissions | A warning will be added to functions under the following conditions: - permissions that include `lambda:InvokeFunction` are added to the unqualified function. | | grantInvoke | Grant the given identity permissions to invoke this Lambda. | | grantInvokeCompositePrincipal | Grant multiple principals the ability to invoke this Lambda via CompositePrincipal. | | grantInvokeLatestVersion | Grant the given identity permissions to invoke the $LATEST version or unqualified version of this Lambda. | | grantInvokeUrl | Grant the given identity permissions to invoke this Lambda Function URL. | | grantInvokeVersion | Grant the given identity permissions to invoke the given version of this Lambda. | | metric | Return the given named metric for this Function. | | metricDuration | How long execution of this Lambda takes. | | metricErrors | How many invocations of this Lambda fail. | | metricInvocations | How often this Lambda is invoked. | | metricThrottles | How often this Lambda is throttled. | | addAlias | Defines an alias for this function. | | addEnvironment | Adds an environment variable to this Lambda function. | | addLayers | Adds one or more Lambda Layers to this Lambda function. | | invalidateVersionBasedOn | Mix additional information into the hash of the Version object. | --- ##### `toString` ```typescript public toString(): string ``` Returns a string representation of this construct. ##### `applyRemovalPolicy` ```typescript public applyRemovalPolicy(policy: RemovalPolicy): void ``` Apply the given removal policy to this resource. The Removal Policy controls what happens to this resource when it stops being managed by CloudFormation, either because you've removed it from the CDK application or because you've made a change that requires the resource to be replaced. The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). ###### `policy`Required - *Type:* aws-cdk-lib.RemovalPolicy --- ##### `addEventSource` ```typescript public addEventSource(source: IEventSource): void ``` Adds an event source to this function. Event sources are implemented in the aws-cdk-lib/aws-lambda-event-sources module. The following example adds an SQS Queue as an event source: ``` import { SqsEventSource } from 'aws-cdk-lib/aws-lambda-event-sources'; myFunction.addEventSource(new SqsEventSource(myQueue)); ``` ###### `source`Required - *Type:* aws-cdk-lib.aws_lambda.IEventSource --- ##### `addEventSourceMapping` ```typescript public addEventSourceMapping(id: string, options: EventSourceMappingOptions): EventSourceMapping ``` Adds an event source that maps to this AWS Lambda function. ###### `id`Required - *Type:* string --- ###### `options`Required - *Type:* aws-cdk-lib.aws_lambda.EventSourceMappingOptions --- ##### `addFunctionUrl` ```typescript public addFunctionUrl(options?: FunctionUrlOptions): FunctionUrl ``` Adds a url to this lambda function. ###### `options`Optional - *Type:* aws-cdk-lib.aws_lambda.FunctionUrlOptions --- ##### `addPermission` ```typescript public addPermission(id: string, permission: Permission): void ``` Adds a permission to the Lambda resource policy. > [Permission for details.](Permission for details.) ###### `id`Required - *Type:* string The id for the permission construct. --- ###### `permission`Required - *Type:* aws-cdk-lib.aws_lambda.Permission The permission to grant to this Lambda function. --- ##### `addToRolePolicy` ```typescript public addToRolePolicy(statement: PolicyStatement): void ``` Adds a statement to the IAM role assumed by the instance. ###### `statement`Required - *Type:* aws-cdk-lib.aws_iam.PolicyStatement --- ##### `configureAsyncInvoke` ```typescript public configureAsyncInvoke(options: EventInvokeConfigOptions): void ``` Configures options for asynchronous invocation. ###### `options`Required - *Type:* aws-cdk-lib.aws_lambda.EventInvokeConfigOptions --- ##### `considerWarningOnInvokeFunctionPermissions` ```typescript public considerWarningOnInvokeFunctionPermissions(scope: Construct, action: string): void ``` A warning will be added to functions under the following conditions: - permissions that include `lambda:InvokeFunction` are added to the unqualified function. function.currentVersion is invoked before or after the permission is created. This applies only to permissions on Lambda functions, not versions or aliases. This function is overridden as a noOp for QualifiedFunctionBase. ###### `scope`Required - *Type:* constructs.Construct --- ###### `action`Required - *Type:* string --- ##### `grantInvoke` ```typescript public grantInvoke(grantee: IGrantable): Grant ``` Grant the given identity permissions to invoke this Lambda. ###### `grantee`Required - *Type:* aws-cdk-lib.aws_iam.IGrantable --- ##### `grantInvokeCompositePrincipal` ```typescript public grantInvokeCompositePrincipal(compositePrincipal: CompositePrincipal): Grant[] ``` Grant multiple principals the ability to invoke this Lambda via CompositePrincipal. ###### `compositePrincipal`Required - *Type:* aws-cdk-lib.aws_iam.CompositePrincipal --- ##### `grantInvokeLatestVersion` ```typescript public grantInvokeLatestVersion(grantee: IGrantable): Grant ``` Grant the given identity permissions to invoke the $LATEST version or unqualified version of this Lambda. ###### `grantee`Required - *Type:* aws-cdk-lib.aws_iam.IGrantable --- ##### `grantInvokeUrl` ```typescript public grantInvokeUrl(grantee: IGrantable): Grant ``` Grant the given identity permissions to invoke this Lambda Function URL. ###### `grantee`Required - *Type:* aws-cdk-lib.aws_iam.IGrantable --- ##### `grantInvokeVersion` ```typescript public grantInvokeVersion(grantee: IGrantable, version: IVersion): Grant ``` Grant the given identity permissions to invoke the given version of this Lambda. ###### `grantee`Required - *Type:* aws-cdk-lib.aws_iam.IGrantable --- ###### `version`Required - *Type:* aws-cdk-lib.aws_lambda.IVersion --- ##### `metric` ```typescript public metric(metricName: string, props?: MetricOptions): Metric ``` Return the given named metric for this Function. ###### `metricName`Required - *Type:* string --- ###### `props`Optional - *Type:* aws-cdk-lib.aws_cloudwatch.MetricOptions --- ##### `metricDuration` ```typescript public metricDuration(props?: MetricOptions): Metric ``` How long execution of this Lambda takes. Average over 5 minutes ###### `props`Optional - *Type:* aws-cdk-lib.aws_cloudwatch.MetricOptions --- ##### `metricErrors` ```typescript public metricErrors(props?: MetricOptions): Metric ``` How many invocations of this Lambda fail. Sum over 5 minutes ###### `props`Optional - *Type:* aws-cdk-lib.aws_cloudwatch.MetricOptions --- ##### `metricInvocations` ```typescript public metricInvocations(props?: MetricOptions): Metric ``` How often this Lambda is invoked. Sum over 5 minutes ###### `props`Optional - *Type:* aws-cdk-lib.aws_cloudwatch.MetricOptions --- ##### `metricThrottles` ```typescript public metricThrottles(props?: MetricOptions): Metric ``` How often this Lambda is throttled. Sum over 5 minutes ###### `props`Optional - *Type:* aws-cdk-lib.aws_cloudwatch.MetricOptions --- ##### `addAlias` ```typescript public addAlias(aliasName: string, options?: AliasOptions): Alias ``` Defines an alias for this function. The alias will automatically be updated to point to the latest version of the function as it is being updated during a deployment. ```ts declare const fn: lambda.Function; fn.addAlias('Live'); // Is equivalent to new lambda.Alias(this, 'AliasLive', { aliasName: 'Live', version: fn.currentVersion, }); ``` ###### `aliasName`Required - *Type:* string The name of the alias. --- ###### `options`Optional - *Type:* aws-cdk-lib.aws_lambda.AliasOptions Alias options. --- ##### `addEnvironment` ```typescript public addEnvironment(key: string, value: string, options?: EnvironmentOptions): Function ``` Adds an environment variable to this Lambda function. If this is a ref to a Lambda function, this operation results in a no-op. ###### `key`Required - *Type:* string The environment variable key. --- ###### `value`Required - *Type:* string The environment variable's value. --- ###### `options`Optional - *Type:* aws-cdk-lib.aws_lambda.EnvironmentOptions Environment variable options. --- ##### `addLayers` ```typescript public addLayers(layers: ...ILayerVersion[]): void ``` Adds one or more Lambda Layers to this Lambda function. ###### `layers`Required - *Type:* ...aws-cdk-lib.aws_lambda.ILayerVersion[] the layers to be added. --- ##### `invalidateVersionBasedOn` ```typescript public invalidateVersionBasedOn(x: string): void ``` Mix additional information into the hash of the Version object. The Lambda Function construct does its best to automatically create a new Version when anything about the Function changes (its code, its layers, any of the other properties). However, you can sometimes source information from places that the CDK cannot look into, like the deploy-time values of SSM parameters. In those cases, the CDK would not force the creation of a new Version object when it actually should. This method can be used to invalidate the current Version object. Pass in any string into this method, and make sure the string changes when you know a new Version needs to be created. This method may be called more than once. ###### `x`Required - *Type:* string --- #### Static Functions | **Name** | **Description** | | --- | --- | | isConstruct | Checks if `x` is a construct. | | isOwnedResource | Returns true if the construct was created by CDK, and false otherwise. | | isResource | Check whether the given construct is a Resource. | | classifyVersionProperty | Record whether specific properties in the `AWS::Lambda::Function` resource should also be associated to the Version resource. | | fromFunctionArn | Import a lambda function into the CDK using its ARN. | | fromFunctionAttributes | Creates a Lambda function object which represents a function not defined within this stack. | | fromFunctionName | Import a lambda function into the CDK using its name. | | metricAll | Return the given named metric for this Lambda. | | metricAllConcurrentExecutions | Metric for the number of concurrent executions across all Lambdas. | | metricAllDuration | Metric for the Duration executing all Lambdas. | | metricAllErrors | Metric for the number of Errors executing all Lambdas. | | metricAllInvocations | Metric for the number of invocations of all Lambdas. | | metricAllThrottles | Metric for the number of throttled invocations of all Lambdas. | | metricAllUnreservedConcurrentExecutions | Metric for the number of unreserved concurrent executions across all Lambdas. | --- ##### ~~`isConstruct`~~ ```typescript import { RustFunction } from 'cargo-lambda-cdk' RustFunction.isConstruct(x: any) ``` Checks if `x` is a construct. ###### `x`Required - *Type:* any Any object. --- ##### `isOwnedResource` ```typescript import { RustFunction } from 'cargo-lambda-cdk' RustFunction.isOwnedResource(construct: IConstruct) ``` Returns true if the construct was created by CDK, and false otherwise. ###### `construct`Required - *Type:* constructs.IConstruct --- ##### `isResource` ```typescript import { RustFunction } from 'cargo-lambda-cdk' RustFunction.isResource(construct: IConstruct) ``` Check whether the given construct is a Resource. ###### `construct`Required - *Type:* constructs.IConstruct --- ##### `classifyVersionProperty` ```typescript import { RustFunction } from 'cargo-lambda-cdk' RustFunction.classifyVersionProperty(propertyName: string, locked: boolean) ``` Record whether specific properties in the `AWS::Lambda::Function` resource should also be associated to the Version resource. See 'currentVersion' section in the module README for more details. ###### `propertyName`Required - *Type:* string The property to classify. --- ###### `locked`Required - *Type:* boolean whether the property should be associated to the version or not. --- ##### `fromFunctionArn` ```typescript import { RustFunction } from 'cargo-lambda-cdk' RustFunction.fromFunctionArn(scope: Construct, id: string, functionArn: string) ``` Import a lambda function into the CDK using its ARN. For `Function.addPermissions()` to work on this imported lambda, make sure that is in the same account and region as the stack you are importing it into. ###### `scope`Required - *Type:* constructs.Construct --- ###### `id`Required - *Type:* string --- ###### `functionArn`Required - *Type:* string --- ##### `fromFunctionAttributes` ```typescript import { RustFunction } from 'cargo-lambda-cdk' RustFunction.fromFunctionAttributes(scope: Construct, id: string, attrs: FunctionAttributes) ``` Creates a Lambda function object which represents a function not defined within this stack. For `Function.addPermissions()` to work on this imported lambda, set the sameEnvironment property to true if this imported lambda is in the same account and region as the stack you are importing it into. ###### `scope`Required - *Type:* constructs.Construct The parent construct. --- ###### `id`Required - *Type:* string The name of the lambda construct. --- ###### `attrs`Required - *Type:* aws-cdk-lib.aws_lambda.FunctionAttributes the attributes of the function to import. --- ##### `fromFunctionName` ```typescript import { RustFunction } from 'cargo-lambda-cdk' RustFunction.fromFunctionName(scope: Construct, id: string, functionName: string) ``` Import a lambda function into the CDK using its name. ###### `scope`Required - *Type:* constructs.Construct --- ###### `id`Required - *Type:* string --- ###### `functionName`Required - *Type:* string --- ##### `metricAll` ```typescript import { RustFunction } from 'cargo-lambda-cdk' RustFunction.metricAll(metricName: string, props?: MetricOptions) ``` Return the given named metric for this Lambda. ###### `metricName`Required - *Type:* string --- ###### `props`Optional - *Type:* aws-cdk-lib.aws_cloudwatch.MetricOptions --- ##### `metricAllConcurrentExecutions` ```typescript import { RustFunction } from 'cargo-lambda-cdk' RustFunction.metricAllConcurrentExecutions(props?: MetricOptions) ``` Metric for the number of concurrent executions across all Lambdas. ###### `props`Optional - *Type:* aws-cdk-lib.aws_cloudwatch.MetricOptions --- ##### `metricAllDuration` ```typescript import { RustFunction } from 'cargo-lambda-cdk' RustFunction.metricAllDuration(props?: MetricOptions) ``` Metric for the Duration executing all Lambdas. ###### `props`Optional - *Type:* aws-cdk-lib.aws_cloudwatch.MetricOptions --- ##### `metricAllErrors` ```typescript import { RustFunction } from 'cargo-lambda-cdk' RustFunction.metricAllErrors(props?: MetricOptions) ``` Metric for the number of Errors executing all Lambdas. ###### `props`Optional - *Type:* aws-cdk-lib.aws_cloudwatch.MetricOptions --- ##### `metricAllInvocations` ```typescript import { RustFunction } from 'cargo-lambda-cdk' RustFunction.metricAllInvocations(props?: MetricOptions) ``` Metric for the number of invocations of all Lambdas. ###### `props`Optional - *Type:* aws-cdk-lib.aws_cloudwatch.MetricOptions --- ##### `metricAllThrottles` ```typescript import { RustFunction } from 'cargo-lambda-cdk' RustFunction.metricAllThrottles(props?: MetricOptions) ``` Metric for the number of throttled invocations of all Lambdas. ###### `props`Optional - *Type:* aws-cdk-lib.aws_cloudwatch.MetricOptions --- ##### `metricAllUnreservedConcurrentExecutions` ```typescript import { RustFunction } from 'cargo-lambda-cdk' RustFunction.metricAllUnreservedConcurrentExecutions(props?: MetricOptions) ``` Metric for the number of unreserved concurrent executions across all Lambdas. ###### `props`Optional - *Type:* aws-cdk-lib.aws_cloudwatch.MetricOptions --- #### Properties | **Name** | **Type** | **Description** | | --- | --- | --- | | node | constructs.Node | The tree node. | | env | aws-cdk-lib.interfaces.ResourceEnvironment | The environment this resource belongs to. | | stack | aws-cdk-lib.Stack | The stack in which this resource is defined. | | architecture | aws-cdk-lib.aws_lambda.Architecture | The architecture of this Lambda Function (this is an optional attribute and defaults to X86_64). | | connections | aws-cdk-lib.aws_ec2.Connections | Access the Connections object. | | functionArn | string | ARN of this function. | | functionName | string | Name of this function. | | functionRef | aws-cdk-lib.interfaces.aws_lambda.FunctionReference | A reference to a Function resource. | | grantPrincipal | aws-cdk-lib.aws_iam.IPrincipal | The principal this Lambda Function is running as. | | isBoundToVpc | boolean | Whether or not this Lambda function was bound to a VPC. | | latestVersion | aws-cdk-lib.aws_lambda.IVersion | The `$LATEST` version of this function. | | permissionsNode | constructs.Node | The construct node where permissions are attached. | | resourceArnsForGrantInvoke | string[] | The ARN(s) to put into the resource field of the generated IAM policy for grantInvoke(). | | role | aws-cdk-lib.aws_iam.IRole | Execution role associated with this function. | | tenancyConfig | aws-cdk-lib.aws_lambda.TenancyConfig | The tenancy configuration for this function. | | currentVersion | aws-cdk-lib.aws_lambda.Version | Returns a `lambda.Version` which represents the current version of this Lambda function. A new version will be created every time the function's configuration changes. | | logGroup | aws-cdk-lib.aws_logs.ILogGroup | The LogGroup where the Lambda function's logs are made available. | | runtime | aws-cdk-lib.aws_lambda.Runtime | The runtime configured for this lambda. | | deadLetterQueue | aws-cdk-lib.aws_sqs.IQueue | The DLQ (as queue) associated with this Lambda Function (this is an optional attribute). | | deadLetterTopic | aws-cdk-lib.aws_sns.ITopic | The DLQ (as topic) associated with this Lambda Function (this is an optional attribute). | | timeout | aws-cdk-lib.Duration | The timeout configured for this lambda. | --- ##### `node`Required ```typescript public readonly node: Node; ``` - *Type:* constructs.Node The tree node. --- ##### `env`Required ```typescript public readonly env: ResourceEnvironment; ``` - *Type:* aws-cdk-lib.interfaces.ResourceEnvironment The environment this resource belongs to. For resources that are created and managed in a Stack (those created by creating new class instances like `new Role()`, `new Bucket()`, etc.), this is always the same as the environment of the stack they belong to. For referenced resources (those obtained from referencing methods like `Role.fromRoleArn()`, `Bucket.fromBucketName()`, etc.), they might be different than the stack they were imported into. --- ##### `stack`Required ```typescript public readonly stack: Stack; ``` - *Type:* aws-cdk-lib.Stack The stack in which this resource is defined. --- ##### `architecture`Required ```typescript public readonly architecture: Architecture; ``` - *Type:* aws-cdk-lib.aws_lambda.Architecture The architecture of this Lambda Function (this is an optional attribute and defaults to X86_64). --- ##### `connections`Required ```typescript public readonly connections: Connections; ``` - *Type:* aws-cdk-lib.aws_ec2.Connections Access the Connections object. Will fail if not a VPC-enabled Lambda Function --- ##### `functionArn`Required ```typescript public readonly functionArn: string; ``` - *Type:* string ARN of this function. --- ##### `functionName`Required ```typescript public readonly functionName: string; ``` - *Type:* string Name of this function. --- ##### `functionRef`Required ```typescript public readonly functionRef: FunctionReference; ``` - *Type:* aws-cdk-lib.interfaces.aws_lambda.FunctionReference A reference to a Function resource. --- ##### `grantPrincipal`Required ```typescript public readonly grantPrincipal: IPrincipal; ``` - *Type:* aws-cdk-lib.aws_iam.IPrincipal The principal this Lambda Function is running as. --- ##### `isBoundToVpc`Required ```typescript public readonly isBoundToVpc: boolean; ``` - *Type:* boolean Whether or not this Lambda function was bound to a VPC. If this is is `false`, trying to access the `connections` object will fail. --- ##### `latestVersion`Required ```typescript public readonly latestVersion: IVersion; ``` - *Type:* aws-cdk-lib.aws_lambda.IVersion The `$LATEST` version of this function. Note that this is reference to a non-specific AWS Lambda version, which means the function this version refers to can return different results in different invocations. To obtain a reference to an explicit version which references the current function configuration, use `lambdaFunction.currentVersion` instead. --- ##### `permissionsNode`Required ```typescript public readonly permissionsNode: Node; ``` - *Type:* constructs.Node The construct node where permissions are attached. --- ##### `resourceArnsForGrantInvoke`Required ```typescript public readonly resourceArnsForGrantInvoke: string[]; ``` - *Type:* string[] The ARN(s) to put into the resource field of the generated IAM policy for grantInvoke(). --- ##### `role`Optional ```typescript public readonly role: IRole; ``` - *Type:* aws-cdk-lib.aws_iam.IRole Execution role associated with this function. --- ##### `tenancyConfig`Optional ```typescript public readonly tenancyConfig: TenancyConfig; ``` - *Type:* aws-cdk-lib.aws_lambda.TenancyConfig The tenancy configuration for this function. --- ##### `currentVersion`Required ```typescript public readonly currentVersion: Version; ``` - *Type:* aws-cdk-lib.aws_lambda.Version Returns a `lambda.Version` which represents the current version of this Lambda function. A new version will be created every time the function's configuration changes. You can specify options for this version using the `currentVersionOptions` prop when initializing the `lambda.Function`. --- ##### `logGroup`Required ```typescript public readonly logGroup: ILogGroup; ``` - *Type:* aws-cdk-lib.aws_logs.ILogGroup The LogGroup where the Lambda function's logs are made available. If either `logRetention` is set or this property is called, a CloudFormation custom resource is added to the stack that pre-creates the log group as part of the stack deployment, if it already doesn't exist, and sets the correct log retention period (never expire, by default). Further, if the log group already exists and the `logRetention` is not set, the custom resource will reset the log retention to never expire even if it was configured with a different value. --- ##### `runtime`Required ```typescript public readonly runtime: Runtime; ``` - *Type:* aws-cdk-lib.aws_lambda.Runtime The runtime configured for this lambda. --- ##### `deadLetterQueue`Optional ```typescript public readonly deadLetterQueue: IQueue; ``` - *Type:* aws-cdk-lib.aws_sqs.IQueue The DLQ (as queue) associated with this Lambda Function (this is an optional attribute). --- ##### `deadLetterTopic`Optional ```typescript public readonly deadLetterTopic: ITopic; ``` - *Type:* aws-cdk-lib.aws_sns.ITopic The DLQ (as topic) associated with this Lambda Function (this is an optional attribute). --- ##### `timeout`Optional ```typescript public readonly timeout: Duration; ``` - *Type:* aws-cdk-lib.Duration The timeout configured for this lambda. --- #### Constants | **Name** | **Type** | **Description** | | --- | --- | --- | | PROPERTY_INJECTION_ID | string | Uniquely identifies this class. | --- ##### `PROPERTY_INJECTION_ID`Required ```typescript public readonly PROPERTY_INJECTION_ID: string; ``` - *Type:* string Uniquely identifies this class. --- ## Structs ### BundlingOptions Bundling options. #### Initializer ```typescript import { BundlingOptions } from 'cargo-lambda-cdk' const bundlingOptions: BundlingOptions = { ... } ``` #### Properties | **Name** | **Type** | **Description** | | --- | --- | --- | | architecture | aws-cdk-lib.aws_lambda.Architecture | The system architecture of the lambda function. | | assetHash | string | Specify a custom hash for this asset. | | assetHashType | aws-cdk-lib.AssetHashType | Determines how the asset hash is calculated. | | cargoLambdaFlags | string[] | Additional list of flags to pass to `cargo lambda build`. | | commandHooks | ICommandHooks | Command hooks. | | dockerImage | aws-cdk-lib.DockerImage | A custom bundling Docker image. | | dockerOptions | DockerOptions | Additional options when using docker bundling. | | environment | {[ key: string ]: string} | Environment variables defined when Cargo runs. | | forcedDockerBundling | boolean | Force bundling in a Docker container even if local bundling is possible. | | profile | string | Specify the Cargo Build profile to use. | --- ##### `architecture`Optional ```typescript public readonly architecture: Architecture; ``` - *Type:* aws-cdk-lib.aws_lambda.Architecture - *Default:* X86_64 The system architecture of the lambda function. --- ##### `assetHash`Optional ```typescript public readonly assetHash: string; ``` - *Type:* string - *Default:* based on `assetHashType` Specify a custom hash for this asset. If `assetHashType` is set it must be set to `AssetHashType.CUSTOM`. For consistency, this custom hash will be SHA256 hashed and encoded as hex. The resulting hash will be the asset hash. NOTE: the hash is used in order to identify a specific revision of the asset, and used for optimizing and caching deployment activities related to this asset such as packaging, uploading to Amazon S3, etc. If you chose to customize the hash, you will need to make sure it is updated every time the asset changes, or otherwise it is possible that some deployments will not be invalidated. --- ##### `assetHashType`Optional ```typescript public readonly assetHashType: AssetHashType; ``` - *Type:* aws-cdk-lib.AssetHashType - *Default:* AssetHashType.OUTPUT. If `assetHash` is also specified, the default is `CUSTOM`. Determines how the asset hash is calculated. Assets will get rebuilt and uploaded only if their hash has changed. --- ##### `cargoLambdaFlags`Optional ```typescript public readonly cargoLambdaFlags: string[]; ``` - *Type:* string[] Additional list of flags to pass to `cargo lambda build`. --- ##### `commandHooks`Optional ```typescript public readonly commandHooks: ICommandHooks; ``` - *Type:* ICommandHooks - *Default:* do not run additional commands Command hooks. --- ##### `dockerImage`Optional ```typescript public readonly dockerImage: DockerImage; ``` - *Type:* aws-cdk-lib.DockerImage - *Default:* use the Docker image provided by calavera/cargo-lambda:latest A custom bundling Docker image. --- ##### `dockerOptions`Optional ```typescript public readonly dockerOptions: DockerOptions; ``` - *Type:* DockerOptions - *Default:* the same defaults as specified by `cdk.BundlingOptions` Additional options when using docker bundling. --- ##### `environment`Optional ```typescript public readonly environment: {[ key: string ]: string}; ``` - *Type:* {[ key: string ]: string} - *Default:* no environment variables are defined. Environment variables defined when Cargo runs. --- ##### `forcedDockerBundling`Optional ```typescript public readonly forcedDockerBundling: boolean; ``` - *Type:* boolean - *Default:* false Force bundling in a Docker container even if local bundling is possible. --- ##### `profile`Optional ```typescript public readonly profile: string; ``` - *Type:* string - *Default:* `release` Specify the Cargo Build profile to use. --- ### DockerOptions Additional docker options when using docker bundling. Default values here inherit from `cdk.BundlingOptions`. #### Initializer ```typescript import { DockerOptions } from 'cargo-lambda-cdk' const dockerOptions: DockerOptions = { ... } ``` #### Properties | **Name** | **Type** | **Description** | | --- | --- | --- | | bundlingFileAccess | aws-cdk-lib.BundlingFileAccess | The access mechanism used to make source files available to the bundling container and to return the bundling output back to the host. | | command | string[] | The command to run in the Docker container. | | entrypoint | string[] | The entrypoint to run in the Docker container. | | local | aws-cdk-lib.ILocalBundling | Local bundling provider. | | network | string | Docker [Networking options](https://docs.docker.com/engine/reference/commandline/run/#connect-a-container-to-a-network---network). | | outputType | aws-cdk-lib.BundlingOutput | The type of output that this bundling operation is producing. | | securityOpt | string | [Security configuration](https://docs.docker.com/engine/reference/run/#security-configuration) when running the docker container. | | user | string | The user to use when running the Docker container. | | volumes | aws-cdk-lib.DockerVolume[] | Additional Docker volumes to mount. | | volumesFrom | string[] | Where to mount the specified volumes from. | | workingDirectory | string | Working directory inside the Docker container. | --- ##### `bundlingFileAccess`Optional ```typescript public readonly bundlingFileAccess: BundlingFileAccess; ``` - *Type:* aws-cdk-lib.BundlingFileAccess - *Default:* BundlingFileAccess.BIND_MOUNT The access mechanism used to make source files available to the bundling container and to return the bundling output back to the host. --- ##### `command`Optional ```typescript public readonly command: string[]; ``` - *Type:* string[] - *Default:* a cargo lambda compilation The command to run in the Docker container. This is normally controlled by the `RustFunction` but can be overridden here. --- ##### `entrypoint`Optional ```typescript public readonly entrypoint: string[]; ``` - *Type:* string[] - *Default:* run the entrypoint defined in the image The entrypoint to run in the Docker container. > [https://docs.docker.com/engine/reference/builder/#entrypoint](https://docs.docker.com/engine/reference/builder/#entrypoint) --- ##### `local`Optional ```typescript public readonly local: ILocalBundling; ``` - *Type:* aws-cdk-lib.ILocalBundling - *Default:* bundling will be performed locally if Rust and cargo-lambda are installed and `forcedDockerBundling` is not true, otherwise it will be performed in the docker container Local bundling provider. This is normally controlled by the `RustFunction` but can be overridden here. --- ##### `network`Optional ```typescript public readonly network: string; ``` - *Type:* string - *Default:* no networking options Docker [Networking options](https://docs.docker.com/engine/reference/commandline/run/#connect-a-container-to-a-network---network). --- ##### `outputType`Optional ```typescript public readonly outputType: BundlingOutput; ``` - *Type:* aws-cdk-lib.BundlingOutput - *Default:* BundlingOutput.AUTO_DISCOVER The type of output that this bundling operation is producing. --- ##### `securityOpt`Optional ```typescript public readonly securityOpt: string; ``` - *Type:* string - *Default:* no security options [Security configuration](https://docs.docker.com/engine/reference/run/#security-configuration) when running the docker container. --- ##### `user`Optional ```typescript public readonly user: string; ``` - *Type:* string - *Default:* uid:gid of the current user or 1000:1000 on Windows The user to use when running the Docker container. user | user:group | uid | uid:gid | user:gid | uid:group > [https://docs.docker.com/engine/reference/run/#user](https://docs.docker.com/engine/reference/run/#user) --- ##### `volumes`Optional ```typescript public readonly volumes: DockerVolume[]; ``` - *Type:* aws-cdk-lib.DockerVolume[] - *Default:* no additional volumes are mounted Additional Docker volumes to mount. --- ##### `volumesFrom`Optional ```typescript public readonly volumesFrom: string[]; ``` - *Type:* string[] - *Default:* no containers are specified to mount volumes from Where to mount the specified volumes from. > [https://docs.docker.com/engine/reference/commandline/run/#mount-volumes-from-container---volumes-from](https://docs.docker.com/engine/reference/commandline/run/#mount-volumes-from-container---volumes-from) --- ##### `workingDirectory`Optional ```typescript public readonly workingDirectory: string; ``` - *Type:* string - *Default:* /asset-input Working directory inside the Docker container. --- ### RustExtensionProps Properties for a RustExtension. #### Initializer ```typescript import { RustExtensionProps } from 'cargo-lambda-cdk' const rustExtensionProps: RustExtensionProps = { ... } ``` #### Properties | **Name** | **Type** | **Description** | | --- | --- | --- | | description | string | The description the this Lambda Layer. | | layerVersionName | string | The name of the layer. | | license | string | The SPDX licence identifier or URL to the license file for this layer. | | removalPolicy | aws-cdk-lib.RemovalPolicy | Whether to retain this version of the layer when a new version is added or when the stack is deleted. | | architecture | aws-cdk-lib.aws_lambda.Architecture | The system architecture of the lambda extension. | | binaryName | string | The name of the binary to build, in case that's different than the package's name. | | bundling | BundlingOptions | Bundling options. | | gitForceClone | boolean | Always clone the repository if using the `gitRemote` option, even if it has already been cloned to the temporary directory. | | gitReference | string | The git reference to checkout. This can be a branch, tag, or commit hash. | | gitRemote | string | The git remote URL to clone (e.g `https://github.com/your_user/your_repo`). | | manifestPath | string | Path to a directory containing your Cargo.toml file, or to your Cargo.toml directly. | --- ##### `description`Optional ```typescript public readonly description: string; ``` - *Type:* string - *Default:* No description. The description the this Lambda Layer. --- ##### `layerVersionName`Optional ```typescript public readonly layerVersionName: string; ``` - *Type:* string - *Default:* A name will be generated. The name of the layer. --- ##### `license`Optional ```typescript public readonly license: string; ``` - *Type:* string - *Default:* No license information will be recorded. The SPDX licence identifier or URL to the license file for this layer. --- ##### `removalPolicy`Optional ```typescript public readonly removalPolicy: RemovalPolicy; ``` - *Type:* aws-cdk-lib.RemovalPolicy - *Default:* RemovalPolicy.DESTROY Whether to retain this version of the layer when a new version is added or when the stack is deleted. --- ##### `architecture`Optional ```typescript public readonly architecture: Architecture; ``` - *Type:* aws-cdk-lib.aws_lambda.Architecture - *Default:* Architecture.X86_64 The system architecture of the lambda extension. --- ##### `binaryName`Optional ```typescript public readonly binaryName: string; ``` - *Type:* string The name of the binary to build, in case that's different than the package's name. --- ##### `bundling`Optional ```typescript public readonly bundling: BundlingOptions; ``` - *Type:* BundlingOptions - *Default:* use default bundling options Bundling options. --- ##### `gitForceClone`Optional ```typescript public readonly gitForceClone: boolean; ``` - *Type:* boolean - *Default:* clones only if the repository and reference don't already exist in the temporary directory. Always clone the repository if using the `gitRemote` option, even if it has already been cloned to the temporary directory. --- ##### `gitReference`Optional ```typescript public readonly gitReference: string; ``` - *Type:* string - *Default:* the default branch, i.e. HEAD. The git reference to checkout. This can be a branch, tag, or commit hash. If this option is not provided, `git clone` will run with the flag `--depth 1`. --- ##### `gitRemote`Optional ```typescript public readonly gitRemote: string; ``` - *Type:* string The git remote URL to clone (e.g `https://github.com/your_user/your_repo`). This repository will be cloned to a temporary directory using `git`. The `git` command must be available in the PATH. --- ##### `manifestPath`Optional ```typescript public readonly manifestPath: string; ``` - *Type:* string - *Default:* check the current directory for a `Cargo.toml` file, and throws an error if the file doesn't exist. Path to a directory containing your Cargo.toml file, or to your Cargo.toml directly. This will accept a directory path containing a `Cargo.toml` file (i.e. `path/to/package`), or a filepath to your `Cargo.toml` file (i.e. `path/to/Cargo.toml`). When the `gitRemote` option is provided, the `manifestPath` is relative to the root of the git repository. --- ### RustFunctionProps Properties for a RustFunction. #### Initializer ```typescript import { RustFunctionProps } from 'cargo-lambda-cdk' const rustFunctionProps: RustFunctionProps = { ... } ``` #### Properties | **Name** | **Type** | **Description** | | --- | --- | --- | | maxEventAge | aws-cdk-lib.Duration | The maximum age of a request that Lambda sends to a function for processing. | | onFailure | aws-cdk-lib.aws_lambda.IDestination | The destination for failed invocations. | | onSuccess | aws-cdk-lib.aws_lambda.IDestination | The destination for successful invocations. | | retryAttempts | number | The maximum number of times to retry when the function returns an error. | | adotInstrumentation | aws-cdk-lib.aws_lambda.AdotInstrumentationConfig | Specify the configuration of AWS Distro for OpenTelemetry (ADOT) instrumentation. | | allowAllIpv6Outbound | boolean | Whether to allow the Lambda to send all ipv6 network traffic. | | allowAllOutbound | boolean | Whether to allow the Lambda to send all network traffic (except ipv6). | | allowPublicSubnet | boolean | Lambda Functions in a public subnet can NOT access the internet. | | applicationLogLevel | string | Sets the application log level for the function. | | applicationLogLevelV2 | aws-cdk-lib.aws_lambda.ApplicationLogLevel | Sets the application log level for the function. | | architecture | aws-cdk-lib.aws_lambda.Architecture | The system architectures compatible with this lambda function. | | codeSigningConfig | aws-cdk-lib.interfaces.aws_lambda.ICodeSigningConfigRef | Code signing config associated with this function. | | currentVersionOptions | aws-cdk-lib.aws_lambda.VersionOptions | Options for the `lambda.Version` resource automatically created by the `fn.currentVersion` method. | | deadLetterQueue | aws-cdk-lib.aws_sqs.IQueue | The SQS queue to use if DLQ is enabled. | | deadLetterQueueEnabled | boolean | Enabled DLQ. | | deadLetterTopic | aws-cdk-lib.aws_sns.ITopic | The SNS topic to use as a DLQ. | | description | string | A description of the function. | | environment | {[ key: string ]: string} | Key-value pairs that Lambda caches and makes available for your Lambda functions. | | environmentEncryption | aws-cdk-lib.interfaces.aws_kms.IKeyRef | The AWS KMS key that's used to encrypt your function's environment variables. | | ephemeralStorageSize | aws-cdk-lib.Size | The size of the function’s /tmp directory in MiB. | | events | aws-cdk-lib.aws_lambda.IEventSource[] | Event sources for this function. | | filesystem | aws-cdk-lib.aws_lambda.FileSystem | The filesystem configuration for the lambda function. | | functionName | string | A name for the function. | | initialPolicy | aws-cdk-lib.aws_iam.PolicyStatement[] | Initial policy statements to add to the created Lambda Role. | | insightsVersion | aws-cdk-lib.aws_lambda.LambdaInsightsVersion | Specify the version of CloudWatch Lambda insights to use for monitoring. | | ipv6AllowedForDualStack | boolean | Allows outbound IPv6 traffic on VPC functions that are connected to dual-stack subnets. | | layers | aws-cdk-lib.aws_lambda.ILayerVersion[] | A list of layers to add to the function's execution environment. | | logFormat | string | Sets the logFormat for the function. | | loggingFormat | aws-cdk-lib.aws_lambda.LoggingFormat | Sets the loggingFormat for the function. | | logGroup | aws-cdk-lib.aws_logs.ILogGroup | The log group the function sends logs to. | | logRemovalPolicy | aws-cdk-lib.RemovalPolicy | Determine the removal policy of the log group that is auto-created by this construct. | | logRetention | aws-cdk-lib.aws_logs.RetentionDays | The number of days log events are kept in CloudWatch Logs. | | logRetentionRetryOptions | aws-cdk-lib.aws_lambda.LogRetentionRetryOptions | When log retention is specified, a custom resource attempts to create the CloudWatch log group. | | logRetentionRole | aws-cdk-lib.aws_iam.IRole | The IAM role for the Lambda function associated with the custom resource that sets the retention policy. | | memorySize | number | The amount of memory, in MB, that is allocated to your Lambda function. | | paramsAndSecrets | aws-cdk-lib.aws_lambda.ParamsAndSecretsLayerVersion | Specify the configuration of Parameters and Secrets Extension. | | profiling | boolean | Enable profiling. | | profilingGroup | aws-cdk-lib.aws_codeguruprofiler.IProfilingGroup | Profiling Group. | | recursiveLoop | aws-cdk-lib.aws_lambda.RecursiveLoop | Sets the Recursive Loop Protection for Lambda Function. | | reservedConcurrentExecutions | number | The maximum of concurrent executions you want to reserve for the function. | | role | aws-cdk-lib.aws_iam.IRole | Lambda execution role. | | runtimeManagementMode | aws-cdk-lib.aws_lambda.RuntimeManagementMode | Sets the runtime management configuration for a function's version. | | securityGroups | aws-cdk-lib.aws_ec2.ISecurityGroup[] | The list of security groups to associate with the Lambda's network interfaces. | | snapStart | aws-cdk-lib.aws_lambda.SnapStartConf | Enable SnapStart for Lambda Function. | | systemLogLevel | string | Sets the system log level for the function. | | systemLogLevelV2 | aws-cdk-lib.aws_lambda.SystemLogLevel | Sets the system log level for the function. | | tenancyConfig | aws-cdk-lib.aws_lambda.TenancyConfig | The tenancy configuration for the function. | | timeout | aws-cdk-lib.Duration | The function execution time (in seconds) after which Lambda terminates the function. | | tracing | aws-cdk-lib.aws_lambda.Tracing | Enable AWS X-Ray Tracing for Lambda Function. | | vpc | aws-cdk-lib.aws_ec2.IVpc | VPC network to place Lambda network interfaces. | | vpcSubnets | aws-cdk-lib.aws_ec2.SubnetSelection | Where to place the network interfaces within the VPC. | | binaryName | string | The name of the binary to build, in case that's different than the package's name. | | bundling | BundlingOptions | Bundling options. | | gitForceClone | boolean | Always clone the repository if using the `gitRemote` option, even if it has already been cloned to the temporary directory. | | gitReference | string | The git reference to checkout. This can be a branch, tag, or commit hash. | | gitRemote | string | The git remote URL to clone (e.g `https://github.com/your_user/your_repo`). | | manifestPath | string | Path to a directory containing your Cargo.toml file, or to your Cargo.toml directly. | | runtime | string | The Lambda runtime to deploy this function. | --- ##### `maxEventAge`Optional ```typescript public readonly maxEventAge: Duration; ``` - *Type:* aws-cdk-lib.Duration - *Default:* Duration.hours(6) The maximum age of a request that Lambda sends to a function for processing. Minimum: 60 seconds Maximum: 6 hours --- ##### `onFailure`Optional ```typescript public readonly onFailure: IDestination; ``` - *Type:* aws-cdk-lib.aws_lambda.IDestination - *Default:* no destination The destination for failed invocations. --- ##### `onSuccess`Optional ```typescript public readonly onSuccess: IDestination; ``` - *Type:* aws-cdk-lib.aws_lambda.IDestination - *Default:* no destination The destination for successful invocations. --- ##### `retryAttempts`Optional ```typescript public readonly retryAttempts: number; ``` - *Type:* number - *Default:* 2 The maximum number of times to retry when the function returns an error. Minimum: 0 Maximum: 2 --- ##### `adotInstrumentation`Optional ```typescript public readonly adotInstrumentation: AdotInstrumentationConfig; ``` - *Type:* aws-cdk-lib.aws_lambda.AdotInstrumentationConfig - *Default:* No ADOT instrumentation Specify the configuration of AWS Distro for OpenTelemetry (ADOT) instrumentation. > [https://aws-otel.github.io/docs/getting-started/lambda](https://aws-otel.github.io/docs/getting-started/lambda) --- ##### `allowAllIpv6Outbound`Optional ```typescript public readonly allowAllIpv6Outbound: boolean; ``` - *Type:* boolean - *Default:* false Whether to allow the Lambda to send all ipv6 network traffic. If set to true, there will only be a single egress rule which allows all outbound ipv6 traffic. If set to false, you must individually add traffic rules to allow the Lambda to connect to network targets using ipv6. Do not specify this property if the `securityGroups` or `securityGroup` property is set. Instead, configure `allowAllIpv6Outbound` directly on the security group. --- ##### `allowAllOutbound`Optional ```typescript public readonly allowAllOutbound: boolean; ``` - *Type:* boolean - *Default:* true Whether to allow the Lambda to send all network traffic (except ipv6). If set to false, you must individually add traffic rules to allow the Lambda to connect to network targets. Do not specify this property if the `securityGroups` or `securityGroup` property is set. Instead, configure `allowAllOutbound` directly on the security group. --- ##### `allowPublicSubnet`Optional ```typescript public readonly allowPublicSubnet: boolean; ``` - *Type:* boolean - *Default:* false Lambda Functions in a public subnet can NOT access the internet. Use this property to acknowledge this limitation and still place the function in a public subnet. > [https://stackoverflow.com/questions/52992085/why-cant-an-aws-lambda-function-inside-a-public-subnet-in-a-vpc-connect-to-the/52994841#52994841](https://stackoverflow.com/questions/52992085/why-cant-an-aws-lambda-function-inside-a-public-subnet-in-a-vpc-connect-to-the/52994841#52994841) --- ##### ~~`applicationLogLevel`~~Optional - *Deprecated:* Use `applicationLogLevelV2` as a property instead. ```typescript public readonly applicationLogLevel: string; ``` - *Type:* string - *Default:* "INFO" Sets the application log level for the function. --- ##### `applicationLogLevelV2`Optional ```typescript public readonly applicationLogLevelV2: ApplicationLogLevel; ``` - *Type:* aws-cdk-lib.aws_lambda.ApplicationLogLevel - *Default:* ApplicationLogLevel.INFO Sets the application log level for the function. --- ##### `architecture`Optional ```typescript public readonly architecture: Architecture; ``` - *Type:* aws-cdk-lib.aws_lambda.Architecture - *Default:* Architecture.X86_64 The system architectures compatible with this lambda function. --- ##### `codeSigningConfig`Optional ```typescript public readonly codeSigningConfig: ICodeSigningConfigRef; ``` - *Type:* aws-cdk-lib.interfaces.aws_lambda.ICodeSigningConfigRef - *Default:* Not Sign the Code Code signing config associated with this function. --- ##### `currentVersionOptions`Optional ```typescript public readonly currentVersionOptions: VersionOptions; ``` - *Type:* aws-cdk-lib.aws_lambda.VersionOptions - *Default:* default options as described in `VersionOptions` Options for the `lambda.Version` resource automatically created by the `fn.currentVersion` method. --- ##### `deadLetterQueue`Optional ```typescript public readonly deadLetterQueue: IQueue; ``` - *Type:* aws-cdk-lib.aws_sqs.IQueue - *Default:* SQS queue with 14 day retention period if `deadLetterQueueEnabled` is `true` The SQS queue to use if DLQ is enabled. If SNS topic is desired, specify `deadLetterTopic` property instead. --- ##### `deadLetterQueueEnabled`Optional ```typescript public readonly deadLetterQueueEnabled: boolean; ``` - *Type:* boolean - *Default:* false unless `deadLetterQueue` is set, which implies DLQ is enabled. Enabled DLQ. If `deadLetterQueue` is undefined, an SQS queue with default options will be defined for your Function. --- ##### `deadLetterTopic`Optional ```typescript public readonly deadLetterTopic: ITopic; ``` - *Type:* aws-cdk-lib.aws_sns.ITopic - *Default:* no SNS topic The SNS topic to use as a DLQ. Note that if `deadLetterQueueEnabled` is set to `true`, an SQS queue will be created rather than an SNS topic. Using an SNS topic as a DLQ requires this property to be set explicitly. --- ##### `description`Optional ```typescript public readonly description: string; ``` - *Type:* string - *Default:* No description. A description of the function. --- ##### `environment`Optional ```typescript public readonly environment: {[ key: string ]: string}; ``` - *Type:* {[ key: string ]: string} - *Default:* No environment variables. Key-value pairs that Lambda caches and makes available for your Lambda functions. Use environment variables to apply configuration changes, such as test and production environment configurations, without changing your Lambda function source code. --- ##### `environmentEncryption`Optional ```typescript public readonly environmentEncryption: IKeyRef; ``` - *Type:* aws-cdk-lib.interfaces.aws_kms.IKeyRef - *Default:* AWS Lambda creates and uses an AWS managed customer master key (CMK). The AWS KMS key that's used to encrypt your function's environment variables. --- ##### `ephemeralStorageSize`Optional ```typescript public readonly ephemeralStorageSize: Size; ``` - *Type:* aws-cdk-lib.Size - *Default:* 512 MiB The size of the function’s /tmp directory in MiB. --- ##### `events`Optional ```typescript public readonly events: IEventSource[]; ``` - *Type:* aws-cdk-lib.aws_lambda.IEventSource[] - *Default:* No event sources. Event sources for this function. You can also add event sources using `addEventSource`. --- ##### `filesystem`Optional ```typescript public readonly filesystem: FileSystem; ``` - *Type:* aws-cdk-lib.aws_lambda.FileSystem - *Default:* will not mount any filesystem The filesystem configuration for the lambda function. --- ##### `functionName`Optional ```typescript public readonly functionName: string; ``` - *Type:* string - *Default:* AWS CloudFormation generates a unique physical ID and uses that ID for the function's name. For more information, see Name Type. A name for the function. --- ##### `initialPolicy`Optional ```typescript public readonly initialPolicy: PolicyStatement[]; ``` - *Type:* aws-cdk-lib.aws_iam.PolicyStatement[] - *Default:* No policy statements are added to the created Lambda role. Initial policy statements to add to the created Lambda Role. You can call `addToRolePolicy` to the created lambda to add statements post creation. --- ##### `insightsVersion`Optional ```typescript public readonly insightsVersion: LambdaInsightsVersion; ``` - *Type:* aws-cdk-lib.aws_lambda.LambdaInsightsVersion - *Default:* No Lambda Insights Specify the version of CloudWatch Lambda insights to use for monitoring. > [https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Lambda-Insights-Getting-Started-docker.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Lambda-Insights-Getting-Started-docker.html) --- ##### `ipv6AllowedForDualStack`Optional ```typescript public readonly ipv6AllowedForDualStack: boolean; ``` - *Type:* boolean - *Default:* false Allows outbound IPv6 traffic on VPC functions that are connected to dual-stack subnets. Only used if 'vpc' is supplied. --- ##### `layers`Optional ```typescript public readonly layers: ILayerVersion[]; ``` - *Type:* aws-cdk-lib.aws_lambda.ILayerVersion[] - *Default:* No layers. A list of layers to add to the function's execution environment. You can configure your Lambda function to pull in additional code during initialization in the form of layers. Layers are packages of libraries or other dependencies that can be used by multiple functions. --- ##### ~~`logFormat`~~Optional - *Deprecated:* Use `loggingFormat` as a property instead. ```typescript public readonly logFormat: string; ``` - *Type:* string - *Default:* "Text" Sets the logFormat for the function. --- ##### `loggingFormat`Optional ```typescript public readonly loggingFormat: LoggingFormat; ``` - *Type:* aws-cdk-lib.aws_lambda.LoggingFormat - *Default:* LoggingFormat.TEXT Sets the loggingFormat for the function. --- ##### `logGroup`Optional ```typescript public readonly logGroup: ILogGroup; ``` - *Type:* aws-cdk-lib.aws_logs.ILogGroup - *Default:* `/aws/lambda/${this.functionName}` - default log group created by Lambda The log group the function sends logs to. By default, Lambda functions send logs to an automatically created default log group named /aws/lambda/\. However you cannot change the properties of this auto-created log group using the AWS CDK, e.g. you cannot set a different log retention. Use the `logGroup` property to create a fully customizable LogGroup ahead of time, and instruct the Lambda function to send logs to it. Providing a user-controlled log group was rolled out to commercial regions on 2023-11-16. If you are deploying to another type of region, please check regional availability first. --- ##### ~~`logRemovalPolicy`~~Optional - *Deprecated:* use `logGroup` instead ```typescript public readonly logRemovalPolicy: RemovalPolicy; ``` - *Type:* aws-cdk-lib.RemovalPolicy - *Default:* RemovalPolicy.Retain Determine the removal policy of the log group that is auto-created by this construct. Normally you want to retain the log group so you can diagnose issues from logs even after a deployment that no longer includes the log group. In that case, use the normal date-based retention policy to age out your logs. --- ##### ~~`logRetention`~~Optional - *Deprecated:* use `logGroup` instead ```typescript public readonly logRetention: RetentionDays; ``` - *Type:* aws-cdk-lib.aws_logs.RetentionDays - *Default:* logs.RetentionDays.INFINITE The number of days log events are kept in CloudWatch Logs. When updating this property, unsetting it doesn't remove the log retention policy. To remove the retention policy, set the value to `INFINITE`. This is a legacy API and we strongly recommend you move away from it if you can. Instead create a fully customizable log group with `logs.LogGroup` and use the `logGroup` property to instruct the Lambda function to send logs to it. Migrating from `logRetention` to `logGroup` will cause the name of the log group to change. Users and code and referencing the name verbatim will have to adjust. In AWS CDK code, you can access the log group name directly from the LogGroup construct: ```ts import * as logs from 'aws-cdk-lib/aws-logs'; declare const myLogGroup: logs.LogGroup; myLogGroup.logGroupName; ``` --- ##### `logRetentionRetryOptions`Optional ```typescript public readonly logRetentionRetryOptions: LogRetentionRetryOptions; ``` - *Type:* aws-cdk-lib.aws_lambda.LogRetentionRetryOptions - *Default:* Default AWS SDK retry options. When log retention is specified, a custom resource attempts to create the CloudWatch log group. These options control the retry policy when interacting with CloudWatch APIs. This is a legacy API and we strongly recommend you migrate to `logGroup` if you can. `logGroup` allows you to create a fully customizable log group and instruct the Lambda function to send logs to it. --- ##### `logRetentionRole`Optional ```typescript public readonly logRetentionRole: IRole; ``` - *Type:* aws-cdk-lib.aws_iam.IRole - *Default:* A new role is created. The IAM role for the Lambda function associated with the custom resource that sets the retention policy. This is a legacy API and we strongly recommend you migrate to `logGroup` if you can. `logGroup` allows you to create a fully customizable log group and instruct the Lambda function to send logs to it. --- ##### `memorySize`Optional ```typescript public readonly memorySize: number; ``` - *Type:* number - *Default:* 128 The amount of memory, in MB, that is allocated to your Lambda function. Lambda uses this value to proportionally allocate the amount of CPU power. For more information, see Resource Model in the AWS Lambda Developer Guide. --- ##### `paramsAndSecrets`Optional ```typescript public readonly paramsAndSecrets: ParamsAndSecretsLayerVersion; ``` - *Type:* aws-cdk-lib.aws_lambda.ParamsAndSecretsLayerVersion - *Default:* No Parameters and Secrets Extension Specify the configuration of Parameters and Secrets Extension. > [https://docs.aws.amazon.com/systems-manager/latest/userguide/ps-integration-lambda-extensions.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/ps-integration-lambda-extensions.html) --- ##### `profiling`Optional ```typescript public readonly profiling: boolean; ``` - *Type:* boolean - *Default:* No profiling. Enable profiling. > [https://docs.aws.amazon.com/codeguru/latest/profiler-ug/setting-up-lambda.html](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/setting-up-lambda.html) --- ##### `profilingGroup`Optional ```typescript public readonly profilingGroup: IProfilingGroup; ``` - *Type:* aws-cdk-lib.aws_codeguruprofiler.IProfilingGroup - *Default:* A new profiling group will be created if `profiling` is set. Profiling Group. > [https://docs.aws.amazon.com/codeguru/latest/profiler-ug/setting-up-lambda.html](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/setting-up-lambda.html) --- ##### `recursiveLoop`Optional ```typescript public readonly recursiveLoop: RecursiveLoop; ``` - *Type:* aws-cdk-lib.aws_lambda.RecursiveLoop - *Default:* RecursiveLoop.Terminate Sets the Recursive Loop Protection for Lambda Function. It lets Lambda detect and terminate unintended recursive loops. --- ##### `reservedConcurrentExecutions`Optional ```typescript public readonly reservedConcurrentExecutions: number; ``` - *Type:* number - *Default:* No specific limit - account limit. The maximum of concurrent executions you want to reserve for the function. > [https://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html](https://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html) --- ##### `role`Optional ```typescript public readonly role: IRole; ``` - *Type:* aws-cdk-lib.aws_iam.IRole - *Default:* A unique role will be generated for this lambda function. Both supplied and generated roles can always be changed by calling `addToRolePolicy`. Lambda execution role. This is the role that will be assumed by the function upon execution. It controls the permissions that the function will have. The Role must be assumable by the 'lambda.amazonaws.com' service principal. The default Role automatically has permissions granted for Lambda execution. If you provide a Role, you must add the relevant AWS managed policies yourself. The relevant managed policies are "service-role/AWSLambdaBasicExecutionRole" and "service-role/AWSLambdaVPCAccessExecutionRole". --- ##### `runtimeManagementMode`Optional ```typescript public readonly runtimeManagementMode: RuntimeManagementMode; ``` - *Type:* aws-cdk-lib.aws_lambda.RuntimeManagementMode - *Default:* Auto Sets the runtime management configuration for a function's version. --- ##### `securityGroups`Optional ```typescript public readonly securityGroups: ISecurityGroup[]; ``` - *Type:* aws-cdk-lib.aws_ec2.ISecurityGroup[] - *Default:* If the function is placed within a VPC and a security group is not specified, either by this or securityGroup prop, a dedicated security group will be created for this function. The list of security groups to associate with the Lambda's network interfaces. Only used if 'vpc' is supplied. --- ##### `snapStart`Optional ```typescript public readonly snapStart: SnapStartConf; ``` - *Type:* aws-cdk-lib.aws_lambda.SnapStartConf - *Default:* No snapstart Enable SnapStart for Lambda Function. SnapStart is currently supported for Java 11, Java 17, Python 3.12, Python 3.13, and .NET 8 runtime --- ##### ~~`systemLogLevel`~~Optional - *Deprecated:* Use `systemLogLevelV2` as a property instead. ```typescript public readonly systemLogLevel: string; ``` - *Type:* string - *Default:* "INFO" Sets the system log level for the function. --- ##### `systemLogLevelV2`Optional ```typescript public readonly systemLogLevelV2: SystemLogLevel; ``` - *Type:* aws-cdk-lib.aws_lambda.SystemLogLevel - *Default:* SystemLogLevel.INFO Sets the system log level for the function. --- ##### `tenancyConfig`Optional ```typescript public readonly tenancyConfig: TenancyConfig; ``` - *Type:* aws-cdk-lib.aws_lambda.TenancyConfig - *Default:* Tenant isolation is not enabled The tenancy configuration for the function. --- ##### `timeout`Optional ```typescript public readonly timeout: Duration; ``` - *Type:* aws-cdk-lib.Duration - *Default:* Duration.seconds(3) The function execution time (in seconds) after which Lambda terminates the function. Because the execution time affects cost, set this value based on the function's expected execution time. --- ##### `tracing`Optional ```typescript public readonly tracing: Tracing; ``` - *Type:* aws-cdk-lib.aws_lambda.Tracing - *Default:* Tracing.Disabled Enable AWS X-Ray Tracing for Lambda Function. --- ##### `vpc`Optional ```typescript public readonly vpc: IVpc; ``` - *Type:* aws-cdk-lib.aws_ec2.IVpc - *Default:* Function is not placed within a VPC. VPC network to place Lambda network interfaces. Specify this if the Lambda function needs to access resources in a VPC. This is required when `vpcSubnets` is specified. --- ##### `vpcSubnets`Optional ```typescript public readonly vpcSubnets: SubnetSelection; ``` - *Type:* aws-cdk-lib.aws_ec2.SubnetSelection - *Default:* the Vpc default strategy if not specified Where to place the network interfaces within the VPC. This requires `vpc` to be specified in order for interfaces to actually be placed in the subnets. If `vpc` is not specify, this will raise an error. Note: Internet access for Lambda Functions requires a NAT Gateway, so picking public subnets is not allowed (unless `allowPublicSubnet` is set to `true`). --- ##### `binaryName`Optional ```typescript public readonly binaryName: string; ``` - *Type:* string The name of the binary to build, in case that's different than the package's name. --- ##### `bundling`Optional ```typescript public readonly bundling: BundlingOptions; ``` - *Type:* BundlingOptions - *Default:* use default bundling options Bundling options. --- ##### `gitForceClone`Optional ```typescript public readonly gitForceClone: boolean; ``` - *Type:* boolean - *Default:* clones only if the repository and reference don't already exist in the temporary directory. Always clone the repository if using the `gitRemote` option, even if it has already been cloned to the temporary directory. --- ##### `gitReference`Optional ```typescript public readonly gitReference: string; ``` - *Type:* string - *Default:* the default branch, i.e. HEAD. The git reference to checkout. This can be a branch, tag, or commit hash. If this option is not provided, `git clone` will run with the flag `--depth 1`. --- ##### `gitRemote`Optional ```typescript public readonly gitRemote: string; ``` - *Type:* string The git remote URL to clone (e.g `https://github.com/your_user/your_repo`). This repository will be cloned to a temporary directory using `git`. The `git` command must be available in the PATH. --- ##### `manifestPath`Optional ```typescript public readonly manifestPath: string; ``` - *Type:* string - *Default:* check the current directory for a `Cargo.toml` file, and throws an error if the file doesn't exist. Path to a directory containing your Cargo.toml file, or to your Cargo.toml directly. This will accept a directory path containing a `Cargo.toml` file (i.e. `path/to/package`), or a filepath to your `Cargo.toml` file (i.e. `path/to/Cargo.toml`). When the `gitRemote` option is provided, the `manifestPath` is relative to the root of the git repository. --- ##### `runtime`Optional ```typescript public readonly runtime: string; ``` - *Type:* string The Lambda runtime to deploy this function. `provided.al2023` is the default runtime when this option is not provided. --- ## Protocols ### ICommandHooks - *Implemented By:* ICommandHooks Command hooks. These commands will run in the environment in which bundling occurs: inside the container for Docker bundling or on the host OS for local bundling. Commands are chained with `&&`. ```text { // Run tests prior to bundling beforeBundling(inputDir: string, outputDir: string): string[] { return [`cargo test`]; } // ... } ``` #### Methods | **Name** | **Description** | | --- | --- | | afterBundling | Returns commands to run after bundling. | | beforeBundling | Returns commands to run before bundling. | --- ##### `afterBundling` ```typescript public afterBundling(inputDir: string, outputDir: string): string[] ``` Returns commands to run after bundling. Commands are chained with `&&`. ###### `inputDir`Required - *Type:* string --- ###### `outputDir`Required - *Type:* string --- ##### `beforeBundling` ```typescript public beforeBundling(inputDir: string, outputDir: string): string[] ``` Returns commands to run before bundling. Commands are chained with `&&`. ###### `inputDir`Required - *Type:* string --- ###### `outputDir`Required - *Type:* string ---