Event-Driven Workflows
Build event-driven media processing pipelines with AWS EventBridge and Nomad Media.
Event-Driven Workflows
Outbound Notifications to External Systems
Nomad Media does not include a built-in webhook or push notification system for sending real-time events to external systems. Outbound integration — for example, notifying a third-party platform when a new asset is ingested or a record is updated — requires a custom connector built on top of Nomad Media's internal event infrastructure.
Recommended Architecture
A lightweight AWS Lambda function acts as a bridge between Nomad Media's internal event bus and your external system:
- The Lambda subscribes to the relevant Nomad Media internal events
- On each event, it reads the relevant record data from the Nomad Media API
- It then forwards the payload to your external system via whatever mechanism it supports — HTTP webhook callback, Kafka message, SQS queue, or similar
This pattern keeps the integration decoupled from Nomad Media's internals and allows you to transform the payload into whatever shape your external system expects.
Contact Nomad Media to discuss the specific internal events available for your environment and to get help setting up a custom outbound connector.
Nomad Media-to-Customer Sync via Webhook
Nomad Media supports bidirectional synchronization with external systems using Lambda functions and a configuration-driven attribute mapping schema. The same attributes, compliance, and sdkMapping configuration is used across integrations (Monday.com, Smartsheet, etc.).
For full configuration reference, see Third-Party Integrations — Configuration Variables.
Custom Lambda with Nomad Media Authorizer
API Gateways in your AWS account can use the existing Nomad Media Authorizer Lambda to secure custom routes. This gives your Lambda the same authentication and authorization layer as the Nomad Media API itself, using the same bearer token or API key that clients already use.
The authorizer passes 4 Nomad Media-specific attributes to your Lambda:
| Attribute | Type | Value |
|---|---|---|
isAuthd | Boolean | true if the user passed authorization; otherwise false |
userId | GUID | The unique Nomad Media user ID (never changes, even if email changes) |
name | string | First and last name of the user |
email | string | Email address of the user |
Setting Up the Authorizer
To add the Nomad Media Authorizer to your own API Gateway, see Setup Nomad Media Authorizer in API Gateway.
HTTP API Gateway — Sample Lambda
exports.handler = async (event, context) => {
console.log("event:", JSON.stringify(event));
console.log("context:", JSON.stringify(context));
try {
const requestContextObject = event.requestContext;
const isAuthd = requestContextObject.authorizer.lambda.isAuthd;
const userId = requestContextObject.authorizer.lambda.userId;
const name = requestContextObject.authorizer.lambda.name;
const email = requestContextObject.authorizer.lambda.email;
console.log(`isAuthd: ${isAuthd}`);
console.log(`userId: ${userId}`);
console.log(`name: ${name}`);
console.log(`email: ${email}`);
return "OK";
} catch (error) {
console.log(`Error: ${error}`);
}
};Example output:
INFO isAuthd Parameter: true
INFO userId Parameter: 83f15ca3-7e5c-4232-b4c9-57f5333d618a
INFO name Parameter: Test Account
INFO email Parameter: [email protected]
REST API Gateway — Sample Lambda
If you are using a REST API Gateway, the context object is structured differently:
exports.handler = async (event) => {
const requestContextObject = event.requestContext;
const isAuthd = requestContextObject.authorizer.isAuthd;
const userId = requestContextObject.authorizer.userId;
const name = requestContextObject.authorizer.name;
const email = requestContextObject.authorizer.email;
console.log(`isAuthd: ${isAuthd}`);
console.log(`userId: ${userId}`);
console.log(`name: ${name}`);
console.log(`email: ${email}`);
return {
statusCode: 200,
body: JSON.stringify({ message: "OK" })
};
};