A pattern to create a Lambda triggered by API Gateway

See

https://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-with-lambda-integration.html

This pattern should be used if you intend to serve all traffic via a single Lambda (for example, if your Lambda uses an application framework, like https://github.com/vendia/serverless-express). If you need to configure path-based routing to serve different requests with different Lambdas, use the [[GuApiGatewayWithLambdaByPath]] pattern instead.

For all configuration options, see [[GuApiLambdaProps]].

Example usage:

new GuApiLambda(stack, "my-lambda", {
fileName: "my-app.zip",
handler: "handler.ts",
runtime: Runtime.NODEJS_14_X,
monitoringConfiguration: {
http5xxAlarm: { tolerated5xxPercentage: 5 },
snsTopicName: "alerts-topic",
},
app: "my-app",
api: {
id: "my-api",
description: "...",
},
});

Hierarchy

Constructors

Properties

_connections?: Connections

Actual connections object for this Lambda

May be unset, in which case this Lambda is not configured use in a VPC.

_functionUrlInvocationGrants: Record<string, Grant>

Mapping of fucntion URL invocation principals to grants. Used to de-dupe grantInvokeUrl() calls.

_invocationGrants: Record<string, Grant>

Mapping of invocation principals to grants. Used to de-dupe grantInvoke() calls.

_layers: ILayerVersion[]
_skipPermissions?: boolean

Whether the user decides to skip adding permissions. The only use case is for cross-account, imported lambdas where the user commits to modifying the permisssions on the imported lambda outside CDK.

_warnIfCurrentVersionCalled: boolean

Flag to delay adding a warning message until current version is invoked.

api: LambdaRestApi
app: string
architecture: Architecture

The architecture of this Lambda Function (this is an optional attribute and defaults to X86_64).

canCreatePermissions: true = true
deadLetterQueue?: IQueue

The DLQ (as queue) associated with this Lambda Function (this is an optional attribute).

deadLetterTopic?: ITopic

The DLQ (as topic) associated with this Lambda Function (this is an optional attribute).

env: ResourceEnvironment
fileName: string
functionArn: string

ARN of this function

functionName: string

Name of this function

grantPrincipal: IPrincipal

The principal this Lambda Function is running as

node: Node

The tree node.

permissionsNode: Node
physicalName: string

Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.

This value will resolve to one of the following:

  • a concrete value (e.g. "my-awesome-bucket")
  • undefined, when a name should be generated by CloudFormation
  • a concrete name generated automatically during synthesis, in cross-environment scenarios.
role?: IRole

Execution role associated with this function

runtime: Runtime

The runtime configured for this lambda.

stack: Stack
timeout?: Duration

The timeout configured for this lambda.

_VER_PROPS: {
    [key: string]: boolean;
}

Type declaration

  • [key: string]: boolean

Accessors

  • get connections(): Connections
  • Access the Connections object

    Will fail if not a VPC-enabled Lambda Function

    Returns Connections

  • get currentVersion(): 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.

    Returns Version

  • get isBoundToVpc(): 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.

    Returns boolean

  • get latestVersion(): IVersion
  • Returns IVersion

  • get logGroup(): 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.

    Returns ILogGroup

  • get resourceArnsForGrantInvoke(): string[]
  • Returns string[]

Methods

  • Internal

    Called when this resource is referenced across environments (account/region) to order to request that a physical name will be generated for this resource during synthesis, so the resource can be referenced through it's absolute name/arn.

    Returns void

  • Internal

    Returns the construct tree node that corresponds to the lambda function. For use internally for constructs, when the tree is set up in non-standard ways. Ex: SingletonFunction.

    Returns Node

  • Internal

    Given the function arn, check if the account id matches this account

    Function ARNs look like this:

    arn:aws:lambda:region:account-id:function:function-name

    ..which means that in order to extract the account-id component from the ARN, we can split the ARN using ":" and select the component in index 4.

    Returns

    true if account id of function matches the account specified on the stack, false otherwise.

    Returns boolean

  • 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.

    declare const fn: lambda.Function;

    fn.addAlias('Live');

    // Is equivalent to

    new lambda.Alias(this, 'AliasLive', {
    aliasName: 'Live',
    version: fn.currentVersion,
    });

    Parameters

    • aliasName: string

      The name of the alias

    • Optional options: AliasOptions

      Alias options

    Returns Alias

  • Adds an environment variable to this Lambda function. If this is a ref to a Lambda function, this operation results in a no-op.

    Parameters

    • key: string

      The environment variable key.

    • value: string

      The environment variable's value.

    • Optional options: EnvironmentOptions

      Environment variable options.

    Returns GuApiLambda

  • Parameters

    • source: IEventSource

    Returns void

  • Parameters

    • id: string
    • options: EventSourceMappingOptions

    Returns EventSourceMapping

  • Parameters

    • Optional options: FunctionUrlOptions

    Returns FunctionUrl

  • Adds one or more Lambda Layers to this Lambda function.

    Throws

    if there are already 5 layers on this function, or the layer is incompatible with this function's runtime.

    Parameters

    • Rest ...layers: ILayerVersion[]

      the layers to be added.

    Returns void

  • Adds a permission to the Lambda resource policy.

    See

    Permission for details.

    Parameters

    • id: string

      The id for the permission construct

    • permission: Permission

      The permission to grant to this Lambda function.

    Returns void

  • Adds a statement to the IAM role assumed by the instance.

    Parameters

    • statement: PolicyStatement

    Returns 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).

    Parameters

    • policy: RemovalPolicy

    Returns void

  • Parameters

    • options: EventInvokeConfigOptions

    Returns 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.

    Parameters

    • scope: Construct
    • action: string

    Returns void

  • Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. bucket.bucketArn).

    Normally, this token will resolve to arnAttr, but if the resource is referenced across environments, arnComponents will be used to synthesize a concrete ARN with the resource's physical name. Make sure to reference this.physicalName in arnComponents.

    Parameters

    • arnAttr: string

      The CFN attribute which resolves to the ARN of the resource. Commonly it will be called "Arn" (e.g. resource.attrArn), but sometimes it's the CFN resource's ref.

    • arnComponents: ArnComponents

      The format of the ARN of this resource. You must reference this.physicalName somewhere within the ARN in order for cross-environment references to work.

    Returns string

  • Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. bucket.bucketName).

    Normally, this token will resolve to nameAttr, but if the resource is referenced across environments, it will be resolved to this.physicalName, which will be a concrete name.

    Parameters

    • nameAttr: string

      The CFN attribute which resolves to the resource's name. Commonly this is the resource's ref.

    Returns string

  • Grant the given identity permissions to invoke this Lambda

    Parameters

    • grantee: IGrantable

    Returns Grant

  • Grant the given identity permissions to invoke this Lambda Function URL

    Parameters

    • grantee: IGrantable

    Returns Grant

  • Return the given named metric for this Function

    Parameters

    • metricName: string
    • Optional props: MetricOptions

    Returns Metric

  • How long execution of this Lambda takes

    Average over 5 minutes

    Parameters

    • Optional props: MetricOptions

    Returns Metric

  • How many invocations of this Lambda fail

    Sum over 5 minutes

    Parameters

    • Optional props: MetricOptions

    Returns Metric

  • How often this Lambda is invoked

    Sum over 5 minutes

    Parameters

    • Optional props: MetricOptions

    Returns Metric

  • How often this Lambda is throttled

    Sum over 5 minutes

    Parameters

    • Optional props: MetricOptions

    Returns Metric

  • Returns a string representation of this construct.

    Returns string

  • Parameters

    • scope: Construct

    Returns void

  • 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.

    Parameters

    • propertyName: string

      The property to classify

    • locked: boolean

      whether the property should be associated to the version or not.

    Returns void

  • Import a lambda function into the CDK using its ARN

    Parameters

    • scope: Construct
    • id: string
    • functionArn: string

    Returns IFunction

  • Creates a Lambda function object which represents a function not defined within this stack.

    Parameters

    • scope: Construct

      The parent construct

    • id: string

      The name of the lambda construct

    • attrs: FunctionAttributes

      the attributes of the function to import

    Returns IFunction

  • Import a lambda function into the CDK using its name

    Parameters

    • scope: Construct
    • id: string
    • functionName: string

    Returns IFunction

  • Checks if x is a construct.

    Use this method instead of instanceof to properly detect Construct instances, even when the construct library is symlinked.

    Explanation: in JavaScript, multiple copies of the constructs library on disk are seen as independent, completely different libraries. As a consequence, the class Construct in each copy of the constructs library is seen as a different class, and an instance of one class will not test as instanceof the other class. npm install will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the constructs library can be accidentally installed, and instanceof will behave unpredictably. It is safest to avoid using instanceof, and using this type-testing method instead.

    Returns

    true if x is an object created from a class which extends Construct.

    Parameters

    • x: any

      Any object

    Returns x is Construct

  • Returns true if the construct was created by CDK, and false otherwise

    Parameters

    • construct: IConstruct

    Returns boolean

  • Check whether the given construct is a Resource

    Parameters

    • construct: IConstruct

    Returns construct is Resource

  • Return the given named metric for this Lambda

    Parameters

    • metricName: string
    • Optional props: MetricOptions

    Returns Metric

  • Metric for the number of concurrent executions across all Lambdas

    Default

    max over 5 minutes

    Parameters

    • Optional props: MetricOptions

    Returns Metric

  • Metric for the Duration executing all Lambdas

    Default

    average over 5 minutes

    Parameters

    • Optional props: MetricOptions

    Returns Metric

  • Metric for the number of Errors executing all Lambdas

    Default

    sum over 5 minutes

    Parameters

    • Optional props: MetricOptions

    Returns Metric

  • Metric for the number of invocations of all Lambdas

    Default

    sum over 5 minutes

    Parameters

    • Optional props: MetricOptions

    Returns Metric

  • Metric for the number of throttled invocations of all Lambdas

    Default

    sum over 5 minutes

    Parameters

    • Optional props: MetricOptions

    Returns Metric

  • Metric for the number of unreserved concurrent executions across all Lambdas

    Default

    max over 5 minutes

    Parameters

    • Optional props: MetricOptions

    Returns Metric

Generated using TypeDoc