Skip to content

Commit b173e95

Browse files
committed
doc update
1 parent 42d5b34 commit b173e95

File tree

1 file changed

+62
-98
lines changed

1 file changed

+62
-98
lines changed

docs/lambda-dependency-groups.md

Lines changed: 62 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -1,112 +1,55 @@
11
# Lambda Dependency Groups
22

3-
This document maps each Lambda function to its dependency group defined in the root `pyproject.toml`.
4-
5-
## Dependency Group Reference
6-
7-
All dependency groups are defined in `/pyproject.toml` under `[dependency-groups]`.
8-
9-
## Pattern 1 Lambdas (BDA)
10-
11-
| Lambda Function | Directory | Dependency Group |
12-
|----------------|-----------|------------------|
13-
| BDA Discovery | `patterns/pattern-1/src/bda_discovery_function` | `lambda-bda-discovery` |
14-
| BDA Invoke | `patterns/pattern-1/src/bda_invoke_function` | `lambda-bda-invoke` |
15-
| BDA Completion | `patterns/pattern-1/src/bda_completion_function` | `lambda-bda-completion` |
16-
| Summarization | `patterns/pattern-1/src/summarization_function` | `lambda-summarization` |
17-
| Process Results | `patterns/pattern-1/src/processresults_function` | `lambda-process-results` |
18-
| HITL Process | `patterns/pattern-1/src/hitl-process-function` | `lambda-hitl` |
19-
| HITL Status Update | `patterns/pattern-1/src/hitl-status-update-function` | `lambda-hitl` |
20-
| HITL Wait | `patterns/pattern-1/src/hitl-wait-function` | `lambda-hitl` |
21-
22-
## Pattern 2 Lambdas (Bedrock)
23-
24-
| Lambda Function | Directory | Dependency Group |
25-
|----------------|-----------|------------------|
26-
| OCR | `patterns/pattern-2/src/ocr_function` | `lambda-ocr` |
27-
| Classification | `patterns/pattern-2/src/classification_function` | `lambda-classification` |
28-
| Extraction | `patterns/pattern-2/src/extraction_function` | `lambda-extraction` |
29-
| Assessment | `patterns/pattern-2/src/assessment_function` | `lambda-assessment` |
30-
| Summarization | `patterns/pattern-2/src/summarization_function` | `lambda-summarization` |
31-
| Process Results | `patterns/pattern-2/src/processresults_function` | `lambda-process-results` |
32-
| HITL Process | `patterns/pattern-2/src/hitl-process-function` | `lambda-hitl` |
33-
| HITL Status Update | `patterns/pattern-2/src/hitl-status-update-function` | `lambda-hitl` |
34-
| HITL Wait | `patterns/pattern-2/src/hitl-wait-function` | `lambda-hitl` |
35-
36-
## Pattern 3 Lambdas (UDOP)
37-
38-
| Lambda Function | Directory | Dependency Group |
39-
|----------------|-----------|------------------|
40-
| OCR | `patterns/pattern-3/src/ocr_function` | `lambda-ocr` |
41-
| Classification | `patterns/pattern-3/src/classification_function` | `lambda-classification` |
42-
| Extraction | `patterns/pattern-3/src/extraction_function` | `lambda-extraction` |
43-
| Assessment | `patterns/pattern-3/src/assessment_function` | `lambda-assessment` |
44-
| Summarization | `patterns/pattern-3/src/summarization_function` | `lambda-summarization` |
45-
| Process Results | `patterns/pattern-3/src/processresults_function` | `lambda-process-results` |
46-
47-
## Main Lambdas (src/lambda)
48-
49-
| Lambda Function | Directory | Dependency Group |
50-
|----------------|-----------|------------------|
51-
| Agent Processor | `src/lambda/agent_processor` | `lambda-agent-processor` |
52-
| Agent Request Handler | `src/lambda/agent_request_handler` | `lambda-agent-request` |
53-
| Chat with Document | `src/lambda/chat_with_document_resolver` | `lambda-chat-document` |
54-
| Configuration Resolver | `src/lambda/configuration_resolver` | `lambda-configuration` |
55-
| Copy to Baseline | `src/lambda/copy_to_baseline_resolver` | `lambda-document-resolver` |
56-
| Create Document | `src/lambda/create_document_resolver` | `lambda-document-resolver` |
57-
| Dashboard Merger | `src/lambda/dashboard_merger` | `lambda-dashboard` |
58-
| Delete Document | `src/lambda/delete_document_resolver` | `lambda-document-resolver` |
59-
| Discovery Processor | `src/lambda/discovery_processor` | `lambda-discovery-processor` |
60-
| Discovery Upload | `src/lambda/discovery_upload_resolver` | `lambda-document-resolver` |
61-
| Evaluation | `src/lambda/evaluation_function` | `lambda-evaluation` |
62-
| Get File Contents | `src/lambda/get_file_contents_resolver` | `lambda-document-resolver` |
63-
| Process Changes | `src/lambda/process_changes_resolver` | `lambda-document-resolver` |
64-
| Queue Processor | `src/lambda/queue_processor` | `lambda-queue` |
65-
| Queue Sender | `src/lambda/queue_sender` | `lambda-queue` |
66-
| Reprocess Document | `src/lambda/reprocess_document_resolver` | `lambda-document-resolver` |
67-
| Cognito Updater HITL | `src/lambda/cognito_updater_hitl` | `lambda-cognito` |
68-
| IPSet Updater | `src/lambda/ipset_updater` | `lambda-ipset` |
69-
| Initialize Counter | `src/lambda/initialize_counter` | `lambda-minimal` |
70-
| Save Reporting Data | `src/lambda/save_reporting_data` | `lambda-minimal` |
71-
| Get Workforce URL | `src/lambda/get-workforce-url` | `lambda-minimal` |
72-
| Create A2I Resources | `src/lambda/create_a2i_resources` | `lambda-minimal` |
73-
| Get StepFunction Execution | `src/lambda/get_stepfunction_execution_resolver` | `lambda-document-resolver` |
74-
| List Available Agents | `src/lambda/list_available_agents` | `lambda-document-resolver` |
75-
| Lookup Function | `src/lambda/lookup_function` | `lambda-document-resolver` |
76-
| Start CodeBuild | `src/lambda/start_codebuild` | `lambda-minimal` |
77-
| Update Configuration | `src/lambda/update_configuration` | `lambda-configuration` |
78-
| Update Settings | `src/lambda/update_settings` | `lambda-document-resolver` |
79-
| Workflow Tracker | `src/lambda/workflow_tracker` | `lambda-document-resolver` |
80-
81-
## Makefile Template
82-
83-
Each lambda directory should have a `Makefile` with the following structure:
3+
## Overview
4+
5+
Lambda functions use **dependency groups** defined in the root `/pyproject.toml` to manage their Python dependencies. This approach provides:
6+
7+
- **Centralized dependency management** - All Lambda dependencies in one place
8+
- **Minimal package sizes** - Each Lambda only gets what it needs
9+
- **Consistent versions** - UV lock file ensures reproducible builds
10+
- **Fast builds** - UV's parallel resolver and caching
11+
12+
## How It Works
13+
14+
1. **Dependency groups** are defined in `/pyproject.toml` under `[dependency-groups]`
15+
2. Each Lambda has a **Makefile** that references its dependency group
16+
3. **SAM Build** uses the Makefile to install dependencies with `uv pip install --target`
17+
4. Dependencies are **locked** via `uv.lock` for reproducibility
18+
19+
## Dependency Group Naming
20+
21+
Groups follow this pattern:
22+
23+
- `lambda-<feature>` - Feature-specific functions (e.g., `lambda-ocr`, `lambda-classification`)
24+
- `lambda-<component>` - Component-specific functions (e.g., `lambda-agent-processor`, `lambda-queue`)
25+
- `lambda-minimal` - Functions with minimal dependencies (boto3 only)
26+
- `lambda-document-resolver` - GraphQL resolvers for document operations
27+
28+
## Lambda Makefile Template
29+
30+
Each Lambda directory contains a `Makefile`:
8431

