{"id":25553842,"url":"https://github.com/docusign/connect-node-listener-aws","last_synced_at":"2025-07-21T04:34:07.039Z","repository":{"id":48441153,"uuid":"191596998","full_name":"docusign/connect-node-listener-aws","owner":"docusign","description":"Connect listener example for AWS: a Node.js listener","archived":false,"fork":false,"pushed_at":"2021-07-26T10:07:52.000Z","size":1723,"stargazers_count":5,"open_issues_count":1,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-11T22:51:36.531Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/docusign.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-06-12T15:23:52.000Z","updated_at":"2022-09-25T17:36:01.000Z","dependencies_parsed_at":"2022-09-15T12:41:45.885Z","dependency_job_id":null,"html_url":"https://github.com/docusign/connect-node-listener-aws","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/docusign/connect-node-listener-aws","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/docusign%2Fconnect-node-listener-aws","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/docusign%2Fconnect-node-listener-aws/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/docusign%2Fconnect-node-listener-aws/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/docusign%2Fconnect-node-listener-aws/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/docusign","download_url":"https://codeload.github.com/docusign/connect-node-listener-aws/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/docusign%2Fconnect-node-listener-aws/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266241055,"owners_count":23898063,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-20T12:02:07.056Z","updated_at":"2025-07-21T04:34:07.021Z","avatar_url":"https://github.com/docusign.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Connect Node Listener for AWS\n\nThis application is a microservice for use with \n[AWS Lambda](https://aws.amazon.com/lambda/)\nserverless functions.\n\nIt acts as a server (a **listener**) for DocuSign\nConnect notification messages. After checking the \nmessage's Basic Authentication and HMAC values,\nthe software enqueues the message onto an\n[AWS Simple Queue Service (SQS)](https://aws.amazon.com/sqs/)\nqueue for processing by other software apps.\n\nThe repo \n[connect-node-worker-aws](../../../connect-node-worker-aws)\nis an example worker application.\nIt receives messages from the queue\nand then processes\nthem. See that repo for more information.\n\n## Architecture\n![Connect listener architecture](docs/connect_listener_architecture.png)\n\nThis figure shows the solution's architecture. \nThis application is written in Node.js. \nThe example worker app is also written in Node.js but \ncould be written in a different language.\n\n### Presentation\nA [presentation](https://docusigninc.box.com/shared/static/1nv8xcqf01vteyjve8sgwgdko98muk0t.pdf)\nabout using AWS as a listener for incoming\nConnect calls is also available.\n\n## Installation\n\nShort form instructions are below. \n[Long form](INSTALLATION.md) instructions are also available.\n\n## Infrastructure\n\nTo deploy the needed infra using the Serverless framework follow [these instructions](INFRA.md) below. \n### Create an AWS SQS queue \n1. Provision an \n   [SQS](https://aws.amazon.com/sqs/) **Queue**. \n   Either a `Standard` or `FIFO` queue can be used.\n\n1. Record the queue's **AWS Region** and **URL**. \n   They will be used\n   by the listener and by the worker application.\n\n1. If a `FIFO` queue is used, Content-Based Deduplication \n   must be enabled. \n   (Or provide a `MessageDeduplicationId`\n   for each queue entry.)\n\n### Lambda Function\n1. Provision a Lambda function.\n\n   **Runtime**: `Node.js 8.x` or `Node.js 10.x`\n\n   **Execution role**: `Create a new role with basic Lambda permissions`\n\n   Add an **API Gateway** trigger.\n   \n   **Record** the **API endpoint URL** for the function. \n   You will provide this URL to DocuSign Connect.\n\n   **Settings for the Lambda function:**\n\n   **Handler**: `index.endpoint`\n\n   **Timeout**: Use 15 seconds\n\n1. Update the code content of the Lambda function to\n   use this repo's `index.js` file. A `package.json` \n   file is not needed.\n\n   You can use the online IDE or a local IDE.\n\n1. Set the Environment Variables for your function:\n   1. **BASIC_AUTH_NAME**: optional. The Basic Authentication\n      name set in the Connect subscription.\n   1. **BASIC_AUTH_PW**: optional. The Basic Authentication\n      password set in the Connect subscription.\n   1. **HMAC_1**: optional. The HMAC secret used by the\n      Connect subscription.\n   1. **QUEUE_REGION**: required. \n      The AWS region for your SQS queue. Example: `us-east-2`\n   1. **QUEUE_URL**: required. \n   1. If a `Standard` queue is used, do **not** set \n      the  **MESSAGE_GROUP_ID** environment variable.\n   \n      If a `FIFO` queue is used, the\n      **MESSAGE_GROUP_ID** environment variable **must** be set.\n      Use `1`.\n\n### Attach SQS policy to the Lambda function’s IAM role\nBy default, the Lambda function will not have \nsufficient privileges to enqueue messages onto\nthe SQS queue.\n\nUse IAM to add an SQS policy to the Lambda function's\nIAM role.\n\n## Testing\nConfigure a DocuSign Connect subscription to send notifications to\nthe Lambda function. Create / complete a DocuSign envelope.\nCheck the Connect logs for feedback.\n\n### Test messages feature\nThis application and the worker application enable test\nmessages to be sent via the queuing system. The test\nmessages do not include XML Connect notification\nmessages. \n\nTo send a test message, use the function's URL with\nquery parameter `test` set to\na test value. A GET or POST request can be used. \n\n### Example notification messages\n\nThe following files have been pretty-printed. \n\n* **webhook_eg_msg_sent.xml** An example envelope sent XML message. \n* **webhook_eg_msg_completed.xml** An example envelope completed XML message. \n\n### Integration testing\nThe worker application includes the test tool `runTest.js` \n\nSee the worker application for information on running the\nintegration tests.\n\n## Usage\n**Do not include documents in the notification messages**\nThe SQS system will not support messages that\ninclude documents. Check that your Connect subscription\nis configured to not include envelope documents nor the\nenvelope's Certificate of Completion.\n\n## License and Pull Requests\n\n### License\nThis repository uses the MIT License. See the LICENSE file for more information.\n\n### Pull Requests\nPull requests are welcomed. Pull requests will only be considered if their content\nuses the MIT License.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdocusign%2Fconnect-node-listener-aws","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdocusign%2Fconnect-node-listener-aws","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdocusign%2Fconnect-node-listener-aws/lists"}