Class Function

java.lang.Object
software.amazon.jsii.JsiiObject
All Implemented Interfaces:
IConstruct, IDependable, IResource, IClientVpnConnectionHandler, IConnectable, IGrantable, IFunction, software.amazon.jsii.JsiiSerializable, software.constructs.IConstruct
Direct Known Subclasses:
DockerImageFunction, GoFunction, NodejsFunction, PythonFunction, TriggerFunction

@Generated(value="jsii-pacmak/1.84.0 (build 5404dcf)", date="2023-06-19T16:30:40.739Z") @Stability(Stable) public class Function extends FunctionBase
Deploys a file from inside the construct library as a function.

The supplied file is subject to the 4096 bytes limit of being embedded in a CloudFormation template.

The construct includes an associated role with the lambda.

This construct does not yet reproduce all features from the underlying resource library.

Example:

 import software.amazon.awscdk.services.signer.*;
 SigningProfile signingProfile = SigningProfile.Builder.create(this, "SigningProfile")
         .platform(Platform.AWS_LAMBDA_SHA384_ECDSA)
         .build();
 CodeSigningConfig codeSigningConfig = CodeSigningConfig.Builder.create(this, "CodeSigningConfig")
         .signingProfiles(List.of(signingProfile))
         .build();
 Function.Builder.create(this, "Function")
         .codeSigningConfig(codeSigningConfig)
         .runtime(Runtime.NODEJS_16_X)
         .handler("index.handler")
         .code(Code.fromAsset(join(__dirname, "lambda-handler")))
         .build();
 
  • Constructor Details

    • Function

      protected Function(software.amazon.jsii.JsiiObjectRef objRef)
    • Function

      protected Function(software.amazon.jsii.JsiiObject.InitializationMode initializationMode)
    • Function

      @Stability(Stable) public Function(@NotNull software.constructs.Construct scope, @NotNull String id, @NotNull FunctionProps props)
      Parameters:
      scope - This parameter is required.
      id - This parameter is required.
      props - This parameter is required.
  • Method Details

    • classifyVersionProperty

      @Stability(Stable) public static void classifyVersionProperty(@NotNull String propertyName, @NotNull Boolean locked)
      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 - The property to classify. This parameter is required.
      locked - whether the property should be associated to the version or not. This parameter is required.
    • fromFunctionArn

      @Stability(Stable) @NotNull public static IFunction fromFunctionArn(@NotNull software.constructs.Construct scope, @NotNull String id, @NotNull String functionArn)
      Import a lambda function into the CDK using its ARN.

      Parameters:
      scope - This parameter is required.
      id - This parameter is required.
      functionArn - This parameter is required.
    • fromFunctionAttributes

      @Stability(Stable) @NotNull public static IFunction fromFunctionAttributes(@NotNull software.constructs.Construct scope, @NotNull String id, @NotNull FunctionAttributes attrs)
      Creates a Lambda function object which represents a function not defined within this stack.

      Parameters:
      scope - The parent construct. This parameter is required.
      id - The name of the lambda construct. This parameter is required.
      attrs - the attributes of the function to import. This parameter is required.
    • fromFunctionName

      @Stability(Stable) @NotNull public static IFunction fromFunctionName(@NotNull software.constructs.Construct scope, @NotNull String id, @NotNull String functionName)
      Import a lambda function into the CDK using its name.

      Parameters:
      scope - This parameter is required.
      id - This parameter is required.
      functionName - This parameter is required.
    • metricAll

      @Stability(Stable) @NotNull public static Metric metricAll(@NotNull String metricName, @Nullable MetricOptions props)
      Return the given named metric for this Lambda.

      Parameters:
      metricName - This parameter is required.
      props -
    • metricAll

      @Stability(Stable) @NotNull public static Metric metricAll(@NotNull String metricName)
      Return the given named metric for this Lambda.

      Parameters:
      metricName - This parameter is required.
    • metricAllConcurrentExecutions

      @Stability(Stable) @NotNull public static Metric metricAllConcurrentExecutions(@Nullable MetricOptions props)
      Metric for the number of concurrent executions across all Lambdas.

      Default: max over 5 minutes

      Parameters:
      props -
    • metricAllConcurrentExecutions

      @Stability(Stable) @NotNull public static Metric metricAllConcurrentExecutions()
      Metric for the number of concurrent executions across all Lambdas.

      Default: max over 5 minutes

    • metricAllDuration

      @Stability(Stable) @NotNull public static Metric metricAllDuration(@Nullable MetricOptions props)
      Metric for the Duration executing all Lambdas.

      Default: average over 5 minutes

      Parameters:
      props -
    • metricAllDuration

      @Stability(Stable) @NotNull public static Metric metricAllDuration()
      Metric for the Duration executing all Lambdas.

      Default: average over 5 minutes

    • metricAllErrors

      @Stability(Stable) @NotNull public static Metric metricAllErrors(@Nullable MetricOptions props)
      Metric for the number of Errors executing all Lambdas.

      Default: sum over 5 minutes

      Parameters:
      props -
    • metricAllErrors

      @Stability(Stable) @NotNull public static Metric metricAllErrors()
      Metric for the number of Errors executing all Lambdas.

      Default: sum over 5 minutes

    • metricAllInvocations

      @Stability(Stable) @NotNull public static Metric metricAllInvocations(@Nullable MetricOptions props)
      Metric for the number of invocations of all Lambdas.

      Default: sum over 5 minutes

      Parameters:
      props -
    • metricAllInvocations

      @Stability(Stable) @NotNull public static Metric metricAllInvocations()
      Metric for the number of invocations of all Lambdas.

      Default: sum over 5 minutes

    • metricAllThrottles

      @Stability(Stable) @NotNull public static Metric metricAllThrottles(@Nullable MetricOptions props)
      Metric for the number of throttled invocations of all Lambdas.

      Default: sum over 5 minutes

      Parameters:
      props -
    • metricAllThrottles

      @Stability(Stable) @NotNull public static Metric metricAllThrottles()
      Metric for the number of throttled invocations of all Lambdas.

      Default: sum over 5 minutes

    • metricAllUnreservedConcurrentExecutions

      @Stability(Stable) @NotNull public static Metric metricAllUnreservedConcurrentExecutions(@Nullable MetricOptions props)
      Metric for the number of unreserved concurrent executions across all Lambdas.

      Default: max over 5 minutes

      Parameters:
      props -
    • metricAllUnreservedConcurrentExecutions

      @Stability(Stable) @NotNull public static Metric metricAllUnreservedConcurrentExecutions()
      Metric for the number of unreserved concurrent executions across all Lambdas.

      Default: max over 5 minutes

    • addAlias

      @Stability(Stable) @NotNull public Alias addAlias(@NotNull String aliasName, @Nullable AliasOptions options)
      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.

       Function fn;
       fn.addAlias("Live");
       // Is equivalent to
       // Is equivalent to
       Alias.Builder.create(this, "AliasLive")
               .aliasName("Live")
               .version(fn.getCurrentVersion())
               .build();
       

      Parameters:
      aliasName - The name of the alias. This parameter is required.
      options - Alias options.
    • addAlias

      @Stability(Stable) @NotNull public Alias addAlias(@NotNull String aliasName)
      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.

       Function fn;
       fn.addAlias("Live");
       // Is equivalent to
       // Is equivalent to
       Alias.Builder.create(this, "AliasLive")
               .aliasName("Live")
               .version(fn.getCurrentVersion())
               .build();
       

      Parameters:
      aliasName - The name of the alias. This parameter is required.
    • addEnvironment

      @Stability(Stable) @NotNull public Function addEnvironment(@NotNull String key, @NotNull String value, @Nullable EnvironmentOptions options)
      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 - The environment variable key. This parameter is required.
      value - The environment variable's value. This parameter is required.
      options - Environment variable options.
    • addEnvironment

      @Stability(Stable) @NotNull public Function addEnvironment(@NotNull String key, @NotNull String value)
      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 - The environment variable key. This parameter is required.
      value - The environment variable's value. This parameter is required.
    • addLayers

      @Stability(Stable) public void addLayers(@NotNull @NotNull ILayerVersion... layers)
      Adds one or more Lambda Layers to this Lambda function.

      Parameters:
      layers - the layers to be added. This parameter is required.
    • addVersion

      @Stability(Deprecated) @Deprecated @NotNull public Version addVersion(@NotNull String name, @Nullable String codeSha256, @Nullable String description, @Nullable Number provisionedExecutions, @Nullable EventInvokeConfigOptions asyncInvokeConfig)
      Deprecated.
      This method will create an AWS::Lambda::Version resource which snapshots the AWS Lambda function at the time of its creation and it won't get updated when the function changes. Instead, use this.currentVersion to obtain a reference to a version resource that gets automatically recreated when the function configuration (or code) changes.
      (deprecated) Add a new version for this Lambda.

      If you want to deploy through CloudFormation and use aliases, you need to add a new version (with a new name) to your Lambda every time you want to deploy an update. An alias can then refer to the newly created Version.

      All versions should have distinct names, and you should not delete versions as long as your Alias needs to refer to them.

      Parameters:
      name - A unique name for this version. This parameter is required.
      codeSha256 - The SHA-256 hash of the most recently deployed Lambda source code, or omit to skip validation.
      description - A description for this version.
      provisionedExecutions - A provisioned concurrency configuration for a function's version.
      asyncInvokeConfig - configuration for this version when it is invoked asynchronously.
      Returns:
      A new Version object.
    • addVersion

      @Stability(Deprecated) @Deprecated @NotNull public Version addVersion(@NotNull String name, @Nullable String codeSha256, @Nullable String description, @Nullable Number provisionedExecutions)
      Deprecated.
      This method will create an AWS::Lambda::Version resource which snapshots the AWS Lambda function at the time of its creation and it won't get updated when the function changes. Instead, use this.currentVersion to obtain a reference to a version resource that gets automatically recreated when the function configuration (or code) changes.
      (deprecated) Add a new version for this Lambda.

      If you want to deploy through CloudFormation and use aliases, you need to add a new version (with a new name) to your Lambda every time you want to deploy an update. An alias can then refer to the newly created Version.

      All versions should have distinct names, and you should not delete versions as long as your Alias needs to refer to them.

      Parameters:
      name - A unique name for this version. This parameter is required.
      codeSha256 - The SHA-256 hash of the most recently deployed Lambda source code, or omit to skip validation.
      description - A description for this version.
      provisionedExecutions - A provisioned concurrency configuration for a function's version.
      Returns:
      A new Version object.
    • addVersion

      @Stability(Deprecated) @Deprecated @NotNull public Version addVersion(@NotNull String name, @Nullable String codeSha256, @Nullable String description)
      Deprecated.
      This method will create an AWS::Lambda::Version resource which snapshots the AWS Lambda function at the time of its creation and it won't get updated when the function changes. Instead, use this.currentVersion to obtain a reference to a version resource that gets automatically recreated when the function configuration (or code) changes.
      (deprecated) Add a new version for this Lambda.

      If you want to deploy through CloudFormation and use aliases, you need to add a new version (with a new name) to your Lambda every time you want to deploy an update. An alias can then refer to the newly created Version.

      All versions should have distinct names, and you should not delete versions as long as your Alias needs to refer to them.

      Parameters:
      name - A unique name for this version. This parameter is required.
      codeSha256 - The SHA-256 hash of the most recently deployed Lambda source code, or omit to skip validation.
      description - A description for this version.
      Returns:
      A new Version object.
    • addVersion

      @Stability(Deprecated) @Deprecated @NotNull public Version addVersion(@NotNull String name, @Nullable String codeSha256)
      Deprecated.
      This method will create an AWS::Lambda::Version resource which snapshots the AWS Lambda function at the time of its creation and it won't get updated when the function changes. Instead, use this.currentVersion to obtain a reference to a version resource that gets automatically recreated when the function configuration (or code) changes.
      (deprecated) Add a new version for this Lambda.

      If you want to deploy through CloudFormation and use aliases, you need to add a new version (with a new name) to your Lambda every time you want to deploy an update. An alias can then refer to the newly created Version.

      All versions should have distinct names, and you should not delete versions as long as your Alias needs to refer to them.

      Parameters:
      name - A unique name for this version. This parameter is required.
      codeSha256 - The SHA-256 hash of the most recently deployed Lambda source code, or omit to skip validation.
      Returns:
      A new Version object.
    • addVersion

      @Stability(Deprecated) @Deprecated @NotNull public Version addVersion(@NotNull String name)
      Deprecated.
      This method will create an AWS::Lambda::Version resource which snapshots the AWS Lambda function at the time of its creation and it won't get updated when the function changes. Instead, use this.currentVersion to obtain a reference to a version resource that gets automatically recreated when the function configuration (or code) changes.
      (deprecated) Add a new version for this Lambda.

      If you want to deploy through CloudFormation and use aliases, you need to add a new version (with a new name) to your Lambda every time you want to deploy an update. An alias can then refer to the newly created Version.

      All versions should have distinct names, and you should not delete versions as long as your Alias needs to refer to them.

      Parameters:
      name - A unique name for this version. This parameter is required.
      Returns:
      A new Version object.
    • getArchitecture

      @Stability(Stable) @NotNull public Architecture getArchitecture()
      The architecture of this Lambda Function (this is an optional attribute and defaults to X86_64).
      Specified by:
      getArchitecture in interface IFunction
      Specified by:
      getArchitecture in class FunctionBase
    • getCanCreatePermissions

      @Stability(Stable) @NotNull protected Boolean getCanCreatePermissions()
      Whether the addPermission() call adds any permissions.

      True for new Lambdas, false for version $LATEST and imported Lambdas from different accounts.

      Specified by:
      getCanCreatePermissions in class FunctionBase
    • getCurrentVersion

      @Stability(Stable) @NotNull public Version getCurrentVersion()
      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.

    • getFunctionArn

      @Stability(Stable) @NotNull public String getFunctionArn()
      ARN of this function.
      Specified by:
      getFunctionArn in interface IClientVpnConnectionHandler
      Specified by:
      getFunctionArn in interface IFunction
      Specified by:
      getFunctionArn in class FunctionBase
    • getFunctionName

      @Stability(Stable) @NotNull public String getFunctionName()
      Name of this function.
      Specified by:
      getFunctionName in interface IClientVpnConnectionHandler
      Specified by:
      getFunctionName in interface IFunction
      Specified by:
      getFunctionName in class FunctionBase
    • getGrantPrincipal

      @Stability(Stable) @NotNull public IPrincipal getGrantPrincipal()
      The principal this Lambda Function is running as.
      Specified by:
      getGrantPrincipal in interface IGrantable
      Specified by:
      getGrantPrincipal in class FunctionBase
    • getLogGroup

      @Stability(Stable) @NotNull public ILogGroup getLogGroup()
      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.

    • getPermissionsNode

      @Stability(Stable) @NotNull public ConstructNode getPermissionsNode()
      The construct node where permissions are attached.
      Specified by:
      getPermissionsNode in interface IFunction
      Specified by:
      getPermissionsNode in class FunctionBase
    • getResourceArnsForGrantInvoke

      @Stability(Stable) @NotNull public List<String> getResourceArnsForGrantInvoke()
      The ARN(s) to put into the resource field of the generated IAM policy for grantInvoke().
      Specified by:
      getResourceArnsForGrantInvoke in interface IFunction
      Specified by:
      getResourceArnsForGrantInvoke in class FunctionBase
    • getRuntime

      @Stability(Stable) @NotNull public Runtime getRuntime()
      The runtime configured for this lambda.
    • getDeadLetterQueue

      @Stability(Stable) @Nullable public IQueue getDeadLetterQueue()
      The DLQ (as queue) associated with this Lambda Function (this is an optional attribute).
    • getDeadLetterTopic

      @Stability(Stable) @Nullable public ITopic getDeadLetterTopic()
      The DLQ (as topic) associated with this Lambda Function (this is an optional attribute).
    • getRole

      @Stability(Stable) @Nullable public IRole getRole()
      Execution role associated with this function.
      Specified by:
      getRole in interface IFunction
      Specified by:
      getRole in class FunctionBase
    • getTimeout

      @Stability(Stable) @Nullable public Duration getTimeout()
      The timeout configured for this lambda.