From 57e006717f45db2936e09400cc76d1cba9ed5f61 Mon Sep 17 00:00:00 2001 From: John Gilbert Date: Sat, 1 Feb 2025 21:35:44 -0500 Subject: [PATCH 1/4] add-eb-global-support --- package-lock.json | 4 ++-- package.json | 2 +- src/sinks/eventbridge.js | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index da5b49ce..93905818 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "aws-lambda-stream", - "version": "1.0.30", + "version": "1.0.31", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "aws-lambda-stream", - "version": "1.0.28", + "version": "1.0.31", "license": "MIT", "dependencies": { "object-sizeof": "^2.6.0" diff --git a/package.json b/package.json index 58187c62..ab144178 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aws-lambda-stream", - "version": "1.0.30", + "version": "1.0.31", "description": "Create stream processors with AWS Lambda functions.", "keywords": [ "aws", diff --git a/src/sinks/eventbridge.js b/src/sinks/eventbridge.js index 9ab9390d..4c7adf1d 100644 --- a/src/sinks/eventbridge.js +++ b/src/sinks/eventbridge.js @@ -21,6 +21,7 @@ export const publishToEventBridge = ({ // eslint-disable-line import/prefer-defa maxPublishRequestSize = Number(process.env.PUBLISH_MAX_REQ_SIZE) || Number(process.env.MAX_REQ_SIZE) || 256 * 1024, batchSize = Number(process.env.PUBLISH_BATCH_SIZE) || Number(process.env.BATCH_SIZE) || 10, parallel = Number(process.env.PUBLISH_PARALLEL) || Number(process.env.PARALLEL) || 8, + endpointId = process.env.BUS_ENDPOINT_ID, handleErrors = true, retryConfig, step = 'publish', @@ -47,6 +48,7 @@ export const publishToEventBridge = ({ // eslint-disable-line import/prefer-defa Entries: batchUow.batch .filter((uow) => uow[publishRequestEntryField]) .map((uow) => uow[publishRequestEntryField]), + EndpointId: endpointId || undefined, }, }); From 96b49e0384de66e367b4dd1aec8cccf99bc5419e Mon Sep 17 00:00:00 2001 From: John Gilbert Date: Sun, 2 Feb 2025 20:46:53 -0500 Subject: [PATCH 2/4] add-eb-global-support --- src/sinks/eventbridge.js | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/sinks/eventbridge.js b/src/sinks/eventbridge.js index 4c7adf1d..3e015a58 100644 --- a/src/sinks/eventbridge.js +++ b/src/sinks/eventbridge.js @@ -42,15 +42,21 @@ export const publishToEventBridge = ({ // eslint-disable-line import/prefer-defa } : undefined, }); - const toPublishRequest = (batchUow) => ({ - ...batchUow, - [publishRequestField]: { - Entries: batchUow.batch - .filter((uow) => uow[publishRequestEntryField]) - .map((uow) => uow[publishRequestEntryField]), - EndpointId: endpointId || undefined, - }, - }); + const toPublishRequest = (batchUow) => { + const Entries = batchUow.batch + .filter((uow) => uow[publishRequestEntryField]) + .map((uow) => uow[publishRequestEntryField]); + + return { + ...batchUow, + [publishRequestField]: endpointId ? /* istanbul ignore next */ { + Entries, + EndpointId: endpointId, + } : { + Entries, + }, + }; + }; const putEvents = (batchUow) => { if (!batchUow[publishRequestField].Entries.length) { From 998893043641e78d0788f3c165d3209065c061ee Mon Sep 17 00:00:00 2001 From: John Gilbert Date: Mon, 3 Feb 2025 21:43:55 -0500 Subject: [PATCH 3/4] add-eb-global-support --- src/sinks/eventbridge.js | 24 +++++++--------- test/unit/sinks/eventbridge.test.js | 44 +++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 14 deletions(-) diff --git a/src/sinks/eventbridge.js b/src/sinks/eventbridge.js index 3e015a58..42eb4a75 100644 --- a/src/sinks/eventbridge.js +++ b/src/sinks/eventbridge.js @@ -42,21 +42,17 @@ export const publishToEventBridge = ({ // eslint-disable-line import/prefer-defa } : undefined, }); - const toPublishRequest = (batchUow) => { - const Entries = batchUow.batch - .filter((uow) => uow[publishRequestEntryField]) - .map((uow) => uow[publishRequestEntryField]); - - return { - ...batchUow, - [publishRequestField]: endpointId ? /* istanbul ignore next */ { - Entries, + const toPublishRequest = (batchUow) => ({ + ...batchUow, + [publishRequestField]: { + Entries: batchUow.batch + .filter((uow) => uow[publishRequestEntryField]) + .map((uow) => uow[publishRequestEntryField]), + ...(endpointId && { EndpointId: endpointId, - } : { - Entries, - }, - }; - }; + }), + }, + }); const putEvents = (batchUow) => { if (!batchUow[publishRequestField].Entries.length) { diff --git a/test/unit/sinks/eventbridge.test.js b/test/unit/sinks/eventbridge.test.js index 9cbc65c3..c01037d3 100644 --- a/test/unit/sinks/eventbridge.test.js +++ b/test/unit/sinks/eventbridge.test.js @@ -249,4 +249,48 @@ describe('sinks/eventbridge.js', () => { }) .done(done); }); + + it('should publish to global endpoint', (done) => { + sinon.stub(Connector.prototype, 'putEvents').resolves({ FailedEntryCount: 0 }); + + const uows = [{ + event: { + id: '79a0d8f0-0eef-11ea-8d71-362b9e155667', + type: 'p1', + partitionKey: '79a0d8f0-0eef-11ea-8d71-362b9e155667', + }, + }]; + + _(uows) + .through(publish({ busName: 'b1', debug: (msg, v) => console.log(msg, v), endpointId: 'ep1' })) + .collect() + .tap((collected) => { + // console.log(JSON.stringify(collected, null, 2)); + + expect(collected.length).to.equal(1); + expect(collected[0].publishRequest).to.deep.equal({ + EndpointId: 'ep1', + Entries: [{ + EventBusName: 'b1', + Source: 'custom', + DetailType: 'p1', + Detail: JSON.stringify({ + id: '79a0d8f0-0eef-11ea-8d71-362b9e155667', + type: 'p1', + partitionKey: '79a0d8f0-0eef-11ea-8d71-362b9e155667', + tags: { + account: 'undefined', + region: 'us-west-2', + stage: 'undefined', + source: 'undefined', + functionname: 'undefined', + pipeline: 'undefined', + skip: true, + }, + }), + }], + }); + }) + .done(done); + }); }); From 585860a3965022e5540de0c5d6938bd6aaa69bdf Mon Sep 17 00:00:00 2001 From: John Gilbert Date: Wed, 30 Apr 2025 15:53:03 -0400 Subject: [PATCH 4/4] v1.0.33 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 93905818..c6506c8b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "aws-lambda-stream", - "version": "1.0.31", + "version": "1.0.33", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "aws-lambda-stream", - "version": "1.0.31", + "version": "1.0.33", "license": "MIT", "dependencies": { "object-sizeof": "^2.6.0" diff --git a/package.json b/package.json index ab144178..e964cab3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aws-lambda-stream", - "version": "1.0.31", + "version": "1.0.33", "description": "Create stream processors with AWS Lambda functions.", "keywords": [ "aws",