dojo.md 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/courses/GENERATION_LOG.md +45 -0
  2. package/courses/aws-lambda-debugging/course.yaml +11 -0
  3. package/courses/aws-lambda-debugging/scenarios/level-1/api-gateway-integration.yaml +71 -0
  4. package/courses/aws-lambda-debugging/scenarios/level-1/cloudwatch-logs-basics.yaml +64 -0
  5. package/courses/aws-lambda-debugging/scenarios/level-1/cold-start-basics.yaml +70 -0
  6. package/courses/aws-lambda-debugging/scenarios/level-1/environment-variable-issues.yaml +72 -0
  7. package/courses/aws-lambda-debugging/scenarios/level-1/first-debugging-shift.yaml +73 -0
  8. package/courses/aws-lambda-debugging/scenarios/level-1/handler-import-errors.yaml +71 -0
  9. package/courses/aws-lambda-debugging/scenarios/level-1/iam-permission-errors.yaml +68 -0
  10. package/courses/aws-lambda-debugging/scenarios/level-1/invocation-errors.yaml +72 -0
  11. package/courses/aws-lambda-debugging/scenarios/level-1/lambda-timeout-errors.yaml +65 -0
  12. package/courses/aws-lambda-debugging/scenarios/level-1/memory-and-oom.yaml +70 -0
  13. package/courses/aws-lambda-debugging/scenarios/level-2/async-invocation-failures.yaml +72 -0
  14. package/courses/aws-lambda-debugging/scenarios/level-2/cold-start-optimization.yaml +76 -0
  15. package/courses/aws-lambda-debugging/scenarios/level-2/dynamodb-streams-debugging.yaml +70 -0
  16. package/courses/aws-lambda-debugging/scenarios/level-2/intermediate-debugging-shift.yaml +71 -0
  17. package/courses/aws-lambda-debugging/scenarios/level-2/lambda-concurrency-management.yaml +70 -0
  18. package/courses/aws-lambda-debugging/scenarios/level-2/lambda-layers-debugging.yaml +76 -0
  19. package/courses/aws-lambda-debugging/scenarios/level-2/sam-local-debugging.yaml +74 -0
  20. package/courses/aws-lambda-debugging/scenarios/level-2/sqs-event-source.yaml +72 -0
  21. package/courses/aws-lambda-debugging/scenarios/level-2/vpc-networking-issues.yaml +71 -0
  22. package/courses/aws-lambda-debugging/scenarios/level-2/xray-tracing.yaml +62 -0
  23. package/courses/aws-lambda-debugging/scenarios/level-3/advanced-debugging-shift.yaml +72 -0
  24. package/courses/aws-lambda-debugging/scenarios/level-3/container-image-lambda.yaml +79 -0
  25. package/courses/aws-lambda-debugging/scenarios/level-3/cross-account-invocation.yaml +72 -0
  26. package/courses/aws-lambda-debugging/scenarios/level-3/eventbridge-patterns.yaml +79 -0
  27. package/courses/aws-lambda-debugging/scenarios/level-3/iac-deployment-debugging.yaml +68 -0
  28. package/courses/aws-lambda-debugging/scenarios/level-3/kinesis-stream-processing.yaml +64 -0
  29. package/courses/aws-lambda-debugging/scenarios/level-3/lambda-at-edge.yaml +64 -0
  30. package/courses/aws-lambda-debugging/scenarios/level-3/lambda-extensions-debugging.yaml +67 -0
  31. package/courses/aws-lambda-debugging/scenarios/level-3/powertools-observability.yaml +79 -0
  32. package/courses/aws-lambda-debugging/scenarios/level-3/step-functions-debugging.yaml +80 -0
  33. package/courses/aws-lambda-debugging/scenarios/level-4/cost-optimization-strategy.yaml +67 -0
  34. package/courses/aws-lambda-debugging/scenarios/level-4/expert-debugging-shift.yaml +62 -0
  35. package/courses/aws-lambda-debugging/scenarios/level-4/incident-management-serverless.yaml +61 -0
  36. package/courses/aws-lambda-debugging/scenarios/level-4/multi-region-serverless.yaml +67 -0
  37. package/courses/aws-lambda-debugging/scenarios/level-4/observability-platform-design.yaml +71 -0
  38. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-architecture-design.yaml +64 -0
  39. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-data-architecture.yaml +66 -0
  40. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-migration-strategy.yaml +65 -0
  41. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-security-design.yaml +60 -0
  42. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-testing-strategy.yaml +62 -0
  43. package/courses/aws-lambda-debugging/scenarios/level-5/board-serverless-strategy.yaml +63 -0
  44. package/courses/aws-lambda-debugging/scenarios/level-5/consulting-serverless-adoption.yaml +57 -0
  45. package/courses/aws-lambda-debugging/scenarios/level-5/industry-serverless-patterns.yaml +62 -0
  46. package/courses/aws-lambda-debugging/scenarios/level-5/ma-serverless-integration.yaml +75 -0
  47. package/courses/aws-lambda-debugging/scenarios/level-5/master-debugging-shift.yaml +61 -0
  48. package/courses/aws-lambda-debugging/scenarios/level-5/organizational-serverless-transformation.yaml +65 -0
  49. package/courses/aws-lambda-debugging/scenarios/level-5/regulatory-serverless.yaml +61 -0
  50. package/courses/aws-lambda-debugging/scenarios/level-5/serverless-economics.yaml +65 -0
  51. package/courses/aws-lambda-debugging/scenarios/level-5/serverless-future-technology.yaml +66 -0
  52. package/courses/aws-lambda-debugging/scenarios/level-5/serverless-platform-design.yaml +71 -0
  53. package/courses/docker-container-debugging/course.yaml +11 -0
  54. package/courses/docker-container-debugging/scenarios/level-1/container-exit-codes.yaml +59 -0
  55. package/courses/docker-container-debugging/scenarios/level-1/container-networking-basics.yaml +69 -0
  56. package/courses/docker-container-debugging/scenarios/level-1/docker-logs-debugging.yaml +67 -0
  57. package/courses/docker-container-debugging/scenarios/level-1/dockerfile-build-failures.yaml +71 -0
  58. package/courses/docker-container-debugging/scenarios/level-1/environment-variable-issues.yaml +74 -0
  59. package/courses/docker-container-debugging/scenarios/level-1/first-debugging-shift.yaml +70 -0
  60. package/courses/docker-container-debugging/scenarios/level-1/image-pull-failures.yaml +68 -0
  61. package/courses/docker-container-debugging/scenarios/level-1/port-mapping-issues.yaml +67 -0
  62. package/courses/docker-container-debugging/scenarios/level-1/resource-limits-oom.yaml +70 -0
  63. package/courses/docker-container-debugging/scenarios/level-1/volume-mount-problems.yaml +66 -0
  64. package/courses/docker-container-debugging/scenarios/level-2/container-health-checks.yaml +73 -0
  65. package/courses/docker-container-debugging/scenarios/level-2/docker-compose-debugging.yaml +66 -0
  66. package/courses/docker-container-debugging/scenarios/level-2/docker-exec-debugging.yaml +71 -0
  67. package/courses/docker-container-debugging/scenarios/level-2/image-layer-optimization.yaml +81 -0
  68. package/courses/docker-container-debugging/scenarios/level-2/intermediate-debugging-shift.yaml +73 -0
  69. package/courses/docker-container-debugging/scenarios/level-2/logging-and-log-rotation.yaml +76 -0
  70. package/courses/docker-container-debugging/scenarios/level-2/multi-stage-build-debugging.yaml +76 -0
  71. package/courses/docker-container-debugging/scenarios/level-2/network-debugging-tools.yaml +67 -0
  72. package/courses/docker-container-debugging/scenarios/level-2/pid1-signal-handling.yaml +71 -0
  73. package/courses/docker-container-debugging/scenarios/level-2/security-scanning-basics.yaml +67 -0
  74. package/courses/docker-container-debugging/scenarios/level-3/advanced-debugging-shift.yaml +77 -0
  75. package/courses/docker-container-debugging/scenarios/level-3/buildkit-optimization.yaml +67 -0
  76. package/courses/docker-container-debugging/scenarios/level-3/container-filesystem-debugging.yaml +70 -0
  77. package/courses/docker-container-debugging/scenarios/level-3/container-security-hardening.yaml +74 -0
  78. package/courses/docker-container-debugging/scenarios/level-3/disk-space-management.yaml +74 -0
  79. package/courses/docker-container-debugging/scenarios/level-3/docker-api-automation.yaml +72 -0
  80. package/courses/docker-container-debugging/scenarios/level-3/docker-daemon-issues.yaml +73 -0
  81. package/courses/docker-container-debugging/scenarios/level-3/docker-in-docker-ci.yaml +69 -0
  82. package/courses/docker-container-debugging/scenarios/level-3/overlay-network-debugging.yaml +70 -0
  83. package/courses/docker-container-debugging/scenarios/level-3/production-container-ops.yaml +71 -0
  84. package/courses/docker-container-debugging/scenarios/level-4/cicd-pipeline-design.yaml +66 -0
  85. package/courses/docker-container-debugging/scenarios/level-4/container-monitoring-observability.yaml +63 -0
  86. package/courses/docker-container-debugging/scenarios/level-4/container-orchestration-strategy.yaml +62 -0
  87. package/courses/docker-container-debugging/scenarios/level-4/container-performance-engineering.yaml +64 -0
  88. package/courses/docker-container-debugging/scenarios/level-4/container-security-architecture.yaml +66 -0
  89. package/courses/docker-container-debugging/scenarios/level-4/enterprise-image-management.yaml +58 -0
  90. package/courses/docker-container-debugging/scenarios/level-4/expert-debugging-shift.yaml +63 -0
  91. package/courses/docker-container-debugging/scenarios/level-4/incident-response-containers.yaml +70 -0
  92. package/courses/docker-container-debugging/scenarios/level-4/multi-environment-management.yaml +65 -0
  93. package/courses/docker-container-debugging/scenarios/level-4/stateful-service-containers.yaml +65 -0
  94. package/courses/docker-container-debugging/scenarios/level-5/board-infrastructure-strategy.yaml +58 -0
  95. package/courses/docker-container-debugging/scenarios/level-5/consulting-container-strategy.yaml +61 -0
  96. package/courses/docker-container-debugging/scenarios/level-5/container-platform-architecture.yaml +67 -0
  97. package/courses/docker-container-debugging/scenarios/level-5/container-platform-economics.yaml +67 -0
  98. package/courses/docker-container-debugging/scenarios/level-5/container-technology-evolution.yaml +67 -0
  99. package/courses/docker-container-debugging/scenarios/level-5/disaster-recovery-containers.yaml +66 -0
  100. package/courses/docker-container-debugging/scenarios/level-5/industry-container-patterns.yaml +71 -0
  101. package/courses/docker-container-debugging/scenarios/level-5/master-debugging-shift.yaml +62 -0
  102. package/courses/docker-container-debugging/scenarios/level-5/organizational-transformation.yaml +67 -0
  103. package/courses/docker-container-debugging/scenarios/level-5/regulatory-compliance-containers.yaml +61 -0
  104. package/courses/kubernetes-deployment-troubleshooting/course.yaml +12 -0
  105. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/configmap-secret-issues.yaml +69 -0
  106. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/crashloopbackoff.yaml +68 -0
  107. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/deployment-rollout.yaml +56 -0
  108. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/first-troubleshooting-shift.yaml +65 -0
  109. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/health-probe-failures.yaml +70 -0
  110. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/imagepullbackoff.yaml +57 -0
  111. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/kubectl-debugging-basics.yaml +56 -0
  112. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/oomkilled.yaml +70 -0
  113. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/pending-pods.yaml +68 -0
  114. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/service-not-reachable.yaml +66 -0
  115. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/dns-resolution-failures.yaml +63 -0
  116. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/helm-deployment-failures.yaml +63 -0
  117. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/hpa-scaling-issues.yaml +62 -0
  118. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/ingress-routing-issues.yaml +63 -0
  119. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/init-container-failures.yaml +63 -0
  120. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/intermediate-troubleshooting-shift.yaml +66 -0
  121. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/network-policy-blocking.yaml +67 -0
  122. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/persistent-volume-issues.yaml +69 -0
  123. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/rbac-permission-denied.yaml +57 -0
  124. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/resource-quota-limits.yaml +64 -0
  125. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/advanced-troubleshooting-shift.yaml +69 -0
  126. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/cluster-upgrade-failures.yaml +71 -0
  127. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/gitops-drift-detection.yaml +62 -0
  128. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/job-cronjob-failures.yaml +67 -0
  129. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/monitoring-alerting-gaps.yaml +64 -0
  130. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/multi-container-debugging.yaml +68 -0
  131. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/node-pressure-evictions.yaml +70 -0
  132. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/pod-disruption-budgets.yaml +59 -0
  133. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/service-mesh-debugging.yaml +64 -0
  134. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/statefulset-troubleshooting.yaml +69 -0
  135. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/capacity-planning.yaml +65 -0
  136. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/cost-optimization.yaml +57 -0
  137. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/disaster-recovery-design.yaml +56 -0
  138. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/executive-communication.yaml +62 -0
  139. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/expert-troubleshooting-shift.yaml +65 -0
  140. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/incident-management-process.yaml +59 -0
  141. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/multi-cluster-operations.yaml +62 -0
  142. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/multi-tenancy-design.yaml +55 -0
  143. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/platform-engineering.yaml +59 -0
  144. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/security-hardening.yaml +58 -0
  145. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/behavioral-science.yaml +62 -0
  146. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/board-strategy.yaml +61 -0
  147. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/cloud-native-future.yaml +65 -0
  148. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/comprehensive-platform.yaml +57 -0
  149. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/consulting-engagement.yaml +62 -0
  150. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/industry-benchmarks.yaml +58 -0
  151. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/ma-integration.yaml +62 -0
  152. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/master-troubleshooting-shift.yaml +73 -0
  153. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/product-development.yaml +65 -0
  154. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/regulatory-compliance.yaml +76 -0
  155. package/courses/mysql-query-optimization/course.yaml +11 -0
  156. package/courses/mysql-query-optimization/scenarios/level-1/buffer-pool-basics.yaml +65 -0
  157. package/courses/mysql-query-optimization/scenarios/level-1/explain-basics.yaml +66 -0
  158. package/courses/mysql-query-optimization/scenarios/level-1/first-optimization-shift.yaml +78 -0
  159. package/courses/mysql-query-optimization/scenarios/level-1/innodb-index-fundamentals.yaml +68 -0
  160. package/courses/mysql-query-optimization/scenarios/level-1/join-basics.yaml +66 -0
  161. package/courses/mysql-query-optimization/scenarios/level-1/n-plus-one-queries.yaml +67 -0
  162. package/courses/mysql-query-optimization/scenarios/level-1/query-rewriting-basics.yaml +66 -0
  163. package/courses/mysql-query-optimization/scenarios/level-1/select-star-problems.yaml +68 -0
  164. package/courses/mysql-query-optimization/scenarios/level-1/slow-query-diagnosis.yaml +65 -0
  165. package/courses/mysql-query-optimization/scenarios/level-1/where-clause-optimization.yaml +65 -0
  166. package/courses/mysql-query-optimization/scenarios/level-2/buffer-pool-tuning.yaml +64 -0
  167. package/courses/mysql-query-optimization/scenarios/level-2/composite-index-design.yaml +71 -0
  168. package/courses/mysql-query-optimization/scenarios/level-2/covering-and-invisible-indexes.yaml +69 -0
  169. package/courses/mysql-query-optimization/scenarios/level-2/cte-and-window-functions.yaml +78 -0
  170. package/courses/mysql-query-optimization/scenarios/level-2/intermediate-optimization-shift.yaml +68 -0
  171. package/courses/mysql-query-optimization/scenarios/level-2/join-optimization.yaml +67 -0
  172. package/courses/mysql-query-optimization/scenarios/level-2/performance-schema-analysis.yaml +69 -0
  173. package/courses/mysql-query-optimization/scenarios/level-2/query-optimizer-hints.yaml +74 -0
  174. package/courses/mysql-query-optimization/scenarios/level-2/subquery-optimization.yaml +70 -0
  175. package/courses/mysql-query-optimization/scenarios/level-2/write-optimization.yaml +63 -0
  176. package/courses/mysql-query-optimization/scenarios/level-3/advanced-optimization-shift.yaml +71 -0
  177. package/courses/mysql-query-optimization/scenarios/level-3/connection-management.yaml +67 -0
  178. package/courses/mysql-query-optimization/scenarios/level-3/full-text-search.yaml +77 -0
  179. package/courses/mysql-query-optimization/scenarios/level-3/json-optimization.yaml +87 -0
  180. package/courses/mysql-query-optimization/scenarios/level-3/lock-contention-analysis.yaml +68 -0
  181. package/courses/mysql-query-optimization/scenarios/level-3/monitoring-alerting.yaml +63 -0
  182. package/courses/mysql-query-optimization/scenarios/level-3/online-schema-changes.yaml +79 -0
  183. package/courses/mysql-query-optimization/scenarios/level-3/partitioning-strategies.yaml +83 -0
  184. package/courses/mysql-query-optimization/scenarios/level-3/query-profiling-deep-dive.yaml +84 -0
  185. package/courses/mysql-query-optimization/scenarios/level-3/replication-optimization.yaml +66 -0
  186. package/courses/mysql-query-optimization/scenarios/level-4/aurora-vs-rds-evaluation.yaml +61 -0
  187. package/courses/mysql-query-optimization/scenarios/level-4/data-architecture.yaml +62 -0
  188. package/courses/mysql-query-optimization/scenarios/level-4/database-migration-planning.yaml +59 -0
  189. package/courses/mysql-query-optimization/scenarios/level-4/enterprise-governance.yaml +50 -0
  190. package/courses/mysql-query-optimization/scenarios/level-4/executive-communication.yaml +54 -0
  191. package/courses/mysql-query-optimization/scenarios/level-4/expert-optimization-shift.yaml +67 -0
  192. package/courses/mysql-query-optimization/scenarios/level-4/high-availability-architecture.yaml +60 -0
  193. package/courses/mysql-query-optimization/scenarios/level-4/optimizer-internals.yaml +62 -0
  194. package/courses/mysql-query-optimization/scenarios/level-4/performance-sla-design.yaml +52 -0
  195. package/courses/mysql-query-optimization/scenarios/level-4/read-replica-scaling.yaml +51 -0
  196. package/courses/mysql-query-optimization/scenarios/level-5/ai-database-future.yaml +45 -0
  197. package/courses/mysql-query-optimization/scenarios/level-5/behavioral-science.yaml +44 -0
  198. package/courses/mysql-query-optimization/scenarios/level-5/benchmark-design.yaml +47 -0
  199. package/courses/mysql-query-optimization/scenarios/level-5/board-strategy.yaml +48 -0
  200. package/courses/mysql-query-optimization/scenarios/level-5/comprehensive-platform.yaml +49 -0
  201. package/courses/mysql-query-optimization/scenarios/level-5/consulting-engagement.yaml +52 -0
  202. package/courses/mysql-query-optimization/scenarios/level-5/ma-database-integration.yaml +47 -0
  203. package/courses/mysql-query-optimization/scenarios/level-5/master-optimization-shift.yaml +56 -0
  204. package/courses/mysql-query-optimization/scenarios/level-5/product-development.yaml +48 -0
  205. package/courses/mysql-query-optimization/scenarios/level-5/regulatory-compliance.yaml +48 -0
  206. package/courses/postgresql-query-optimization/scenarios/level-5/comprehensive-database-system.yaml +70 -0
  207. package/courses/postgresql-query-optimization/scenarios/level-5/database-ai-future.yaml +81 -0
  208. package/courses/postgresql-query-optimization/scenarios/level-5/database-behavioral-science.yaml +63 -0
  209. package/courses/postgresql-query-optimization/scenarios/level-5/database-board-strategy.yaml +77 -0
  210. package/courses/postgresql-query-optimization/scenarios/level-5/database-consulting-engagement.yaml +61 -0
  211. package/courses/postgresql-query-optimization/scenarios/level-5/database-industry-benchmarks.yaml +64 -0
  212. package/courses/postgresql-query-optimization/scenarios/level-5/database-ma-integration.yaml +71 -0
  213. package/courses/postgresql-query-optimization/scenarios/level-5/database-product-development.yaml +72 -0
  214. package/courses/postgresql-query-optimization/scenarios/level-5/database-regulatory-landscape.yaml +76 -0
  215. package/courses/postgresql-query-optimization/scenarios/level-5/master-optimization-shift.yaml +66 -0
  216. package/courses/terraform-infrastructure-setup/course.yaml +11 -0
  217. package/courses/terraform-infrastructure-setup/scenarios/level-1/terraform-init-errors.yaml +72 -0
  218. package/dist/mcp/session-manager.d.ts +7 -4
  219. package/dist/mcp/session-manager.d.ts.map +1 -1
  220. package/dist/mcp/session-manager.js +23 -8
  221. package/dist/mcp/session-manager.js.map +1 -1
  222. package/package.json +1 -1
