Stand Up Serverless Ingestion from Scoped Sources
BPE-1 Order: #1 Datalake Formation Has Dependencies
Updated 1 month, 2 weeks ago
Guidance
Purpose
Land raw JSON events from scoped sources into the raw bucket. Implement only Lambdas the Scope Contract lists. Org webhook registration is a human GitHub (or GitLab) Settings step after the first CI deploy — deploy does not by itself land events.
Inputs
- Lake Scope Contract (
sources,views, bucket names,secrets.github_webhook). - CDK Application (IngestionStack already declares the functions). Gate is the artifact — predecessors cannot cross workflows.
- Stack output
GithubWebhookUrl(job summary afterdeploy.yml, alsodocs/deploy-manifest.yaml). - Skill Serverless Data Ingestion → Recipe.
Steps
- Open skill Serverless Data Ingestion. Handlers already live under
infra/lambdas/in the starter (github_webhook.py, andjira_flow.pyonly after you copyinfra/lambdas/jira_flow.py.example). Edit signatures / secret names from the contract; do not scaffold empty. - Confirm Secrets Manager
ops-lake/github-webhook-secretexists (CDK creates it; populate-lake may sync). Value must match the GitHub webhook secret you will paste in org Settings. - Register the org webhook (human): GitHub org → Settings → Webhooks → Add webhook. Payload URL =
GithubWebhookUrl. Content typeapplication/json. Secret = the Secrets Manager value. SSL verify. Events: Issues, Pull requests, Pushes, Workflow runs. Save. Send a test ping. - GitHub handler:
GithubWebhookFnbehind/webhooks/github, verifyX-Hub-Signature-256. Return 200; enqueue SQS for slow work. Prove: CloudWatch/aws/lambda/GithubWebhookFn; raw object ats3://{raw}/github/{yyyy}/{mm}/{dd}/. - GitLab: implement only if
gitlabis in the contract. Secretops-lake/gitlab-webhook-secret; headerX-Gitlab-Token(skill 63). - Jira: implement only if
jirais in the contract. Copyinfra/lambdas/jira_flow.py.example→jira_flow.py. The poller lands raw JSON. Historical issues, changelog, and lead/cycle clocks are Backfill Historical Jira Issues and Status History plus skill Jira Flow Extract — a current-status poller is not a cycle-time extract. - Write unmodified JSON to
s3://{raw}/{source}/{yyyy}/{mm}/{dd}/{event-id}.json. No Parquet here. - Idempotent on event id.
GithubProjectsPollFnremains a heartbeat until GraphQL pagination ships — do not joingithub_project_itemsas a populated Master Roadmap.
Done when
- Org webhook is registered (or GitLab equivalent if that host is scoped).
- One working handler per scoped source; zero handlers for unscoped systems.
- Test ping produced a raw object (or CloudWatch shows a verified 200).
- Secrets live in Secrets Manager / SSM, referenced from CDK.
Feeds
Backfill Historical GitHub Events (when github is scoped), Backfill Historical Jira Issues and Status History (when jira is scoped), then Store Compressed and Partitioned in S3.
Details
- Order:
- #1
- Phase:
- Successor:
- BPE-3 Backfill Historical Jira Issues and Status History
- Created:
- Aug 31, 2026
- Last Updated:
- Sep 17, 2026
Workflow
Build the Operational Data Lake Pipeline
Pull operational history from the systems people actually work in into the lake, including closed work, so duration and wait …
View WorkflowAssigned Agent
Data Platform Engineer
Agent: Data Platform Engineer Role Owns Datalake Formation: Scope Contract → Python CDK (DeployStack + …
Required Skills
- Jira Flow Extract Data Engineering Jira REST, JQL, Changelog
- Serverless Data Ingestion Data Engineering AWS CDK, Lambda, EventBridge, API Gateway, Kinesis Firehose
Rules
-
Infrastructure as Code First
infrastructure-as-code-first -
Least-Privilege IAM and Encryption by Default
least-privilege-iam-and-encryption-by-default -
No EMR or Persistent Clusters for Ingestion
no-emr-or-persistent-clusters-for-ingestion
Input Artifacts 3
-
CDK Application (Infrastructure Stacks)
Document
Required
Produced by: Model the Data Lake as CDK Stacks -
CI Deploy Pipeline (GitHub Actions)
Document
Produced by: Deploy via GitHub Actions -
Lake Scope Contract
Document
Required
Produced by: Scope Sources, Org, and Environment
Output Artifacts 1
- Raw Operational Events (S3 Landing Zone) Document Required