Skip to main content

CDK Destinations Constructs for AWS Lambda

Project description

Amazon Lambda Destinations Library

---

cdk-constructs: Stable


This library provides constructs for adding destinations to a Lambda function. Destinations can be added by specifying the onFailure or onSuccess props when creating a function or alias.

Destinations

The following destinations are supported

  • Lambda function
  • SQS queue
  • SNS topic
  • EventBridge event bus

Example with a SNS topic for sucessful invocations:

# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
import aws_cdk.aws_lambda as lambda_
import aws_cdk.aws_lambda_destinations as destinations
import aws_cdk.aws_sns as sns

my_topic = sns.Topic(self, "Topic")

my_fn = lambda_.Function(self, "Fn",
    # other props
    on_success=destinations.SnsDestination(my_topic)
)

See also Configuring Destinations for Asynchronous Invocation.

Invocation record

When a lambda function is configured with a destination, an invocation record is created by the Lambda service when the lambda function completes. The invocation record contains the details of the function, its context, and the request and response payloads.

The following example shows the format of the invocation record for a successful invocation:

{
	"version": "1.0",
	"timestamp": "2019-11-24T23:08:25.651Z",
	"requestContext": {
		"requestId": "c2a6f2ae-7dbb-4d22-8782-d0485c9877e2",
		"functionArn": "arn:aws:lambda:sa-east-1:123456789123:function:event-destinations:$LATEST",
		"condition": "Success",
		"approximateInvokeCount": 1
	},
	"requestPayload": {
		"Success": true
	},
	"responseContext": {
		"statusCode": 200,
		"executedVersion": "$LATEST"
	},
	"responsePayload": "<data returned by the function here>"
}

In case of failure, the record contains the reason and error object:

{
    "version": "1.0",
    "timestamp": "2019-11-24T21:52:47.333Z",
    "requestContext": {
        "requestId": "8ea123e4-1db7-4aca-ad10-d9ca1234c1fd",
        "functionArn": "arn:aws:lambda:sa-east-1:123456678912:function:event-destinations:$LATEST",
        "condition": "RetriesExhausted",
        "approximateInvokeCount": 3
    },
    "requestPayload": {
        "Success": false
    },
    "responseContext": {
        "statusCode": 200,
        "executedVersion": "$LATEST",
        "functionError": "Handled"
    },
    "responsePayload": {
        "errorMessage": "Failure from event, Success = false, I am failing!",
        "errorType": "Error",
        "stackTrace": [ "exports.handler (/var/task/index.js:18:18)" ]
    }
}

Destination-specific JSON format

  • For SNS/SQS (SnsDestionation/SqsDestination), the invocation record JSON is passed as the Message to the destination.
  • For Lambda (LambdaDestination), the invocation record JSON is passed as the payload to the function.
  • For EventBridge (EventBridgeDestination), the invocation record JSON is passed as the detail in the PutEvents call. The value for the event field source is lambda, and the value for the event field detail-type is either 'Lambda Function Invocation Result - Success' or 'Lambda Function Invocation Result – Failure', depending on whether the lambda function invocation succeeded or failed. The event field resource contains the function and destination ARNs. See AWS Events for the different event fields.

Auto-extract response payload with lambda destination

The responseOnly option of LambdaDestination allows to auto-extract the response payload from the invocation record:

# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
import aws_cdk.aws_lambda as lambda_
import aws_cdk.aws_lambda_destinations as destinations

destination_fn = lambda_.Function(self, "Destination")

source_fn = lambda_.Function(self, "Source",
    # other props
    on_success=destinations.LambdaDestination(destination_fn,
        response_only=True
    )
)

In the above example, destinationFn will be invoked with the payload returned by sourceFn (responsePayload in the invocation record, not the full record).

When used with onFailure, the destination function is invoked with the error object returned by the source function.

Using the responseOnly option allows to easily chain asynchronous Lambda functions without having to deal with data extraction in the runtime code.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aws-cdk.aws-lambda-destinations-1.66.0.tar.gz (37.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file aws-cdk.aws-lambda-destinations-1.66.0.tar.gz.

File metadata

  • Download URL: aws-cdk.aws-lambda-destinations-1.66.0.tar.gz
  • Upload date:
  • Size: 37.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.6.5

File hashes

Hashes for aws-cdk.aws-lambda-destinations-1.66.0.tar.gz
Algorithm Hash digest
SHA256 dcb42ffdafbc7e8786ec9aa8fcb3bd84e4d5afc0cfa6c98503b0200a6070c33c
MD5 ac12d5a00b2e39219f0fca9d2e183a0b
BLAKE2b-256 0058415010647c08ee53339707f7e128bb58b46edcd2d4d118a5bc1c0dfbdee2

See more details on using hashes here.

File details

Details for the file aws_cdk.aws_lambda_destinations-1.66.0-py3-none-any.whl.

File metadata

  • Download URL: aws_cdk.aws_lambda_destinations-1.66.0-py3-none-any.whl
  • Upload date:
  • Size: 36.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.6.5

File hashes

Hashes for aws_cdk.aws_lambda_destinations-1.66.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6cafddc09db757eebd017668c8fca07050a16857288f1de6235ab973704d4a3d
MD5 9ba9d175562b2099434780d2c5fcaabb
BLAKE2b-256 03a7380e2c7ebd7169384e2e8c7af564a9ace76f8599b7c771beaa76935ff6de

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page