@composurecdk/lambda 0.11.2 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +131 -23
- package/dist/commonjs/alarm-config.d.ts +1 -1
- package/dist/commonjs/event-sources/composure-event-source.d.ts +3 -3
- package/dist/commonjs/event-sources/composure-event-source.d.ts.map +1 -1
- package/dist/commonjs/event-sources/composure-event-source.js +5 -1
- package/dist/commonjs/event-sources/composure-event-source.js.map +1 -1
- package/dist/commonjs/event-sources/dynamodb-event-source.d.ts +2 -2
- package/dist/commonjs/event-sources/dynamodb-event-source.d.ts.map +1 -1
- package/dist/commonjs/event-sources/dynamodb-event-source.js +2 -26
- package/dist/commonjs/event-sources/dynamodb-event-source.js.map +1 -1
- package/dist/commonjs/event-sources/event-source-relationship-guards.d.ts +3 -2
- package/dist/commonjs/event-sources/event-source-relationship-guards.d.ts.map +1 -1
- package/dist/commonjs/event-sources/event-source-relationship-guards.js +9 -5
- package/dist/commonjs/event-sources/event-source-relationship-guards.js.map +1 -1
- package/dist/commonjs/event-sources/kinesis-event-source.d.ts +129 -0
- package/dist/commonjs/event-sources/kinesis-event-source.d.ts.map +1 -0
- package/dist/commonjs/event-sources/kinesis-event-source.js +102 -0
- package/dist/commonjs/event-sources/kinesis-event-source.js.map +1 -0
- package/dist/commonjs/event-sources/sqs-event-source.d.ts +2 -2
- package/dist/commonjs/event-sources/sqs-event-source.js +2 -2
- package/dist/commonjs/event-sources/stream-event-source-defaults.d.ts +1 -1
- package/dist/commonjs/event-sources/stream-event-source-defaults.d.ts.map +1 -1
- package/dist/commonjs/event-sources/stream-event-source-defaults.js +3 -1
- package/dist/commonjs/event-sources/stream-event-source-defaults.js.map +1 -1
- package/dist/commonjs/event-sources/stream-event-source.d.ts +32 -0
- package/dist/commonjs/event-sources/stream-event-source.d.ts.map +1 -0
- package/dist/commonjs/event-sources/stream-event-source.js +44 -0
- package/dist/commonjs/event-sources/stream-event-source.js.map +1 -0
- package/dist/commonjs/function-alarms.d.ts.map +1 -1
- package/dist/commonjs/function-alarms.js +7 -3
- package/dist/commonjs/function-alarms.js.map +1 -1
- package/dist/commonjs/index.d.ts +1 -0
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +5 -1
- package/dist/commonjs/index.js.map +1 -1
- package/dist/esm/alarm-config.d.ts +1 -1
- package/dist/esm/event-sources/composure-event-source.d.ts +3 -3
- package/dist/esm/event-sources/composure-event-source.d.ts.map +1 -1
- package/dist/esm/event-sources/composure-event-source.js +5 -1
- package/dist/esm/event-sources/composure-event-source.js.map +1 -1
- package/dist/esm/event-sources/dynamodb-event-source.d.ts +2 -2
- package/dist/esm/event-sources/dynamodb-event-source.d.ts.map +1 -1
- package/dist/esm/event-sources/dynamodb-event-source.js +3 -27
- package/dist/esm/event-sources/dynamodb-event-source.js.map +1 -1
- package/dist/esm/event-sources/event-source-relationship-guards.d.ts +3 -2
- package/dist/esm/event-sources/event-source-relationship-guards.d.ts.map +1 -1
- package/dist/esm/event-sources/event-source-relationship-guards.js +9 -5
- package/dist/esm/event-sources/event-source-relationship-guards.js.map +1 -1
- package/dist/esm/event-sources/kinesis-event-source.d.ts +129 -0
- package/dist/esm/event-sources/kinesis-event-source.d.ts.map +1 -0
- package/dist/esm/event-sources/kinesis-event-source.js +97 -0
- package/dist/esm/event-sources/kinesis-event-source.js.map +1 -0
- package/dist/esm/event-sources/sqs-event-source.d.ts +2 -2
- package/dist/esm/event-sources/sqs-event-source.js +2 -2
- package/dist/esm/event-sources/stream-event-source-defaults.d.ts +1 -1
- package/dist/esm/event-sources/stream-event-source-defaults.d.ts.map +1 -1
- package/dist/esm/event-sources/stream-event-source-defaults.js +3 -1
- package/dist/esm/event-sources/stream-event-source-defaults.js.map +1 -1
- package/dist/esm/event-sources/stream-event-source.d.ts +32 -0
- package/dist/esm/event-sources/stream-event-source.d.ts.map +1 -0
- package/dist/esm/event-sources/stream-event-source.js +41 -0
- package/dist/esm/event-sources/stream-event-source.js.map +1 -0
- package/dist/esm/function-alarms.d.ts.map +1 -1
- package/dist/esm/function-alarms.js +7 -3
- package/dist/esm/function-alarms.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +10 -10
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_KINESIS_EVENT_SOURCE_PROPS = void 0;
|
|
4
|
+
exports.kinesisEventSource = kinesisEventSource;
|
|
5
|
+
exports.kinesisConsumerEventSource = kinesisConsumerEventSource;
|
|
6
|
+
const aws_lambda_event_sources_1 = require("aws-cdk-lib/aws-lambda-event-sources");
|
|
7
|
+
const stream_event_source_js_1 = require("./stream-event-source.js");
|
|
8
|
+
const stream_event_source_defaults_js_1 = require("./stream-event-source-defaults.js");
|
|
9
|
+
/**
|
|
10
|
+
* Secure, AWS-recommended defaults applied to every Kinesis event source built
|
|
11
|
+
* with {@link kinesisEventSource} or {@link kinesisConsumerEventSource} — the
|
|
12
|
+
* shared {@link DEFAULT_STREAM_EVENT_SOURCE_PROPS} (start at the stream tip,
|
|
13
|
+
* report partial batch failures, bisect a failing batch, emit ESM metrics).
|
|
14
|
+
* Each property can be overridden via the factory's `props` argument.
|
|
15
|
+
*
|
|
16
|
+
* @see https://docs.aws.amazon.com/lambda/latest/dg/services-kinesis-parameters.html
|
|
17
|
+
*/
|
|
18
|
+
exports.DEFAULT_KINESIS_EVENT_SOURCE_PROPS = stream_event_source_defaults_js_1.DEFAULT_STREAM_EVENT_SOURCE_PROPS;
|
|
19
|
+
/**
|
|
20
|
+
* Wraps a Kinesis data stream as a Lambda {@link IEventSource} using
|
|
21
|
+
* **shared-throughput** (standard) iterators, deferring resolution when the
|
|
22
|
+
* stream (or the `onFailure` destination) is a `ref()` to a sibling
|
|
23
|
+
* component's output.
|
|
24
|
+
*
|
|
25
|
+
* Register the result with {@link IFunctionBuilder.addEventSource}: the
|
|
26
|
+
* builder resolves the `ref()`, attaches the source, and (because
|
|
27
|
+
* `addEventSource` calls `source.bind(fn)`) grants the function's
|
|
28
|
+
* least-privilege execution role permission to read the stream — including
|
|
29
|
+
* `kms:Decrypt` when the stream is encrypted with a customer-managed key.
|
|
30
|
+
*
|
|
31
|
+
* Applies {@link DEFAULT_KINESIS_EVENT_SOURCE_PROPS}; pass `props` to override.
|
|
32
|
+
* For a dedicated 2 MB/s-per-shard read pipe instead of sharing the shard's
|
|
33
|
+
* read throughput with other consumers, use {@link kinesisConsumerEventSource}.
|
|
34
|
+
*
|
|
35
|
+
* ## Failure handling (AWS Well-Architected)
|
|
36
|
+
*
|
|
37
|
+
* By default Lambda retries a failing batch until its records expire from the
|
|
38
|
+
* stream, blocking the shard for up to the stream's retention period (24 h by
|
|
39
|
+
* CDK's default, 7 days with `@composurecdk/kinesis`). `bisectBatchOnError` is
|
|
40
|
+
* on by default to isolate a poison record; for durable failure handling also
|
|
41
|
+
* bound `retryAttempts` / `maxRecordAge` **and** set `onFailure` so exhausted
|
|
42
|
+
* records land in a dead-letter destination instead of being dropped —
|
|
43
|
+
* bounding retries without one triggers a suppressible synth-time warning (see
|
|
44
|
+
* {@link STREAM_DLQ_WARNING_ID}).
|
|
45
|
+
*
|
|
46
|
+
* @see https://docs.aws.amazon.com/lambda/latest/dg/services-kinesis-parameters.html
|
|
47
|
+
* @see https://docs.aws.amazon.com/lambda/latest/dg/services-kinesis-batchfailurereporting.html
|
|
48
|
+
*
|
|
49
|
+
* @param stream - The source stream, concrete or a `ref()` to a sibling.
|
|
50
|
+
* @param props - Overrides for {@link DEFAULT_KINESIS_EVENT_SOURCE_PROPS} and
|
|
51
|
+
* any other {@link KinesisStreamEventSourceProps}.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```ts
|
|
55
|
+
* compose(
|
|
56
|
+
* {
|
|
57
|
+
* telemetry: createStreamBuilder(),
|
|
58
|
+
* dlq: createQueueBuilder("dlq"),
|
|
59
|
+
* processor: createFunctionBuilder()
|
|
60
|
+
* .runtime(Runtime.NODEJS_22_X)
|
|
61
|
+
* .handler("index.handler")
|
|
62
|
+
* .code(Code.fromAsset("lambda"))
|
|
63
|
+
* .addEventSource(
|
|
64
|
+
* "telemetry",
|
|
65
|
+
* kinesisEventSource(ref("telemetry", (r) => r.stream), {
|
|
66
|
+
* retryAttempts: 3,
|
|
67
|
+
* onFailure: ref("dlq", (r) => r.queue),
|
|
68
|
+
* }),
|
|
69
|
+
* ),
|
|
70
|
+
* },
|
|
71
|
+
* { telemetry: [], dlq: [], processor: ["telemetry", "dlq"] },
|
|
72
|
+
* );
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
function kinesisEventSource(stream, props) {
|
|
76
|
+
return (0, stream_event_source_js_1.streamEventSource)("kinesis", stream, props, (resolved, merged) => new aws_lambda_event_sources_1.KinesisEventSource(resolved, merged));
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Wraps a Kinesis **enhanced fan-out** consumer as a Lambda
|
|
80
|
+
* {@link IEventSource}. Same defaults, `onFailure` handling and `ref()`
|
|
81
|
+
* resolution as {@link kinesisEventSource}; the function reads through the
|
|
82
|
+
* registered consumer, which gets its own 2 MB/s per shard of read
|
|
83
|
+
* throughput pushed over HTTP/2 rather than sharing the shard's 2 MB/s with
|
|
84
|
+
* every other polling consumer.
|
|
85
|
+
*
|
|
86
|
+
* Use it when several applications read the same stream, or when the
|
|
87
|
+
* function needs the lowest propagation delay; enhanced fan-out is billed
|
|
88
|
+
* per consumer-shard-hour and per GB retrieved, so a single consumer is
|
|
89
|
+
* usually cheaper on shared throughput.
|
|
90
|
+
*
|
|
91
|
+
* @see https://docs.aws.amazon.com/streams/latest/dev/enhanced-consumers.html
|
|
92
|
+
* @see https://docs.aws.amazon.com/lambda/latest/dg/services-kinesis-parameters.html
|
|
93
|
+
*
|
|
94
|
+
* @param consumer - The registered stream consumer, concrete or a `ref()` to
|
|
95
|
+
* a sibling.
|
|
96
|
+
* @param props - Overrides for {@link DEFAULT_KINESIS_EVENT_SOURCE_PROPS} and
|
|
97
|
+
* any other {@link KinesisStreamEventSourceProps}.
|
|
98
|
+
*/
|
|
99
|
+
function kinesisConsumerEventSource(consumer, props) {
|
|
100
|
+
return (0, stream_event_source_js_1.streamEventSource)("kinesis", consumer, props, (resolved, merged) => new aws_lambda_event_sources_1.KinesisConsumerEventSource(resolved, merged));
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=kinesis-event-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kinesis-event-source.js","sourceRoot":"","sources":["../../../src/event-sources/kinesis-event-source.ts"],"names":[],"mappings":";;;AAsHA,gDAUC;AAuBD,gEAUC;AA/JD,mFAI8C;AAI9C,qEAA6D;AAC7D,uFAAsF;AAEtF;;;;;;;;GAQG;AACU,QAAA,kCAAkC,GAAG,mEAAiC,CAAC;AAwCpF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,SAAgB,kBAAkB,CAChC,MAA2B,EAC3B,KAAqC;IAErC,OAAO,IAAA,0CAAiB,EACtB,SAAS,EACT,MAAM,EACN,KAAK,EACL,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,6CAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAC/D,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAgB,0BAA0B,CACxC,QAAqC,EACrC,KAAqC;IAErC,OAAO,IAAA,0CAAiB,EACtB,SAAS,EACT,QAAQ,EACR,KAAK,EACL,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,qDAA0B,CAAC,QAAQ,EAAE,MAAM,CAAC,CACvE,CAAC;AACJ,CAAC"}
|
|
@@ -31,8 +31,8 @@ export declare const DEFAULT_SQS_EVENT_SOURCE_PROPS: Pick<SqsEventSourceProps, "
|
|
|
31
31
|
* guard**: when this source is attached to a {@link IFunctionBuilder}, the
|
|
32
32
|
* builder reads the queue's resolved `visibilityTimeout` off its L1 `CfnQueue`
|
|
33
33
|
* (the `Queue` construct does not re-expose it) and warns, suppressibly, on an
|
|
34
|
-
* actual violation — see ADR-0011. The
|
|
35
|
-
*
|
|
34
|
+
* actual violation (`SQS_VISIBILITY_TIMEOUT_WARNING_ID`) — see ADR-0011. The
|
|
35
|
+
* `maxReceiveCount` floor is checked by `@composurecdk/sqs`'s `QueueBuilder`.
|
|
36
36
|
*
|
|
37
37
|
* @param queue - The source queue, concrete or a `ref()` to a sibling.
|
|
38
38
|
* @param props - Overrides for {@link DEFAULT_SQS_EVENT_SOURCE_PROPS} and any
|
|
@@ -51,8 +51,8 @@ exports.DEFAULT_SQS_EVENT_SOURCE_PROPS = {
|
|
|
51
51
|
* guard**: when this source is attached to a {@link IFunctionBuilder}, the
|
|
52
52
|
* builder reads the queue's resolved `visibilityTimeout` off its L1 `CfnQueue`
|
|
53
53
|
* (the `Queue` construct does not re-expose it) and warns, suppressibly, on an
|
|
54
|
-
* actual violation — see ADR-0011. The
|
|
55
|
-
*
|
|
54
|
+
* actual violation (`SQS_VISIBILITY_TIMEOUT_WARNING_ID`) — see ADR-0011. The
|
|
55
|
+
* `maxReceiveCount` floor is checked by `@composurecdk/sqs`'s `QueueBuilder`.
|
|
56
56
|
*
|
|
57
57
|
* @param queue - The source queue, concrete or a `ref()` to a sibling.
|
|
58
58
|
* @param props - Overrides for {@link DEFAULT_SQS_EVENT_SOURCE_PROPS} and any
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { StreamEventSourceProps } from "aws-cdk-lib/aws-lambda-event-sources";
|
|
2
2
|
/**
|
|
3
3
|
* Secure, AWS-recommended defaults shared by every polling **stream** event
|
|
4
|
-
* source — DynamoDB Streams
|
|
4
|
+
* source — DynamoDB Streams and Kinesis Data Streams. Each field
|
|
5
5
|
* lives on {@link StreamEventSourceProps} (the common base of
|
|
6
6
|
* `DynamoEventSourceProps` and `KinesisEventSourceProps`), so a per-source
|
|
7
7
|
* factory spreads this constant and adds only its source-specific overrides.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-event-source-defaults.d.ts","sourceRoot":"","sources":["../../../src/event-sources/stream-event-source-defaults.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAEnF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iCAAiC,EAAE,IAAI,CAClD,sBAAsB,EACtB,kBAAkB,GAAG,yBAAyB,GAAG,oBAAoB,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"stream-event-source-defaults.d.ts","sourceRoot":"","sources":["../../../src/event-sources/stream-event-source-defaults.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAEnF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iCAAiC,EAAE,IAAI,CAClD,sBAAsB,EACtB,kBAAkB,GAAG,yBAAyB,GAAG,oBAAoB,GAAG,eAAe,CAqCxF,CAAC"}
|
|
@@ -4,7 +4,7 @@ exports.DEFAULT_STREAM_EVENT_SOURCE_PROPS = void 0;
|
|
|
4
4
|
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
5
5
|
/**
|
|
6
6
|
* Secure, AWS-recommended defaults shared by every polling **stream** event
|
|
7
|
-
* source — DynamoDB Streams
|
|
7
|
+
* source — DynamoDB Streams and Kinesis Data Streams. Each field
|
|
8
8
|
* lives on {@link StreamEventSourceProps} (the common base of
|
|
9
9
|
* `DynamoEventSourceProps` and `KinesisEventSourceProps`), so a per-source
|
|
10
10
|
* factory spreads this constant and adds only its source-specific overrides.
|
|
@@ -20,6 +20,7 @@ exports.DEFAULT_STREAM_EVENT_SOURCE_PROPS = {
|
|
|
20
20
|
* with {@link StartingPosition.TRIM_HORIZON} to reprocess from the oldest
|
|
21
21
|
* record in the stream.
|
|
22
22
|
* @see https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html
|
|
23
|
+
* @see https://docs.aws.amazon.com/lambda/latest/dg/services-kinesis-parameters.html
|
|
23
24
|
*/
|
|
24
25
|
startingPosition: aws_lambda_1.StartingPosition.LATEST,
|
|
25
26
|
/**
|
|
@@ -27,6 +28,7 @@ exports.DEFAULT_STREAM_EVENT_SOURCE_PROPS = {
|
|
|
27
28
|
* whole batch and force redelivery of already-processed records. CDK
|
|
28
29
|
* defaults this to `false`.
|
|
29
30
|
* @see https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html#services-ddb-batchfailurereporting
|
|
31
|
+
* @see https://docs.aws.amazon.com/lambda/latest/dg/services-kinesis-batchfailurereporting.html
|
|
30
32
|
*/
|
|
31
33
|
reportBatchItemFailures: true,
|
|
32
34
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-event-source-defaults.js","sourceRoot":"","sources":["../../../src/event-sources/stream-event-source-defaults.ts"],"names":[],"mappings":";;;AAAA,uDAAsE;AAGtE;;;;;;;;;;GAUG;AACU,QAAA,iCAAiC,GAG1C;IACF
|
|
1
|
+
{"version":3,"file":"stream-event-source-defaults.js","sourceRoot":"","sources":["../../../src/event-sources/stream-event-source-defaults.ts"],"names":[],"mappings":";;;AAAA,uDAAsE;AAGtE;;;;;;;;;;GAUG;AACU,QAAA,iCAAiC,GAG1C;IACF;;;;;;;OAOG;IACH,gBAAgB,EAAE,6BAAgB,CAAC,MAAM;IAEzC;;;;;;OAMG;IACH,uBAAuB,EAAE,IAAI;IAE7B;;;;;;OAMG;IACH,kBAAkB,EAAE,IAAI;IAExB;;;;;OAKG;IACH,aAAa,EAAE,EAAE,OAAO,EAAE,CAAC,uBAAU,CAAC,WAAW,CAAC,EAAE;CACrD,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { IEventSource } from "aws-cdk-lib/aws-lambda";
|
|
2
|
+
import { type StreamEventSourceProps } from "aws-cdk-lib/aws-lambda-event-sources";
|
|
3
|
+
import type { IQueue } from "aws-cdk-lib/aws-sqs";
|
|
4
|
+
import { type Resolvable } from "@composurecdk/core";
|
|
5
|
+
import { type ComposureEventSource, type EventSourceKind } from "./composure-event-source.js";
|
|
6
|
+
import { DEFAULT_STREAM_EVENT_SOURCE_PROPS } from "./stream-event-source-defaults.js";
|
|
7
|
+
/** CDK's failure-destination type for a polling stream source, read off its own prop (ADR-0018). */
|
|
8
|
+
type StreamFailureDestination = NonNullable<StreamEventSourceProps["onFailure"]>;
|
|
9
|
+
/** The props every stream factory accepts: CDK's own, with `onFailure` widened. */
|
|
10
|
+
interface WidenedStreamProps {
|
|
11
|
+
onFailure?: Resolvable<IQueue | StreamFailureDestination>;
|
|
12
|
+
}
|
|
13
|
+
/** A factory's props once the defaults are applied and `onFailure` is resolved. */
|
|
14
|
+
type ResolvedStreamProps<P extends WidenedStreamProps> = Omit<P, "onFailure"> & typeof DEFAULT_STREAM_EVENT_SOURCE_PROPS & {
|
|
15
|
+
onFailure?: StreamFailureDestination;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Assembles a polling-stream {@link ComposureEventSource} (DynamoDB, Kinesis)
|
|
19
|
+
* from its upstream resource and the factory's props — the upstream and the
|
|
20
|
+
* `onFailure` destination may each be a `ref()` to a sibling component.
|
|
21
|
+
*
|
|
22
|
+
* Layers `props` over {@link DEFAULT_STREAM_EVENT_SOURCE_PROPS}, then `create`
|
|
23
|
+
* builds the CDK source from the resolved upstream and the merged props, whose
|
|
24
|
+
* `onFailure` is resolved (a bare queue already wrapped in an {@link SqsDlq}).
|
|
25
|
+
* With no destination only the upstream can be lazy, so the single-ref fast
|
|
26
|
+
* path is kept; otherwise both are combined into one deferred value (ADR-0015).
|
|
27
|
+
*
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
export declare function streamEventSource<T, P extends WidenedStreamProps>(kind: EventSourceKind, upstream: Resolvable<T>, props: P | undefined, create: (resolved: T, props: ResolvedStreamProps<P>) => IEventSource): ComposureEventSource;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=stream-event-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-event-source.d.ts","sourceRoot":"","sources":["../../../src/event-sources/stream-event-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAU,KAAK,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC3F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EACL,KAAK,oBAAoB,EAEzB,KAAK,eAAe,EACrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iCAAiC,EAAE,MAAM,mCAAmC,CAAC;AAEtF,oGAAoG;AACpG,KAAK,wBAAwB,GAAG,WAAW,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC;AASjF,mFAAmF;AACnF,UAAU,kBAAkB;IAC1B,SAAS,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,wBAAwB,CAAC,CAAC;CAC3D;AAED,mFAAmF;AACnF,KAAK,mBAAmB,CAAC,CAAC,SAAS,kBAAkB,IAAI,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,GAC3E,OAAO,iCAAiC,GAAG;IAAE,SAAS,CAAC,EAAE,wBAAwB,CAAA;CAAE,CAAC;AAEtF;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,SAAS,kBAAkB,EAC/D,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,EACvB,KAAK,EAAE,CAAC,GAAG,SAAS,EACpB,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,YAAY,GACnE,oBAAoB,CAkBtB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.streamEventSource = streamEventSource;
|
|
4
|
+
const aws_lambda_event_sources_1 = require("aws-cdk-lib/aws-lambda-event-sources");
|
|
5
|
+
const core_1 = require("@composurecdk/core");
|
|
6
|
+
const composure_event_source_js_1 = require("./composure-event-source.js");
|
|
7
|
+
const stream_event_source_defaults_js_1 = require("./stream-event-source-defaults.js");
|
|
8
|
+
/** Wraps a raw queue in an {@link SqsDlq}; passes an existing destination through. */
|
|
9
|
+
function toDlq(destination) {
|
|
10
|
+
// Duck-type the queue rather than `instanceof` — the ESM and CommonJS copies
|
|
11
|
+
// of a package can both load in one process (ADR-0007).
|
|
12
|
+
return "queueArn" in destination ? new aws_lambda_event_sources_1.SqsDlq(destination) : destination;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Assembles a polling-stream {@link ComposureEventSource} (DynamoDB, Kinesis)
|
|
16
|
+
* from its upstream resource and the factory's props — the upstream and the
|
|
17
|
+
* `onFailure` destination may each be a `ref()` to a sibling component.
|
|
18
|
+
*
|
|
19
|
+
* Layers `props` over {@link DEFAULT_STREAM_EVENT_SOURCE_PROPS}, then `create`
|
|
20
|
+
* builds the CDK source from the resolved upstream and the merged props, whose
|
|
21
|
+
* `onFailure` is resolved (a bare queue already wrapped in an {@link SqsDlq}).
|
|
22
|
+
* With no destination only the upstream can be lazy, so the single-ref fast
|
|
23
|
+
* path is kept; otherwise both are combined into one deferred value (ADR-0015).
|
|
24
|
+
*
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
function streamEventSource(kind, upstream, props, create) {
|
|
28
|
+
const { onFailure, ...rest } = props ?? {};
|
|
29
|
+
const merged = { ...stream_event_source_defaults_js_1.DEFAULT_STREAM_EVENT_SOURCE_PROPS, ...rest };
|
|
30
|
+
let source;
|
|
31
|
+
if (onFailure === undefined) {
|
|
32
|
+
source = (0, core_1.isRef)(upstream)
|
|
33
|
+
? upstream.map((resolved) => create(resolved, merged))
|
|
34
|
+
: create(upstream, merged);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
// `Resolved<T>` is a conditional type TypeScript cannot reduce for a generic
|
|
38
|
+
// `T`; every caller passes a construct interface, never a nested `Ref`, so
|
|
39
|
+
// the resolved upstream is `T`.
|
|
40
|
+
source = (0, core_1.combine)({ upstream, onFailure }, (resolved) => create(resolved.upstream, { ...merged, onFailure: toDlq(resolved.onFailure) }));
|
|
41
|
+
}
|
|
42
|
+
return (0, composure_event_source_js_1.composureEventSource)(kind, source);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=stream-event-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-event-source.js","sourceRoot":"","sources":["../../../src/event-sources/stream-event-source.ts"],"names":[],"mappings":";;AA2CA,8CAuBC;AAjED,mFAA2F;AAE3F,6CAAqE;AACrE,2EAIqC;AACrC,uFAAsF;AAKtF,sFAAsF;AACtF,SAAS,KAAK,CAAC,WAA8C;IAC3D,6EAA6E;IAC7E,wDAAwD;IACxD,OAAO,UAAU,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,iCAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC3E,CAAC;AAWD;;;;;;;;;;;;GAYG;AACH,SAAgB,iBAAiB,CAC/B,IAAqB,EACrB,QAAuB,EACvB,KAAoB,EACpB,MAAoE;IAEpE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,IAAK,EAAQ,CAAC;IAClD,MAAM,MAAM,GAAG,EAAE,GAAG,mEAAiC,EAAE,GAAG,IAAI,EAA4B,CAAC;IAE3F,IAAI,MAAgC,CAAC;IACrC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,GAAG,IAAA,YAAK,EAAC,QAAQ,CAAC;YACtB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACtD,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,6EAA6E;QAC7E,2EAA2E;QAC3E,gCAAgC;QAChC,MAAM,GAAG,IAAA,cAAO,EAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CACrD,MAAM,CAAC,QAAQ,CAAC,QAAa,EAAE,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CACpF,CAAC;IACJ,CAAC;IACD,OAAO,IAAA,gDAAoB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function-alarms.d.ts","sourceRoot":"","sources":["../../src/function-alarms.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,KAAK,EAKX,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,QAAQ,IAAI,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAa,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EACL,sBAAsB,EAIvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,mBAAmB,EAGpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"function-alarms.d.ts","sourceRoot":"","sources":["../../src/function-alarms.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,KAAK,EAKX,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,QAAQ,IAAI,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAa,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EACL,sBAAsB,EAIvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,mBAAmB,EAGpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AA6DrF;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,mBAAmB,GAAG,SAAS,EACvC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,8BAA8B,CAAC,EACtE,YAAY,GAAE,mBAAmB,EAAO,GACvC,eAAe,EAAE,CAgKnB;AAiBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,mBAAmB,GAAG,KAAK,GAAG,SAAS,EAC/C,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,8BAA8B,CAAC,EACtE,YAAY,GAAE,mBAAmB,EAAO,EACxC,YAAY,GAAE,sBAAsB,CAAC,cAAc,CAAC,EAAO,GAC1D,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAQvB"}
|
|
@@ -16,7 +16,7 @@ const METRIC_PERIOD_LABEL = `${String(METRIC_PERIOD.toMinutes())} minute`;
|
|
|
16
16
|
*/
|
|
17
17
|
/**
|
|
18
18
|
* Per-mapping ESM alarms shared by every kind that emits the `EventCount`
|
|
19
|
-
* metrics —
|
|
19
|
+
* metrics — SQS, DynamoDB streams and Kinesis all report `FailedInvokeEventCount` and
|
|
20
20
|
* `DroppedEventCount` when the mapping opts into `MetricType.EVENT_COUNT`.
|
|
21
21
|
*/
|
|
22
22
|
const ESM_EVENT_COUNT_SPECS = [
|
|
@@ -38,13 +38,17 @@ const ESM_EVENT_COUNT_SPECS = [
|
|
|
38
38
|
const EVENT_SOURCE_ALARM_SPECS = {
|
|
39
39
|
sqs: ESM_EVENT_COUNT_SPECS,
|
|
40
40
|
dynamodb: ESM_EVENT_COUNT_SPECS,
|
|
41
|
+
kinesis: ESM_EVENT_COUNT_SPECS,
|
|
41
42
|
unknown: [],
|
|
42
43
|
};
|
|
43
44
|
/**
|
|
44
45
|
* Source kinds backed by a stream, for which the function-level `IteratorAge`
|
|
45
|
-
* alarm is created.
|
|
46
|
+
* alarm is created.
|
|
46
47
|
*/
|
|
47
|
-
const STREAM_EVENT_SOURCE_KINDS = new Set([
|
|
48
|
+
const STREAM_EVENT_SOURCE_KINDS = new Set([
|
|
49
|
+
"dynamodb",
|
|
50
|
+
"kinesis",
|
|
51
|
+
]);
|
|
48
52
|
/**
|
|
49
53
|
* Resolves the recommended alarm configuration into fully-resolved
|
|
50
54
|
* {@link AlarmDefinition}s, applying contextual logic for timeout-based
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function-alarms.js","sourceRoot":"","sources":["../../src/function-alarms.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"function-alarms.js","sourceRoot":"","sources":["../../src/function-alarms.ts"],"names":[],"mappings":"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"}
|
package/dist/commonjs/index.d.ts
CHANGED
|
@@ -9,4 +9,5 @@ export { sqsEventSource, DEFAULT_SQS_EVENT_SOURCE_PROPS, } from "./event-sources
|
|
|
9
9
|
export { SQS_VISIBILITY_TIMEOUT_WARNING_ID, STREAM_DLQ_WARNING_ID, } from "./event-sources/event-source-relationship-guards.js";
|
|
10
10
|
export { DEFAULT_STREAM_EVENT_SOURCE_PROPS } from "./event-sources/stream-event-source-defaults.js";
|
|
11
11
|
export { dynamoEventSource, DEFAULT_DYNAMO_EVENT_SOURCE_PROPS, type DynamoStreamEventSourceProps, } from "./event-sources/dynamodb-event-source.js";
|
|
12
|
+
export { kinesisEventSource, kinesisConsumerEventSource, DEFAULT_KINESIS_EVENT_SOURCE_PROPS, type KinesisStreamEventSourceProps, } from "./event-sources/kinesis-event-source.js";
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,mCAAmC,EACnC,yBAAyB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACrB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,cAAc,EACd,8BAA8B,GAC/B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,iCAAiC,EACjC,qBAAqB,GACtB,MAAM,qDAAqD,CAAC;AAC7D,OAAO,EAAE,iCAAiC,EAAE,MAAM,iDAAiD,CAAC;AACpG,OAAO,EACL,iBAAiB,EACjB,iCAAiC,EACjC,KAAK,4BAA4B,GAClC,MAAM,0CAA0C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,mCAAmC,EACnC,yBAAyB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACrB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,cAAc,EACd,8BAA8B,GAC/B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,iCAAiC,EACjC,qBAAqB,GACtB,MAAM,qDAAqD,CAAC;AAC7D,OAAO,EAAE,iCAAiC,EAAE,MAAM,iDAAiD,CAAC;AACpG,OAAO,EACL,iBAAiB,EACjB,iCAAiC,EACjC,KAAK,4BAA4B,GAClC,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,kCAAkC,EAClC,KAAK,6BAA6B,GACnC,MAAM,yCAAyC,CAAC"}
|
package/dist/commonjs/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_DYNAMO_EVENT_SOURCE_PROPS = exports.dynamoEventSource = exports.DEFAULT_STREAM_EVENT_SOURCE_PROPS = exports.STREAM_DLQ_WARNING_ID = exports.SQS_VISIBILITY_TIMEOUT_WARNING_ID = exports.DEFAULT_SQS_EVENT_SOURCE_PROPS = exports.sqsEventSource = exports.FUNCTION_ALARM_DEFAULTS = exports.INVOKE_ON_DEPLOY_DEFAULTS = exports.INVOKE_ON_DEPLOY_TIMEOUT_WARNING_ID = exports.FUNCTION_DEFAULTS = exports.functionGrants = exports.createFunctionBuilder = void 0;
|
|
3
|
+
exports.DEFAULT_KINESIS_EVENT_SOURCE_PROPS = exports.kinesisConsumerEventSource = exports.kinesisEventSource = exports.DEFAULT_DYNAMO_EVENT_SOURCE_PROPS = exports.dynamoEventSource = exports.DEFAULT_STREAM_EVENT_SOURCE_PROPS = exports.STREAM_DLQ_WARNING_ID = exports.SQS_VISIBILITY_TIMEOUT_WARNING_ID = exports.DEFAULT_SQS_EVENT_SOURCE_PROPS = exports.sqsEventSource = exports.FUNCTION_ALARM_DEFAULTS = exports.INVOKE_ON_DEPLOY_DEFAULTS = exports.INVOKE_ON_DEPLOY_TIMEOUT_WARNING_ID = exports.FUNCTION_DEFAULTS = exports.functionGrants = exports.createFunctionBuilder = void 0;
|
|
4
4
|
var function_builder_js_1 = require("./function-builder.js");
|
|
5
5
|
Object.defineProperty(exports, "createFunctionBuilder", { enumerable: true, get: function () { return function_builder_js_1.createFunctionBuilder; } });
|
|
6
6
|
var grants_js_1 = require("./grants.js");
|
|
@@ -23,4 +23,8 @@ Object.defineProperty(exports, "DEFAULT_STREAM_EVENT_SOURCE_PROPS", { enumerable
|
|
|
23
23
|
var dynamodb_event_source_js_1 = require("./event-sources/dynamodb-event-source.js");
|
|
24
24
|
Object.defineProperty(exports, "dynamoEventSource", { enumerable: true, get: function () { return dynamodb_event_source_js_1.dynamoEventSource; } });
|
|
25
25
|
Object.defineProperty(exports, "DEFAULT_DYNAMO_EVENT_SOURCE_PROPS", { enumerable: true, get: function () { return dynamodb_event_source_js_1.DEFAULT_DYNAMO_EVENT_SOURCE_PROPS; } });
|
|
26
|
+
var kinesis_event_source_js_1 = require("./event-sources/kinesis-event-source.js");
|
|
27
|
+
Object.defineProperty(exports, "kinesisEventSource", { enumerable: true, get: function () { return kinesis_event_source_js_1.kinesisEventSource; } });
|
|
28
|
+
Object.defineProperty(exports, "kinesisConsumerEventSource", { enumerable: true, get: function () { return kinesis_event_source_js_1.kinesisConsumerEventSource; } });
|
|
29
|
+
Object.defineProperty(exports, "DEFAULT_KINESIS_EVENT_SOURCE_PROPS", { enumerable: true, get: function () { return kinesis_event_source_js_1.DEFAULT_KINESIS_EVENT_SOURCE_PROPS; } });
|
|
26
30
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,6DAK+B;AAJ7B,4HAAA,qBAAqB,OAAA;AAKvB,yCAA6C;AAApC,2GAAA,cAAc,OAAA;AACvB,6CAAkD;AAAzC,gHAAA,iBAAiB,OAAA;AAC1B,6DAI+B;AAH7B,0IAAA,mCAAmC,OAAA;AACnC,gIAAA,yBAAyB,OAAA;AAI3B,yDAA8D;AAArD,4HAAA,uBAAuB,OAAA;AAKhC,2EAG6C;AAF3C,qHAAA,cAAc,OAAA;AACd,qIAAA,8BAA8B,OAAA;AAEhC,2GAG6D;AAF3D,wJAAA,iCAAiC,OAAA;AACjC,4IAAA,qBAAqB,OAAA;AAEvB,mGAAoG;AAA3F,oJAAA,iCAAiC,OAAA;AAC1C,qFAIkD;AAHhD,6HAAA,iBAAiB,OAAA;AACjB,6IAAA,iCAAiC,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,6DAK+B;AAJ7B,4HAAA,qBAAqB,OAAA;AAKvB,yCAA6C;AAApC,2GAAA,cAAc,OAAA;AACvB,6CAAkD;AAAzC,gHAAA,iBAAiB,OAAA;AAC1B,6DAI+B;AAH7B,0IAAA,mCAAmC,OAAA;AACnC,gIAAA,yBAAyB,OAAA;AAI3B,yDAA8D;AAArD,4HAAA,uBAAuB,OAAA;AAKhC,2EAG6C;AAF3C,qHAAA,cAAc,OAAA;AACd,qIAAA,8BAA8B,OAAA;AAEhC,2GAG6D;AAF3D,wJAAA,iCAAiC,OAAA;AACjC,4IAAA,qBAAqB,OAAA;AAEvB,mGAAoG;AAA3F,oJAAA,iCAAiC,OAAA;AAC1C,qFAIkD;AAHhD,6HAAA,iBAAiB,OAAA;AACjB,6IAAA,iCAAiC,OAAA;AAGnC,mFAKiD;AAJ/C,6HAAA,kBAAkB,OAAA;AAClB,qIAAA,0BAA0B,OAAA;AAC1B,6IAAA,kCAAkC,OAAA"}
|
|
@@ -114,7 +114,7 @@ export interface FunctionAlarmConfig {
|
|
|
114
114
|
* Alarm when the function is falling behind a stream event source.
|
|
115
115
|
*
|
|
116
116
|
* Contextual: a single alarm is created when at least one stream event
|
|
117
|
-
* source (
|
|
117
|
+
* source (DynamoDB streams or Kinesis) is attached via
|
|
118
118
|
* {@link IFunctionBuilder.addEventSource}. Unlike the per-mapping
|
|
119
119
|
* {@link FunctionAlarmConfig.eventSourceFailedInvocations} /
|
|
120
120
|
* {@link FunctionAlarmConfig.eventSourceDroppedEvents} alarms, `IteratorAge`
|
|
@@ -9,7 +9,7 @@ import type { Resolvable } from "@composurecdk/core";
|
|
|
9
9
|
* straight to {@link IFunctionBuilder.addEventSource} as an escape hatch —
|
|
10
10
|
* the builder still attaches it, but cannot reason about it.
|
|
11
11
|
*/
|
|
12
|
-
export type EventSourceKind = "sqs" | "dynamodb" | "unknown";
|
|
12
|
+
export type EventSourceKind = "sqs" | "dynamodb" | "kinesis" | "unknown";
|
|
13
13
|
/** @internal — brands {@link ComposureEventSource} so the guard is unambiguous. */
|
|
14
14
|
declare const COMPOSURE_EVENT_SOURCE: unique symbol;
|
|
15
15
|
/**
|
|
@@ -40,7 +40,7 @@ export declare function composureEventSource(kind: EventSourceKind, source: Reso
|
|
|
40
40
|
/**
|
|
41
41
|
* Reads the event source mapping UUID off a bound CDK source, keyed by
|
|
42
42
|
* {@link EventSourceKind}. Defined only for kinds whose per-mapping ESM
|
|
43
|
-
* metrics back contextual alarms (SQS and
|
|
43
|
+
* metrics back contextual alarms (SQS, DynamoDB and Kinesis streams); `FunctionBuilder`
|
|
44
44
|
* invokes the reader after `addEventSource` so the binding exists. Keying off
|
|
45
45
|
* `kind` — like {@link EVENT_SOURCE_ALARM_SPECS} — keeps the builder from
|
|
46
46
|
* `instanceof`-ing CDK source classes.
|
|
@@ -67,7 +67,7 @@ export interface AttachedEventSource {
|
|
|
67
67
|
kind: EventSourceKind;
|
|
68
68
|
/**
|
|
69
69
|
* The event source mapping UUID, populated for kinds whose per-mapping
|
|
70
|
-
* ESM metrics back contextual alarms (
|
|
70
|
+
* ESM metrics back contextual alarms (SQS and the stream kinds). The contextual
|
|
71
71
|
* alarms key off this dimension.
|
|
72
72
|
*/
|
|
73
73
|
eventSourceMappingId?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composure-event-source.d.ts","sourceRoot":"","sources":["../../../src/event-sources/composure-event-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"composure-event-source.d.ts","sourceRoot":"","sources":["../../../src/event-sources/composure-event-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAO3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAEzE,mFAAmF;AACnF,QAAA,MAAM,sBAAsB,eAAgD,CAAC;AAE7E;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,oBAAoB;IACnC,gBAAgB;IAChB,QAAQ,CAAC,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC;IAExC,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAE/B;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;CAC3C;AAED,oEAAoE;AACpE,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC,GAC/B,oBAAoB,CAEtB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAClD,eAAe,EACf,CAAC,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,CAAC,GAAG,SAAS,CAgB9C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,oBAAoB,GAAG,YAAY,GACzC,KAAK,IAAI,oBAAoB,CAE/B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,oEAAoE;IACpE,GAAG,EAAE,MAAM,CAAC;IAEZ,8DAA8D;IAC9D,IAAI,EAAE,eAAe,CAAC;IAEtB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B"}
|
|
@@ -7,7 +7,7 @@ export function composureEventSource(kind, source) {
|
|
|
7
7
|
/**
|
|
8
8
|
* Reads the event source mapping UUID off a bound CDK source, keyed by
|
|
9
9
|
* {@link EventSourceKind}. Defined only for kinds whose per-mapping ESM
|
|
10
|
-
* metrics back contextual alarms (SQS and
|
|
10
|
+
* metrics back contextual alarms (SQS, DynamoDB and Kinesis streams); `FunctionBuilder`
|
|
11
11
|
* invokes the reader after `addEventSource` so the binding exists. Keying off
|
|
12
12
|
* `kind` — like {@link EVENT_SOURCE_ALARM_SPECS} — keeps the builder from
|
|
13
13
|
* `instanceof`-ing CDK source classes.
|
|
@@ -23,6 +23,10 @@ export const EVENT_SOURCE_MAPPING_ID_READERS = {
|
|
|
23
23
|
// which constructs the `DynamoEventSource` in the same call — kind and
|
|
24
24
|
// concrete class move in lockstep.
|
|
25
25
|
dynamodb: (bound) => bound.eventSourceMappingId,
|
|
26
|
+
// Safe: the `"kinesis"` kind is only ever assigned by `kinesisEventSource()`
|
|
27
|
+
// and `kinesisConsumerEventSource()`, which construct the matching CDK
|
|
28
|
+
// source in the same call.
|
|
29
|
+
kinesis: (bound) => bound.eventSourceMappingId,
|
|
26
30
|
unknown: undefined,
|
|
27
31
|
};
|
|
28
32
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composure-event-source.js","sourceRoot":"","sources":["../../../src/event-sources/composure-event-source.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"composure-event-source.js","sourceRoot":"","sources":["../../../src/event-sources/composure-event-source.ts"],"names":[],"mappings":"AAoBA,mFAAmF;AACnF,MAAM,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;AA4B7E,oEAAoE;AACpE,MAAM,UAAU,oBAAoB,CAClC,IAAqB,EACrB,MAAgC;IAEhC,OAAO,EAAE,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAGxC;IACF,4EAA4E;IAC5E,6EAA6E;IAC7E,oBAAoB;IACpB,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAE,KAAwB,CAAC,oBAAoB;IAC9D,8EAA8E;IAC9E,uEAAuE;IACvE,mCAAmC;IACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAE,KAA2B,CAAC,oBAAoB;IACtE,6EAA6E;IAC7E,uEAAuE;IACvE,2BAA2B;IAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAChB,KAAyD,CAAC,oBAAoB;IACjF,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAA0C;IAE1C,OAAO,sBAAsB,IAAI,KAAK,CAAC;AACzC,CAAC"}
|
|
@@ -2,8 +2,8 @@ import type { ITable } from "aws-cdk-lib/aws-dynamodb";
|
|
|
2
2
|
import type { StartingPosition } from "aws-cdk-lib/aws-lambda";
|
|
3
3
|
import { type DynamoEventSourceProps } from "aws-cdk-lib/aws-lambda-event-sources";
|
|
4
4
|
import type { IQueue } from "aws-cdk-lib/aws-sqs";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import type { Resolvable } from "@composurecdk/core";
|
|
6
|
+
import type { ComposureEventSource } from "./composure-event-source.js";
|
|
7
7
|
/**
|
|
8
8
|
* Secure, AWS-recommended defaults applied to every DynamoDB stream event
|
|
9
9
|
* source built with {@link dynamoEventSource} — the shared
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamodb-event-source.d.ts","sourceRoot":"","sources":["../../../src/event-sources/dynamodb-event-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"dynamodb-event-source.d.ts","sourceRoot":"","sources":["../../../src/event-sources/dynamodb-event-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAIxE;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,sKAAoC,CAAC;AAEnF;;;;;;;GAOG;AACH,MAAM,WAAW,4BAA6B,SAAQ,IAAI,CACxD,sBAAsB,EACtB,WAAW,GAAG,kBAAkB,CACjC;IACC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CACnF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,EACzB,KAAK,CAAC,EAAE,4BAA4B,GACnC,oBAAoB,CAOtB"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { DynamoEventSource,
|
|
2
|
-
import {
|
|
3
|
-
import { composureEventSource } from "./composure-event-source.js";
|
|
1
|
+
import { DynamoEventSource, } from "aws-cdk-lib/aws-lambda-event-sources";
|
|
2
|
+
import { streamEventSource } from "./stream-event-source.js";
|
|
4
3
|
import { DEFAULT_STREAM_EVENT_SOURCE_PROPS } from "./stream-event-source-defaults.js";
|
|
5
4
|
/**
|
|
6
5
|
* Secure, AWS-recommended defaults applied to every DynamoDB stream event
|
|
@@ -10,12 +9,6 @@ import { DEFAULT_STREAM_EVENT_SOURCE_PROPS } from "./stream-event-source-default
|
|
|
10
9
|
* property can be overridden via the factory's `props` argument.
|
|
11
10
|
*/
|
|
12
11
|
export const DEFAULT_DYNAMO_EVENT_SOURCE_PROPS = DEFAULT_STREAM_EVENT_SOURCE_PROPS;
|
|
13
|
-
/** Wraps a raw queue in an {@link SqsDlq}; passes an existing destination through. */
|
|
14
|
-
function toDlq(destination) {
|
|
15
|
-
// Duck-type the queue rather than `instanceof` — the ESM and CommonJS copies
|
|
16
|
-
// of a package can both load in one process (ADR-0007).
|
|
17
|
-
return "queueArn" in destination ? new SqsDlq(destination) : destination;
|
|
18
|
-
}
|
|
19
12
|
/**
|
|
20
13
|
* Wraps a DynamoDB table's change stream as a Lambda {@link IEventSource},
|
|
21
14
|
* deferring resolution when the table (or the `onFailure` DLQ) is a `ref()` to
|
|
@@ -76,23 +69,6 @@ function toDlq(destination) {
|
|
|
76
69
|
* ```
|
|
77
70
|
*/
|
|
78
71
|
export function dynamoEventSource(table, props) {
|
|
79
|
-
|
|
80
|
-
const merged = {
|
|
81
|
-
...DEFAULT_DYNAMO_EVENT_SOURCE_PROPS,
|
|
82
|
-
...rest,
|
|
83
|
-
};
|
|
84
|
-
let source;
|
|
85
|
-
if (onFailure === undefined) {
|
|
86
|
-
// No DLQ: only the table can be lazy — preserve the single-ref fast path.
|
|
87
|
-
source = isRef(table)
|
|
88
|
-
? table.map((resolved) => new DynamoEventSource(resolved, merged))
|
|
89
|
-
: new DynamoEventSource(table, merged);
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
// Table and DLQ are two siblings feeding one source — combine both refs
|
|
93
|
-
// (either may be concrete) into a single deferred value (ADR-0015).
|
|
94
|
-
source = combine({ table, onFailure }, ({ table: resolvedTable, onFailure: resolvedDlq }) => new DynamoEventSource(resolvedTable, { ...merged, onFailure: toDlq(resolvedDlq) }));
|
|
95
|
-
}
|
|
96
|
-
return composureEventSource("dynamodb", source);
|
|
72
|
+
return streamEventSource("dynamodb", table, props, (resolved, merged) => new DynamoEventSource(resolved, merged));
|
|
97
73
|
}
|
|
98
74
|
//# sourceMappingURL=dynamodb-event-source.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamodb-event-source.js","sourceRoot":"","sources":["../../../src/event-sources/dynamodb-event-source.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,
|
|
1
|
+
{"version":3,"file":"dynamodb-event-source.js","sourceRoot":"","sources":["../../../src/event-sources/dynamodb-event-source.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,GAElB,MAAM,sCAAsC,CAAC;AAI9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iCAAiC,EAAE,MAAM,mCAAmC,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,iCAAiC,CAAC;AAqCnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAyB,EACzB,KAAoC;IAEpC,OAAO,iBAAiB,CACtB,UAAU,EACV,KAAK,EACL,KAAK,EACL,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAC9D,CAAC;AACJ,CAAC"}
|
|
@@ -26,8 +26,9 @@ export type EventSourceRelationshipGuard = (fn: LambdaFunction, id: string, key:
|
|
|
26
26
|
/**
|
|
27
27
|
* Per-kind relationship guards, keyed by {@link EventSourceKind}. A kind maps to
|
|
28
28
|
* the (possibly empty) list of relationships to guard for a source of that kind
|
|
29
|
-
* —
|
|
30
|
-
*
|
|
29
|
+
* — a bare escape-hatch source attached as `"unknown"` has none. The SQS
|
|
30
|
+
* `maxReceiveCount` floor is not a relationship guard: it concerns the queue
|
|
31
|
+
* alone, so `@composurecdk/sqs`'s `QueueBuilder` checks it.
|
|
31
32
|
*
|
|
32
33
|
* @internal
|
|
33
34
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-source-relationship-guards.d.ts","sourceRoot":"","sources":["../../../src/event-sources/event-source-relationship-guards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,QAAQ,EAAS,MAAM,aAAa,CAAC;AACtF,OAAO,EAEL,KAAK,QAAQ,IAAI,cAAc,EAC/B,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAiBnE;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,gDAAgD,CAAC;AAE/F;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,4CAA4C,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,MAAM,4BAA4B,GAAG,CACzC,EAAE,EAAE,cAAc,EAClB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,QAAQ,GAAG,SAAS,KAC1B,IAAI,CAAC;AAEV
|
|
1
|
+
{"version":3,"file":"event-source-relationship-guards.d.ts","sourceRoot":"","sources":["../../../src/event-sources/event-source-relationship-guards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,QAAQ,EAAS,MAAM,aAAa,CAAC;AACtF,OAAO,EAEL,KAAK,QAAQ,IAAI,cAAc,EAC/B,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAiBnE;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,gDAAgD,CAAC;AAE/F;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,4CAA4C,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,MAAM,4BAA4B,GAAG,CACzC,EAAE,EAAE,cAAc,EAClB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,QAAQ,GAAG,SAAS,KAC1B,IAAI,CAAC;AAEV;;;;;;;;GAQG;AACH,eAAO,MAAM,gCAAgC,EAAE,MAAM,CACnD,eAAe,EACf,4BAA4B,EAAE,CAQ/B,CAAC"}
|
|
@@ -30,16 +30,18 @@ export const STREAM_DLQ_WARNING_ID = "@composurecdk/lambda:stream-dlq-missing";
|
|
|
30
30
|
/**
|
|
31
31
|
* Per-kind relationship guards, keyed by {@link EventSourceKind}. A kind maps to
|
|
32
32
|
* the (possibly empty) list of relationships to guard for a source of that kind
|
|
33
|
-
* —
|
|
34
|
-
*
|
|
33
|
+
* — a bare escape-hatch source attached as `"unknown"` has none. The SQS
|
|
34
|
+
* `maxReceiveCount` floor is not a relationship guard: it concerns the queue
|
|
35
|
+
* alone, so `@composurecdk/sqs`'s `QueueBuilder` checks it.
|
|
35
36
|
*
|
|
36
37
|
* @internal
|
|
37
38
|
*/
|
|
38
39
|
export const EVENT_SOURCE_RELATIONSHIP_GUARDS = {
|
|
39
40
|
sqs: [guardSqsVisibilityTimeout],
|
|
40
41
|
// `guardStreamFailureDestination` is source-agnostic — it reads only the
|
|
41
|
-
// mapping's own failure config — so
|
|
42
|
+
// mapping's own failure config — so every stream kind shares it.
|
|
42
43
|
dynamodb: [guardStreamFailureDestination],
|
|
44
|
+
kinesis: [guardStreamFailureDestination],
|
|
43
45
|
unknown: [],
|
|
44
46
|
};
|
|
45
47
|
/**
|
|
@@ -121,7 +123,7 @@ function isFiniteBound(value) {
|
|
|
121
123
|
* source does not re-expose them), regardless of build order (ADR-0011).
|
|
122
124
|
*
|
|
123
125
|
* Source-agnostic: it inspects only the mapping's own failure config, so it
|
|
124
|
-
* applies unchanged to
|
|
126
|
+
* applies unchanged to every polling stream kind (DynamoDB and Kinesis).
|
|
125
127
|
* SQS mappings never set these stream-only properties, so the guard stays
|
|
126
128
|
* silent even though the Aspect visits them.
|
|
127
129
|
*/
|
|
@@ -146,7 +148,9 @@ function guardStreamFailureDestination(fn, id) {
|
|
|
146
148
|
`retries/record-age but has no onFailure destination — records that exhaust the bound ` +
|
|
147
149
|
`are dropped silently. Set onFailure to a dead-letter queue (e.g. the sqs "dlq" queue ` +
|
|
148
150
|
`builder) or acknowledge "${STREAM_DLQ_WARNING_ID}". ` +
|
|
149
|
-
`See https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html#services-ddb-errors`
|
|
151
|
+
`See https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html#services-ddb-errors ` +
|
|
152
|
+
`(DynamoDB) or https://docs.aws.amazon.com/lambda/latest/dg/kinesis-on-failure-destination.html ` +
|
|
153
|
+
`(Kinesis)`);
|
|
150
154
|
},
|
|
151
155
|
});
|
|
152
156
|
}
|