Serverless Data Ingestion
Data Engineering AWS CDK, Lambda, EventBridge, API Gateway, Kinesis Firehose
Delivery Constraint & Opportunity Analysis · Updated 1 month, 2 weeks ago
Content
Skill: Serverless Data Ingestion
Capability Domain: Data Engineering
Technology Stack: AWS CDK, Lambda, EventBridge, API Gateway
Linked Activities: Stand Up Serverless Ingestion from Scoped Sources, Backfill Historical GitHub Events, Backfill Historical Jira Issues and Status History
Recipe
- Read Scope Contract
sources. Implement one Lambda per listed source. Do not implement the others. - GitHub (if scoped):
GithubWebhookFnon HTTP API/webhooks/github. VerifyX-Hub-Signature-256against Secrets Managerops-lake/github-webhook-secret. Return 200; SQS for slow writes. - GitHub history (required for cycle time):
GithubBackfillFn— issues and pulls withstate=all,per_page=100, paginate Link headers. Wrap{backfill, kind, repo, payload}. Template:infra/lambdas/github_backfill.py. Timeout 10 min / 1024 MB. Invoke async from populate-lake. - GitLab (if scoped):
GitlabWebhookFnon/webhooks/gitlab,X-Gitlab-Tokenvsops-lake/gitlab-webhook-secret. - Jira (if scoped):
JiraPollFnEventBridgerate(5 minutes), cursor in DynamoDBops-lake-ingestion-cursorsPKsource. This poller is not the lead/cycle extract. Historical issues, changelog status segments, parameterized Started set, and business-day lead/cycle live in skill Jira Flow Extract and activity Backfill Historical Jira Issues and Status History. Implement that path wheneverjirais insourcesand STEP 3/4 will score issue flow time. - Write unmodified JSON to
s3://{raw}/{source}/{yyyy}/{mm}/{dd}/{event-id}.json. Parquet is the next activity. GithubProjectsPollFnis a heartbeat until GraphQL pagination ships. Do not treatgithub_project_itemsas a populated Projects v2 feed.
Copy-this: infra/lambdas/github_webhook.py
Handler: verify HMAC, parse GitHub event, put JSON to raw bucket with key {source}/yyyy/mm/dd/{delivery-id}.json, return 200. Dedupe downstream on event id; do not reject redeliveries.
Escalate
- Payload > API Gateway 10MB.
- Jira rate-limit twice in one day → raise interval, do not swallow.
Pitfalls
- Creating Jira/GitLab functions for a GitHub-only contract.
- Fetching GitHub issues without
state=all(default is open-only). - Treating a Jira current-status poll as cycle time (no changelog timeline, no
resolutiondate).
Details
- Capability Domain:
- Data Engineering
- Technology Stack:
- AWS CDK, Lambda, EventBridge, API Gateway, Kinesis Firehose
- Created:
- 2 months ago
- Updated:
- 1 month, 2 weeks ago
Playbook
Activities Using This Skill 3
- Backfill Historical GitHub Events Build the Operational Data Lake Pipeline
- Backfill Historical Jira Issues and Status History Build the Operational Data Lake Pipeline
- Stand Up Serverless Ingestion from Scoped Sources Build the Operational Data Lake Pipeline