8532
```makefile
86-
# Makefile for <FunctionName>
8733
build-<FunctionName>:
88-
uv pip install --target "$(ARTIFACTS_DIR)" --python 3.12 "../../../..[<dependency-group>]"
34+
uv pip install --target "$(ARTIFACTS_DIR)" --python 3.12 "<path-to-root>[<dependency-group>]"
8935
cp *.py "$(ARTIFACTS_DIR)/"
9036
rm -rf "$(ARTIFACTS_DIR)"/__pycache__
9137

9238
.PHONY: build-<FunctionName>
9339
```
9440

95-
Example for OCR Function:
41+
**Example** (OCR function at `patterns/pattern-2/src/ocr_function/`):
9642

9743
```makefile
98-
# Makefile for OCRFunction
9944
build-OCRFunction:
10045
uv pip install --target "$(ARTIFACTS_DIR)" --python 3.12 "../../../../[lambda-ocr]"
10146
cp *.py "$(ARTIFACTS_DIR)/"
10247
rm -rf "$(ARTIFACTS_DIR)"/__pycache__
103-
104-
.PHONY: build-OCRFunction
10548
```
10649

107-
## SAM Template Metadata
50+
## SAM Template Configuration
10851

109-
Each Lambda in the SAM template must include:
52+
Each Lambda must include this metadata:
11053

11154
```yaml
11255
Metadata:
@@ -115,16 +58,37 @@ Metadata:
11558

11659
## Adding a New Lambda
11760

118-
1. Add the lambda's dependency group to `/pyproject.toml` under `[dependency-groups]`
119-
2. Run `uv lock` to update the lock file
120-
3. Create a `Makefile` in the lambda directory
121-
4. Update the SAM template with `BuildMethod: makefile` metadata
122-
5. Add entry to this documentation
61+
1. **Define dependency group** in `/pyproject.toml`:
62+
```toml
63+
[dependency-groups]
64+
lambda-my-feature = [
65+
"idp_common[core,my-feature]",
66+
"other-dependency>=1.0.0",
67+
]
68+
```
69+
70+
2. **Lock dependencies**: `uv lock`
71+
72+
3. **Create Makefile** in lambda directory with build target
73+
74+
4. **Update SAM template** with `BuildMethod: makefile` metadata
75+
76+
5. **Build**: `sam build MyFunction`
12377

12478
## Updating Dependencies
12579

126-
To update dependencies for a lambda:
80+
1. Edit dependency group in `/pyproject.toml`
81+
2. Run `uv lock`
82+
3. Rebuild: `sam build <FunctionName>`
12783

128-
1. Edit the dependency group in `/pyproject.toml`
129-
2. Run `uv lock` to update the lock file
130-
3. Rebuild the lambda: `sam build <FunctionName>`
84+
## Finding Lambda Mappings
85+
86+
To find which dependency group a Lambda uses:
87+
88+
```bash
89+
# Find the Lambda's Makefile
90+
find patterns/ src/lambda/ -name "Makefile" -path "*/<lambda-dir>/Makefile"
91+
92+
# Check the dependency group in the uv pip install line
93+
grep "uv pip install" <lambda-dir>/Makefile
94+
```

0 commit comments

Comments
 (0)