@@ -0,0 +1,72 @@
1
+ meta:
2
+ id: invocation-errors
3
+ level: 1
4
+ course: aws-lambda-debugging
5
+ type: output
6
+ description: "Debug Lambda invocation errors — diagnose throttling, concurrency limits, and invocation type differences (sync vs async)"
7
+ tags: [AWS, Lambda, invocation, throttling, concurrency, sync-async, beginner]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your Lambda function starts returning errors during a traffic spike:
13
+
14
+ $ aws lambda invoke --function-name process-order output.json
15
+ {
16
+ "StatusCode": 429,
17
+ "FunctionError": "Unhandled"
18
+ }
19
+
20
+ $ cat output.json
21
+ {
22
+ "errorType": "TooManyRequestsException",
23
+ "errorMessage": "Rate exceeded"
24
+ }
25
+
26
+ CloudWatch metrics show:
27
+ - Throttles: 1,500 (these are rejected requests!)
28
+ - ConcurrentExecutions: 1,000 (account limit)
29
+ - Errors: 200 (actual function errors)
30
+ - Invocations: 8,300
31
+
32
+ The account has a default concurrency limit of 1,000 across ALL
33
+ Lambda functions. Your function is consuming 800 concurrent
34
+ executions, starving other functions.
35
+
36
+ Important: Throttles are NOT counted in Invocations or Errors
37
+ metrics! You must monitor the Throttles metric separately.
38
+
39
+ Understanding invocation types:
40
+
41
+ Synchronous (RequestResponse):
42
+ - API Gateway, CLI invoke, SDK invoke
43
+ - Caller waits for response
44
+ - Throttled: returns 429 immediately
45
+ - Errors: returned to caller
46
+
47
+ Asynchronous (Event):
48
+ - S3 events, SNS, EventBridge
49
+ - Caller gets 202 Accepted immediately
50
+ - Lambda retries twice on failure
51
+ - Throttled: Lambda retries with backoff for up to 6 hours
52
+ - Failed after retries: sent to DLQ or destination
53
+
54
+ Task: Explain Lambda invocation debugging. Write: synchronous vs
55
+ asynchronous invocation differences, throttling (what it is, how
56
+ to detect, how to fix), concurrency limits (account vs function
57
+ reserved), the retry behavior for each invocation type, and how
58
+ to monitor invocation health.
59
+
60
+ assertions:
61
+ - type: llm_judge
62
+ criteria: "Invocation types are explained — synchronous: caller waits, gets response or error. Used by API Gateway, CLI, SDK. Asynchronous: caller gets 202 immediately, Lambda processes in background. Used by S3, SNS, EventBridge. Lambda retries async failures twice (3 total attempts). Poll-based: Lambda polls event source (SQS, Kinesis, DynamoDB Streams) — behaves differently for each. Understanding invocation type is critical because error handling, retry behavior, and throttling behavior differ for each"
63
+ weight: 0.35
64
+ description: "Invocation types"
65
+ - type: llm_judge
66
+ criteria: "Throttling and concurrency are covered — default account limit: 1,000 concurrent executions (can be increased via support). Throttling = requests rejected when concurrency limit reached. Throttles metric: must monitor separately (not counted in Invocations or Errors!). Reserved concurrency: guarantee capacity for a function (but limits it too). Provisioned concurrency: pre-warm environments for consistent latency. Fix throttling: request limit increase, use reserved concurrency to protect critical functions, implement backoff in callers, use SQS to buffer requests"
67
+ weight: 0.35
68
+ description: "Throttling and concurrency"
69
+ - type: llm_judge
70
+ criteria: "Monitoring and retry behavior are practical — monitor: Invocations, Errors, Throttles, Duration, ConcurrentExecutions. Set alarms on: Throttles > 0, Error rate > 5%, Duration approaching timeout. Retry behavior: sync — no automatic retry (caller must retry), async — 2 retries with exponential backoff, then DLQ/destination. SQS: retries based on visibility timeout, then DLQ. Kinesis/DynamoDB Streams: retries until record expires or succeeds (can block shard). Configure maxRetryAttempts and DLQ for each invocation pattern"
71
+ weight: 0.30
72
+ description: "Monitoring and retry"
@@ -0,0 +1,65 @@
1
+ meta:
2
+ id: lambda-timeout-errors
3
+ level: 1
4
+ course: aws-lambda-debugging
5
+ type: output
6
+ description: "Debug Lambda timeout errors — diagnose why functions exceed their configured timeout and how to fix common timeout causes"
7
+ tags: [AWS, Lambda, timeout, duration, configuration, beginner]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your Lambda function fails with a timeout error:
13
+
14
+ $ aws lambda invoke --function-name process-order output.json
15
+ {
16
+ "StatusCode": 200,
17
+ "FunctionError": "Unhandled",
18
+ "ExecutedVersion": "$LATEST"
19
+ }
20
+
21
+ $ cat output.json
22
+ {
23
+ "errorMessage": "2024-12-01T10:00:00.000Z abc-123 Task timed out after 3.00 seconds"
24
+ }
25
+
26
+ CloudWatch Logs:
27
+ START RequestId: abc-123 Version: $LATEST
28
+ 2024-12-01T10:00:00.000Z abc-123 Connecting to database...
29
+ 2024-12-01T10:00:03.000Z abc-123 Task timed out after 3.00 seconds
30
+ END RequestId: abc-123
31
+ REPORT RequestId: abc-123 Duration: 3001.45 ms
32
+ Billed Duration: 3000 ms Memory Size: 128 MB Max Memory Used: 65 MB
33
+
34
+ The function has a 3-second timeout (default) but the database
35
+ connection takes 4+ seconds on cold start. The function never
36
+ reaches the actual business logic.
37
+
38
+ Fix options:
39
+ 1. Increase timeout: aws lambda update-function-configuration \
40
+ --function-name process-order --timeout 30
41
+ 2. Optimize: connection pooling, move DB connection outside handler
42
+ 3. Use RDS Proxy for faster connection establishment
43
+
44
+ But setting timeout too high is also a problem — if the function
45
+ hangs, you pay for the full duration (max 15 minutes).
46
+
47
+ Task: Explain Lambda timeout debugging. Write: what the timeout
48
+ error means, how to read the REPORT line (Duration, Billed Duration,
49
+ Memory), common timeout causes (DB connections, API calls, large
50
+ payloads), how to set appropriate timeouts, and the relationship
51
+ between Lambda timeout and API Gateway timeout (29 seconds max).
52
+
53
+ assertions:
54
+ - type: llm_judge
55
+ criteria: "Timeout mechanics are explained — Lambda timeout is configurable (default 3 seconds, max 15 minutes). When exceeded, Lambda kills the execution and returns a Task timed out error. The REPORT line shows: Duration (actual execution time), Billed Duration (rounded up to nearest ms or 1ms minimum), Memory Size (configured), Max Memory Used (peak). Billed for full timeout duration if it times out. CloudWatch Logs show what happened before timeout"
56
+ weight: 0.35
57
+ description: "Timeout mechanics"
58
+ - type: llm_judge
59
+ criteria: "Common causes and fixes are covered — database connections on cold start (use connection pooling, RDS Proxy, initialize outside handler for reuse), external API calls without timeout (always set HTTP timeout shorter than Lambda timeout), large S3 file processing (stream instead of loading entirely into memory), cold start initialization (heavy imports, large packages). Set Lambda timeout slightly higher than expected max duration. API Gateway has a hard 29-second limit — Lambda behind API GW must complete within 29s"
60
+ weight: 0.35
61
+ description: "Causes and fixes"
62
+ - type: llm_judge
63
+ criteria: "Best practices are practical — set timeout based on p99 duration + buffer (not arbitrary large values). Monitor with CloudWatch Duration metric. Alert when duration approaches timeout. Use X-Ray to identify slow segments. Move initialization code outside handler (runs once per cold start, reused on warm invocations). Set HTTP client timeouts shorter than Lambda timeout to get a proper error instead of Lambda timeout. For long-running tasks: use Step Functions, SQS, or async invocation instead of increasing Lambda timeout"
64
+ weight: 0.30
65
+ description: "Best practices"
@@ -0,0 +1,70 @@
1
+ meta:
2
+ id: memory-and-oom
3
+ level: 1
4
+ course: aws-lambda-debugging
5
+ type: output
6
+ description: "Debug Lambda memory issues — diagnose out-of-memory errors, understand memory-CPU relationship, and right-size Lambda functions"
7
+ tags: [AWS, Lambda, memory, OOM, right-sizing, configuration, beginner]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your Lambda function fails intermittently with large payloads:
13
+
14
+ {
15
+ "errorType": "Runtime.ExitError",
16
+ "errorMessage": "RequestId: abc-123 Error: Runtime exited with
17
+ error: signal: killed"
18
+ }
19
+
20
+ CloudWatch REPORT line:
21
+ REPORT RequestId: abc-123 Duration: 4521.00 ms
22
+ Billed Duration: 4521 ms Memory Size: 128 MB
23
+ Max Memory Used: 128 MB
24
+
25
+ Max Memory Used equals Memory Size — the function ran out of memory
26
+ and was killed by the OOM killer. "signal: killed" = SIGKILL from
27
+ the system.
28
+
29
+ The function processes CSV files from S3. Small files work (< 5MB),
30
+ large files fail because loading the entire file into memory exceeds
31
+ 128MB.
32
+
33
+ Fix options:
34
+ 1. Increase memory:
35
+ aws lambda update-function-configuration \
36
+ --function-name process-csv --memory-size 512
37
+
38
+ 2. Stream processing — read the file in chunks instead of loading
39
+ it entirely into memory.
40
+
41
+ Important: Lambda memory also controls CPU allocation!
42
+ - 128 MB = ~0.08 vCPU (very slow)
43
+ - 512 MB = ~0.3 vCPU
44
+ - 1769 MB = 1 vCPU
45
+ - 3538 MB = 2 vCPU
46
+ - 10240 MB = 6 vCPU (maximum)
47
+
48
+ A function at 128MB runs on a fraction of a CPU. Increasing memory
49
+ to 256MB might actually DECREASE total cost because the function
50
+ runs 3x faster (more CPU) even though per-ms cost doubles.
51
+
52
+ Task: Explain Lambda memory debugging. Write: how to identify OOM
53
+ errors (signal: killed, Max Memory Used = Memory Size), the
54
+ memory-CPU relationship, how to right-size memory (AWS Lambda
55
+ Power Tuning), common memory-hungry operations (loading files,
56
+ large JSON parsing), and cost optimization through memory tuning.
57
+
58
+ assertions:
59
+ - type: llm_judge
60
+ criteria: "OOM identification is explained — signal: killed or Runtime.ExitError with killed means OOM. Check REPORT line: if Max Memory Used equals or is very close to Memory Size, function ran out of memory. Memory includes: your code, runtime, libraries, and all variables/data in memory. /tmp directory has separate 512MB-10GB allocation (configurable). Lambda memory range: 128MB to 10,240MB in 1MB increments"
61
+ weight: 0.35
62
+ description: "OOM identification"
63
+ - type: llm_judge
64
+ criteria: "Memory-CPU relationship is covered — Lambda allocates CPU proportional to memory. 1,769MB = 1 full vCPU. At 128MB you get ~7% of a vCPU — CPU-bound tasks are extremely slow. This means: increasing memory for a CPU-bound function makes it faster AND can make it cheaper (shorter duration offsets higher per-ms cost). Use AWS Lambda Power Tuning tool to find optimal memory: tests your function at different memory sizes and plots cost vs duration. Memory is the ONLY performance lever for Lambda — no separate CPU setting"
65
+ weight: 0.35
66
+ description: "Memory-CPU relationship"
67
+ - type: llm_judge
68
+ criteria: "Right-sizing is practical — use Lambda Power Tuning (open-source Step Functions tool): runs your function at multiple memory configs, shows cost and duration at each. Look for the 'sweet spot' where increasing memory stops improving duration. Common memory-hungry operations: loading entire files into memory (stream instead), parsing large JSON (use streaming JSON parser), image processing (needs 512MB+). Monitor Max Memory Used metric over time. Set memory to ~1.5x the typical Max Memory Used for headroom. /tmp for large file processing (up to 10GB ephemeral storage)"
69
+ weight: 0.30
70
+ description: "Right-sizing"
@@ -0,0 +1,72 @@
1
+ meta:
2
+ id: async-invocation-failures
3
+ level: 2
4
+ course: aws-lambda-debugging
5
+ type: output
6
+ description: "Debug Lambda async invocation failures — diagnose retry behavior, dead-letter queue issues, and Lambda Destination configuration"
7
+ tags: [AWS, Lambda, async, DLQ, destinations, retry, intermediate]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your S3-triggered Lambda function processes uploaded images. Some
13
+ images fail processing but you have no idea which ones or why:
14
+
15
+ $ aws cloudwatch get-metric-statistics --namespace AWS/Lambda \
16
+ --metric-name Errors --dimensions Name=FunctionName,Value=process-image
17
+ Errors: 45 in the last hour
18
+
19
+ 45 errors but no visibility into which uploads failed. The function
20
+ is invoked asynchronously (S3 event) — errors don't go back to a
21
+ caller. Where do they go?
22
+
23
+ Async invocation error flow:
24
+ 1. First attempt: function fails
25
+ 2. Lambda waits 1 minute, retries (attempt 2)
26
+ 3. Lambda waits 2 minutes, retries (attempt 3)
27
+ 4. All 3 attempts failed → event is discarded (lost!)
28
+
29
+ Without a DLQ or destination, failed events simply disappear.
30
+
31
+ Fix 1 — Dead Letter Queue:
32
+ $ aws lambda update-function-configuration \
33
+ --function-name process-image \
34
+ --dead-letter-config TargetArn=arn:aws:sqs:...:image-dlq
35
+
36
+ Now failed events go to SQS after all retries exhausted. But the
37
+ DLQ only contains the original event, not the error details.
38
+
39
+ Fix 2 — Lambda Destinations (better):
40
+ $ aws lambda put-function-event-invoke-config \
41
+ --function-name process-image \
42
+ --destination-config '{
43
+ "OnSuccess": {"Destination": "arn:aws:sqs:...:success-queue"},
44
+ "OnFailure": {"Destination": "arn:aws:sqs:...:failure-queue"}
45
+ }'
46
+
47
+ Destinations include: the original event, the function response or
48
+ error, request/response metadata. Much more useful than DLQ.
49
+
50
+ Additional issue: MaximumRetryAttempts set to 0 means no retries.
51
+ But this also means transient errors (temporary network glitch)
52
+ are not retried. Tradeoff: retries help with transient failures
53
+ but tripling processing for permanent errors wastes compute.
54
+
55
+ Task: Explain async invocation debugging. Write: the retry behavior
56
+ (timing, attempt count), DLQ vs Lambda Destinations (comparison),
57
+ configuring retry limits and maximum event age, monitoring async
58
+ failures, and designing robust async processing pipelines.
59
+
60
+ assertions:
61
+ - type: llm_judge
62
+ criteria: "Async retry behavior is explained — async invocation: Lambda queues event internally, returns 202 immediately. On failure: retries 2 more times (3 total). Delay: ~1 minute between first and second, ~2 minutes between second and third. After all retries: event sent to DLQ/destination or discarded. MaximumRetryAttempts: configure 0-2 retries. MaximumEventAgeInSeconds: discard events older than X seconds (60-21600). Important: retries mean the function must be idempotent — same event may be processed multiple times"
63
+ weight: 0.35
64
+ description: "Retry behavior"
65
+ - type: llm_judge
66
+ criteria: "DLQ vs Destinations are compared — DLQ: only captures original event on failure, configured on function, supports SQS and SNS only. Lambda Destinations: captures original event + function response/error + metadata, supports SQS/SNS/Lambda/EventBridge, can handle both success and failure. Destinations are preferred (more information, more flexible). DLQ limitation: doesn't tell you WHY it failed. Destination OnFailure: includes error message, stack trace, request context. Use destinations for new functions, DLQ still works for existing setups"
67
+ weight: 0.35
68
+ description: "DLQ vs Destinations"
69
+ - type: llm_judge
70
+ criteria: "Monitoring and design are practical — monitor: AsyncEventsDropped metric (events lost without DLQ/destination), DeadLetterErrors (failed to send to DLQ). Alert on both! Design pattern: S3 event → Lambda → on failure: SQS DLQ → monitoring Lambda that alerts and logs details. Make functions idempotent: use a deduplication table to prevent reprocessing. For critical events: record event in DynamoDB before processing, mark as processed when done, sweep unprocessed events periodically as backup. Test failure scenarios: deliberately throw errors to verify DLQ/destination works"
71
+ weight: 0.30
72
+ description: "Monitoring and design"
@@ -0,0 +1,76 @@
1
+ meta:
2
+ id: cold-start-optimization
3
+ level: 2
4
+ course: aws-lambda-debugging
5
+ type: output
6
+ description: "Optimize Lambda cold starts — implement provisioned concurrency, SnapStart, and package optimization to reduce initialization latency"
7
+ tags: [AWS, Lambda, cold-start, provisioned-concurrency, SnapStart, optimization, intermediate]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your Java Lambda function has cold starts of 8-12 seconds. Users
13
+ hitting the API after an idle period wait 10+ seconds for the first
14
+ response. This is unacceptable for a user-facing API.
15
+
16
+ CloudWatch REPORT for cold start:
17
+ REPORT RequestId: abc-123 Duration: 450.00 ms
18
+ Billed Duration: 8950 ms Memory Size: 1024 MB
19
+ Max Memory Used: 256 MB Init Duration: 8500.00 ms
20
+
21
+ Init Duration: 8.5 seconds! The handler only takes 450ms.
22
+
23
+ Breakdown of cold start time:
24
+ - Download code package: 500ms (50MB jar)
25
+ - Start JVM: 3,000ms
26
+ - Class loading & dependency injection: 4,500ms
27
+ - First database connection: 500ms
28
+
29
+ Optimization approaches:
30
+
31
+ 1. SnapStart (Java 11+, .NET 8):
32
+ Lambda snapshots the initialized function after the first init.
33
+ Subsequent cold starts restore from snapshot instead of
34
+ re-initializing. Reduces cold start from 8.5s to ~200ms.
35
+ $ aws lambda update-function-configuration \
36
+ --function-name my-func \
37
+ --snap-start ApplyOn=PublishedVersions
38
+ Caveat: must use published versions (not $LATEST).
39
+
40
+ 2. Provisioned Concurrency:
41
+ Pre-initialize N execution environments. Zero cold starts
42
+ for up to N concurrent requests.
43
+ $ aws lambda put-provisioned-concurrency-config \
44
+ --function-name my-func --qualifier prod \
45
+ --provisioned-concurrent-executions 10
46
+ Cost: ~$15/month per provisioned environment (always running).
47
+
48
+ 3. Package optimization:
49
+ Reduce jar from 50MB to 15MB (remove unused dependencies).
50
+ Use GraalVM native image for sub-second JVM start.
51
+ Use lighter frameworks (Micronaut/Quarkus instead of Spring).
52
+
53
+ 4. Warm-up pings:
54
+ CloudWatch Events rule invokes function every 5 minutes.
55
+ Keeps one environment warm but doesn't prevent cold starts
56
+ during scaling.
57
+
58
+ Task: Explain cold start optimization. Write: SnapStart (how it
59
+ works, requirements, limitations), provisioned concurrency (cost,
60
+ auto-scaling, when to use), package optimization techniques,
61
+ runtime-specific advice (Java vs Node.js vs Python), and how to
62
+ measure cold start impact on users.
63
+
64
+ assertions:
65
+ - type: llm_judge
66
+ criteria: "SnapStart and provisioned concurrency are explained — SnapStart: snapshots initialized function at publish time, restores on cold start (~200ms instead of seconds). Works with Java 11+ (Corretto), .NET 8. Must publish versions. Cannot combine with provisioned concurrency. Limitations: uniqueness (random/UUID generated during init may be duplicated). Provisioned concurrency: pre-initializes environments, eliminates cold starts entirely for configured capacity. Cost: hourly charge per provisioned unit. Auto-scaling provisioned concurrency via Application Auto Scaling for variable traffic"
67
+ weight: 0.35
68
+ description: "SnapStart and provisioned"
69
+ - type: llm_judge
70
+ criteria: "Package and runtime optimization are covered — reduce package size: remove unused dependencies, use tree shaking/bundlers. Java: use Micronaut/Quarkus (designed for Lambda), GraalVM native image (sub-100ms starts), avoid Spring Boot (heavy reflection/classpath scanning). Node.js: bundle with esbuild, lazy-load heavy modules. Python: avoid large packages (pandas, numpy) unless needed, use Lambda-optimized versions. General: initialize SDK clients and DB connections outside handler (reused on warm starts). Measure Init Duration in REPORT line"
71
+ weight: 0.35
72
+ description: "Package and runtime"
73
+ - type: llm_judge
74
+ criteria: "Measurement and decision-making are practical — measure cold start impact: percentage of invocations that are cold starts (check Init Duration presence in CloudWatch Logs Insights). Query: filter @type = 'REPORT' | stats count() as total, sum(@initDuration > 0) as coldStarts. Calculate: if 5% of requests are cold starts with 5s delay, average latency impact is 250ms. Decision: if cold starts affect p99 latency for user-facing APIs → use SnapStart or provisioned concurrency. If async processing (SQS, events) → cold starts usually don't matter. Cost-benefit: provisioned concurrency costs $15/month per unit — compare to user impact of cold starts"
75
+ weight: 0.30
76
+ description: "Measurement"
@@ -0,0 +1,70 @@
1
+ meta:
2
+ id: dynamodb-streams-debugging
3
+ level: 2
4
+ course: aws-lambda-debugging
5
+ type: output
6
+ description: "Debug Lambda DynamoDB Streams integration — diagnose stream processing failures, iterator exhaustion, and event ordering issues"
7
+ tags: [AWS, Lambda, DynamoDB, Streams, event-source, iterator, intermediate]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your Lambda function processes DynamoDB Streams events (change data
13
+ capture) to sync order data to Elasticsearch. It stopped processing:
14
+
15
+ $ aws lambda list-event-source-mappings \
16
+ --function-name sync-to-es --query "EventSourceMappings[].State"
17
+ ["Enabled"]
18
+
19
+ The mapping is enabled but CloudWatch shows no invocations. Checking
20
+ the event source mapping details:
21
+
22
+ $ aws lambda get-event-source-mapping --uuid abc-123
23
+ {
24
+ "State": "Enabled",
25
+ "StateTransitionReason": "USER_INITIATED",
26
+ "LastProcessingResult": "PROBLEM: Function call failed"
27
+ }
28
+
29
+ LastProcessingResult: "Function call failed" — the function threw
30
+ an unhandled error. For DynamoDB Streams (and Kinesis), Lambda
31
+ retries the SAME batch until it succeeds or the record expires
32
+ (24 hours by default). One bad record blocks the entire shard!
33
+
34
+ CloudWatch Logs (from the failing invocation):
35
+ Processing INSERT event for order ORD-999
36
+ Error: Cannot read property 'S' of undefined
37
+ — A DynamoDB record had an unexpected schema (missing field)
38
+
39
+ The function was stuck retrying the same bad record for 6 hours,
40
+ blocking all subsequent stream records.
41
+
42
+ Fix — configure error handling:
43
+ $ aws lambda update-event-source-mapping --uuid abc-123 \
44
+ --maximum-retry-attempts 3 \
45
+ --bisect-batch-on-function-error \
46
+ --destination-config '{"OnFailure":{"Destination":"arn:aws:sqs:..."}}'
47
+
48
+ - maximum-retry-attempts: stop retrying after 3 attempts
49
+ - bisect-batch-on-function-error: split batch to isolate bad record
50
+ - destination on failure: send failed records to SQS for investigation
51
+
52
+ Task: Explain DynamoDB Streams + Lambda debugging. Write: how
53
+ stream processing works (shards, iterators, ordering), the blocking
54
+ behavior on errors (entire shard stops), error handling configuration
55
+ (retry limits, bisect, on-failure destination), common stream
56
+ processing patterns, and monitoring stream consumer lag.
57
+
58
+ assertions:
59
+ - type: llm_judge
60
+ criteria: "Stream processing mechanics are explained — DynamoDB Streams capture INSERT, MODIFY, DELETE events in order per partition key. Lambda polls stream shards via event source mapping. Records include OldImage and/or NewImage (depending on StreamViewType). Processing is ordered within a shard — one batch at a time. If Lambda fails, it retries the SAME batch (blocks shard). Different from SQS: stream records must be processed in order, so failed records block subsequent records"
61
+ weight: 0.35
62
+ description: "Stream mechanics"
63
+ - type: llm_judge
64
+ criteria: "Error handling and blocking are covered — default behavior: retry forever until record expires (24h) — blocks shard processing. Configure: MaximumRetryAttempts (limit retries), BisectBatchOnFunctionError (split batch to isolate bad record), MaximumRecordAgeInSeconds (skip old records), DestinationConfig OnFailure (send failed records to SQS/SNS for investigation). Without these settings, one bad record stops ALL processing on that shard. Always configure error handling for stream consumers"
65
+ weight: 0.35
66
+ description: "Error handling"
67
+ - type: llm_judge
68
+ criteria: "Monitoring and patterns are practical — monitor: IteratorAge metric (time between record written and processed — high value means lag). Alert when IteratorAge exceeds acceptable threshold (e.g., 5 minutes). Check: LastProcessingResult in event source mapping for error state. Common patterns: use DynamoDB Streams for CDC (change data capture), search index sync, cross-region replication, audit logging. Design Lambda for idempotency (records may be delivered more than once). Handle schema evolution gracefully (new/missing fields shouldn't crash the function)"
69
+ weight: 0.30
70
+ description: "Monitoring and patterns"
@@ -0,0 +1,71 @@
1
+ meta:
2
+ id: intermediate-debugging-shift
3
+ level: 2
4
+ course: aws-lambda-debugging
5
+ type: output
6
+ description: "Combined intermediate debugging shift — diagnose a serverless application with event source, VPC, layer, and concurrency issues simultaneously"
7
+ tags: [AWS, Lambda, troubleshooting, combined, shift-simulation, intermediate]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ You're troubleshooting a serverless order processing system with
13
+ 5 Lambda functions. The system "partially works":
14
+
15
+ Architecture:
16
+ API Gateway → order-api (Lambda)
17
+ order-api → SQS queue → process-order (Lambda)
18
+ process-order → DynamoDB + payment-service (Lambda)
19
+ payment-service → Stripe API (external)
20
+ DynamoDB Stream → sync-to-search (Lambda) → OpenSearch
21
+
22
+ Current issues:
23
+
24
+ 1. order-api: intermittent 504 errors from API Gateway.
25
+ REPORT shows Init Duration: 4200ms for cold starts.
26
+ The function is in a VPC (for RDS access) and uses a heavy
27
+ Python layer with pandas (unnecessary for this API).
28
+ Fix: remove pandas layer, add VPC endpoint for DynamoDB,
29
+ consider provisioned concurrency.
30
+
31
+ 2. process-order: messages accumulate in SQS, not being processed.
32
+ Event source mapping shows LastProcessingResult: "OK" but
33
+ BatchSize is 1 and function processes one message per second.
34
+ With 500 messages/minute incoming, it can't keep up.
35
+ Fix: increase batch size to 10, enable batch window of 5s.
36
+
37
+ 3. payment-service: throws errors but retries succeed.
38
+ The function calls Stripe API with no timeout configured.
39
+ Occasionally Stripe takes 15+ seconds, exceeding the Lambda's
40
+ 10-second timeout. On retry (async), it succeeds → duplicate
41
+ payment! No idempotency key used.
42
+ Fix: set HTTP timeout < Lambda timeout, use idempotency key.
43
+
44
+ 4. sync-to-search: completely stuck, IteratorAge growing.
45
+ One malformed DynamoDB record causes the function to crash,
46
+ blocking the entire shard. No error handling configured.
47
+ Fix: configure MaximumRetryAttempts, BisectBatchOnFunctionError,
48
+ OnFailure destination.
49
+
50
+ 5. Account-wide: ConcurrentExecutions at 850/1000. No reserved
51
+ concurrency configured. A batch job running at the same time
52
+ could push the account to the limit.
53
+ Fix: set reserved concurrency for critical functions.
54
+
55
+ Task: Walk through diagnosing all issues. Write: the triage
56
+ approach for serverless architectures, the fix for each issue,
57
+ idempotency patterns, and operational best practices.
58
+
59
+ assertions:
60
+ - type: llm_judge
61
+ criteria: "All five issues are diagnosed and fixed — (1) cold start: remove unnecessary layer, add VPC endpoints, use provisioned concurrency for API-facing function. (2) SQS throughput: increase batch size and batch window for higher processing rate. (3) duplicate payments: set HTTP client timeout < Lambda timeout, use idempotency keys in Stripe API calls. (4) stream blocking: configure retry limits, bisect on error, failure destination for DynamoDB Streams event source. (5) concurrency: set reserved concurrency for critical functions to prevent resource starvation"
62
+ weight: 0.35
63
+ description: "All issues fixed"
64
+ - type: llm_judge
65
+ criteria: "Idempotency and error handling are covered — idempotency: use unique transaction IDs for payment operations (Stripe supports Idempotency-Key header). Store processing status in DynamoDB before and after processing. Design all Lambda functions to be safely re-invokable. Error handling: different for each invocation pattern — sync (return error to caller), async (retry + DLQ), stream (retry + bisect + destination). Always configure error handling for event sources — defaults are not production-ready"
66
+ weight: 0.35
67
+ description: "Idempotency and errors"
68
+ - type: llm_judge
69
+ criteria: "Serverless triage approach is systematic — check CloudWatch metrics first: Errors, Throttles, Duration, ConcurrentExecutions. For event sources: check event source mapping state and LastProcessingResult. For streams: check IteratorAge (growing = falling behind). For SQS: check ApproximateAgeOfOldestMessage (lag indicator). Work through the data flow: API → queue → processing → database → stream → search. Fix upstream issues first (they cascade). Test each fix independently. Monitor for 30+ minutes after fixes to confirm stability"
70
+ weight: 0.30
71
+ description: "Triage approach"
@@ -0,0 +1,70 @@
1
+ meta:
2
+ id: lambda-concurrency-management
3
+ level: 2
4
+ course: aws-lambda-debugging
5
+ type: output
6
+ description: "Debug Lambda concurrency issues — diagnose throttling, configure reserved and provisioned concurrency, and protect downstream services"
7
+ tags: [AWS, Lambda, concurrency, throttling, reserved, scaling, intermediate]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ A marketing campaign sends a blast email with a link to your API.
13
+ Traffic spikes 10x. Multiple functions start throttling:
14
+
15
+ CloudWatch Metrics (account-wide):
16
+ ConcurrentExecutions: 1,000 (at limit!)
17
+ Throttles (order-api): 5,200
18
+ Throttles (user-api): 1,800
19
+ Throttles (analytics): 450
20
+
21
+ All functions compete for the same 1,000 account concurrency pool.
22
+ The analytics function (low priority) consumed 600 concurrent
23
+ executions processing a backlog, leaving only 400 for critical
24
+ order and user APIs.
25
+
26
+ Fix 1 — Reserved concurrency (free):
27
+ $ aws lambda put-function-concurrency \
28
+ --function-name order-api \
29
+ --reserved-concurrent-executions 300
30
+ $ aws lambda put-function-concurrency \
31
+ --function-name user-api \
32
+ --reserved-concurrent-executions 200
33
+ $ aws lambda put-function-concurrency \
34
+ --function-name analytics \
35
+ --reserved-concurrent-executions 50
36
+
37
+ Now order-api is guaranteed 300 concurrent executions. But:
38
+ reserved concurrency is also a MAXIMUM — order-api can never
39
+ exceed 300 even if capacity is available.
40
+
41
+ Unreserved pool: 1000 - 300 - 200 - 50 = 450 for all other functions.
42
+
43
+ Fix 2 — Downstream protection:
44
+ Your RDS database has a max_connections of 100. If 300 Lambda
45
+ instances each open a connection, the database is overwhelmed:
46
+ "too many connections" error.
47
+
48
+ Solution: RDS Proxy pools database connections. Lambda instances
49
+ connect to RDS Proxy, which maintains a connection pool to the
50
+ database.
51
+
52
+ Task: Explain Lambda concurrency management. Write: account vs
53
+ function concurrency limits, reserved concurrency (guarantees AND
54
+ limits), provisioned concurrency (pre-warmed), protecting downstream
55
+ services (RDS Proxy, SQS buffering), scaling behavior, and how to
56
+ request limit increases.
57
+
58
+ assertions:
59
+ - type: llm_judge
60
+ criteria: "Concurrency model is explained — account default: 1,000 concurrent executions (soft limit, can increase). All functions share the pool unless reserved concurrency is set. Reserved concurrency: guarantees AND limits a function's concurrent executions (free, no additional cost). Unreserved pool: total limit minus all reserved concurrency — must leave at least 100 unreserved. Provisioned concurrency: pre-initialized environments for instant response (charged per provisioned unit per hour). Scaling: Lambda scales at 500-3000 instances per minute depending on region"
61
+ weight: 0.35
62
+ description: "Concurrency model"
63
+ - type: llm_judge
64
+ criteria: "Downstream protection is covered — Lambda can scale faster than downstream services. Database: max_connections limit — use RDS Proxy (connection pooling), or limit Lambda concurrency. APIs: use reserved concurrency to match API rate limits. SQS: use as buffer between Lambda and slow services. Pattern: high-concurrency Lambda → SQS → low-concurrency Lambda → database. ElastiCache: use as cache to reduce database load. Always consider downstream capacity when setting Lambda concurrency"
65
+ weight: 0.35
66
+ description: "Downstream protection"
67
+ - type: llm_judge
68
+ criteria: "Scaling and limits are practical — request limit increase via AWS Support (usually approved within days). Monitor: ConcurrentExecutions, Throttles, UnreservedAccountConcurrency metrics. Alert on throttles (any throttle = degraded service). Scaling behavior: burst (3000 in us-east-1, 1000 in other regions for first minute), then 500 additional per minute. Event source specific: SQS scales up to 1000 batches/minute, Kinesis limited by shard count. Plan capacity: expected peak concurrent executions = (invocations per second) × (average duration in seconds)"
69
+ weight: 0.30
70
+ description: "Scaling and limits"
@@ -0,0 +1,76 @@
1
+ meta:
2
+ id: lambda-layers-debugging
3
+ level: 2
4
+ course: aws-lambda-debugging
5
+ type: output
6
+ description: "Debug Lambda Layer issues — diagnose layer version conflicts, incorrect directory structure, and dependency resolution problems"
7
+ tags: [AWS, Lambda, layers, dependencies, version-conflicts, intermediate]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your Lambda function fails after adding a new layer:
13
+
14
+ {
15
+ "errorType": "Runtime.ImportModuleError",
16
+ "errorMessage": "Unable to import module 'handler': No module
17
+ named 'pandas'"
18
+ }
19
+
20
+ But pandas IS in your layer! Checking the layer:
21
+
22
+ $ aws lambda get-layer-version --layer-name data-layer --version 3 \
23
+ --query "Content.Location" --output text | xargs curl -o layer.zip
24
+ $ unzip -l layer.zip
25
+ Archive: layer.zip
26
+ Length Name
27
+ ------ ----
28
+ pandas/
29
+ pandas/__init__.py
30
+ ...
31
+
32
+ Problem: wrong directory structure! Lambda expects Python
33
+ dependencies in specific paths:
34
+ - python/
35
+ - python/lib/python3.x/site-packages/
36
+
37
+ The layer has pandas/ at the root instead of python/pandas/.
38
+ Lambda can't find it.
39
+
40
+ Correct structure:
41
+ $ mkdir -p python/lib/python3.12/site-packages/
42
+ $ pip install pandas -t python/lib/python3.12/site-packages/
43
+ $ zip -r layer.zip python/
44
+
45
+ After fixing, a new error:
46
+ "numpy.core._multiarray_umath: undefined symbol: PyFloat_Type"
47
+
48
+ The numpy in the layer was compiled for Python 3.11 but the
49
+ function uses Python 3.12. Native extensions must match the
50
+ exact Python version.
51
+
52
+ Another issue — layer order matters:
53
+ Function has layers: [common-utils:v2, data-layer:v3]
54
+ Both layers have a different version of the 'requests' library.
55
+ Layer 2 (data-layer) overrides layer 1 (common-utils) because
56
+ layers are merged in order, with later layers taking precedence.
57
+
58
+ Task: Explain Lambda Layer debugging. Write: correct layer
59
+ directory structure for each runtime, version compatibility
60
+ (runtime, architecture), layer merge order and conflicts, the
61
+ 250MB unzipped limit (function + all layers), and when to use
62
+ layers vs bundled dependencies.
63
+
64
+ assertions:
65
+ - type: llm_judge
66
+ criteria: "Layer structure is explained — Python: python/ or python/lib/python3.x/site-packages/. Node.js: nodejs/node_modules/. Both: lib/ or bin/ for shared libraries/executables. Wrong directory structure is the #1 layer issue. Lambda adds layer paths to the runtime's module search path. Must match exactly or imports fail. Check with: unzip -l layer.zip to verify structure before publishing"
67
+ weight: 0.35
68
+ description: "Layer structure"
69
+ - type: llm_judge
70
+ criteria: "Compatibility and conflicts are covered — runtime version: native extensions (numpy, pandas, Pillow) must match the exact Python version. Build on matching Amazon Linux environment or use Docker. Architecture: layers must match function architecture (x86_64 vs arm64). Layer order: layers merged in order, later layers override earlier ones if they have the same file. Up to 5 layers per function. Total size: function code + all layers ≤ 250MB unzipped. Debugging: print sys.path (Python) or module.paths (Node.js) to see layer paths"
71
+ weight: 0.35
72
+ description: "Compatibility"
73
+ - type: llm_judge
74
+ criteria: "Usage guidance is practical — use layers for: shared code across multiple functions (utility libraries, SDK wrappers), large dependencies that don't change often (pandas, numpy), custom runtimes. Don't use layers for: function-specific code (bundle with function), frequently updated dependencies (layer versioning adds complexity). Alternative: use esbuild/webpack bundling for smaller packages. Container images eliminate layer complexity entirely. Layer versions are immutable — publish new version for updates, update all functions referencing the old version"
75
+ weight: 0.30
76
+ description: "Usage guidance"