dojo.md 0.1.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 (459) hide show
  1. package/courses/GENERATION_LOG.md +72 -0
  2. package/courses/api-error-handling/course.yaml +16 -0
  3. package/courses/api-error-handling/scenarios/level-1/error-response-format.yaml +131 -0
  4. package/courses/api-error-handling/scenarios/level-1/http-status-codes-basics.yaml +90 -0
  5. package/courses/api-error-handling/scenarios/level-1/rate-limiting-basics.yaml +135 -0
  6. package/courses/api-error-handling/scenarios/level-1/request-validation-errors.yaml +208 -0
  7. package/courses/api-error-handling/scenarios/level-2/circuit-breaker-pattern.yaml +189 -0
  8. package/courses/api-error-handling/scenarios/level-2/idempotency-retry-logic.yaml +159 -0
  9. package/courses/api-error-handling/scenarios/level-2/rfc-7807-problem-details.yaml +178 -0
  10. package/courses/api-error-handling/scenarios/level-2/webhook-error-handling.yaml +211 -0
  11. package/courses/api-error-handling/scenarios/level-3/distributed-tracing-errors.yaml +275 -0
  12. package/courses/aws-lambda-debugging/course.yaml +11 -0
  13. package/courses/aws-lambda-debugging/scenarios/level-1/api-gateway-integration.yaml +71 -0
  14. package/courses/aws-lambda-debugging/scenarios/level-1/cloudwatch-logs-basics.yaml +64 -0
  15. package/courses/aws-lambda-debugging/scenarios/level-1/cold-start-basics.yaml +70 -0
  16. package/courses/aws-lambda-debugging/scenarios/level-1/environment-variable-issues.yaml +72 -0
  17. package/courses/aws-lambda-debugging/scenarios/level-1/first-debugging-shift.yaml +73 -0
  18. package/courses/aws-lambda-debugging/scenarios/level-1/handler-import-errors.yaml +71 -0
  19. package/courses/aws-lambda-debugging/scenarios/level-1/iam-permission-errors.yaml +68 -0
  20. package/courses/aws-lambda-debugging/scenarios/level-1/invocation-errors.yaml +72 -0
  21. package/courses/aws-lambda-debugging/scenarios/level-1/lambda-timeout-errors.yaml +65 -0
  22. package/courses/aws-lambda-debugging/scenarios/level-1/memory-and-oom.yaml +70 -0
  23. package/courses/aws-lambda-debugging/scenarios/level-2/async-invocation-failures.yaml +72 -0
  24. package/courses/aws-lambda-debugging/scenarios/level-2/cold-start-optimization.yaml +76 -0
  25. package/courses/aws-lambda-debugging/scenarios/level-2/dynamodb-streams-debugging.yaml +70 -0
  26. package/courses/aws-lambda-debugging/scenarios/level-2/intermediate-debugging-shift.yaml +71 -0
  27. package/courses/aws-lambda-debugging/scenarios/level-2/lambda-concurrency-management.yaml +70 -0
  28. package/courses/aws-lambda-debugging/scenarios/level-2/lambda-layers-debugging.yaml +76 -0
  29. package/courses/aws-lambda-debugging/scenarios/level-2/sam-local-debugging.yaml +74 -0
  30. package/courses/aws-lambda-debugging/scenarios/level-2/sqs-event-source.yaml +72 -0
  31. package/courses/aws-lambda-debugging/scenarios/level-2/vpc-networking-issues.yaml +71 -0
  32. package/courses/aws-lambda-debugging/scenarios/level-2/xray-tracing.yaml +62 -0
  33. package/courses/aws-lambda-debugging/scenarios/level-3/advanced-debugging-shift.yaml +72 -0
  34. package/courses/aws-lambda-debugging/scenarios/level-3/container-image-lambda.yaml +79 -0
  35. package/courses/aws-lambda-debugging/scenarios/level-3/cross-account-invocation.yaml +72 -0
  36. package/courses/aws-lambda-debugging/scenarios/level-3/eventbridge-patterns.yaml +79 -0
  37. package/courses/aws-lambda-debugging/scenarios/level-3/iac-deployment-debugging.yaml +68 -0
  38. package/courses/aws-lambda-debugging/scenarios/level-3/kinesis-stream-processing.yaml +64 -0
  39. package/courses/aws-lambda-debugging/scenarios/level-3/lambda-at-edge.yaml +64 -0
  40. package/courses/aws-lambda-debugging/scenarios/level-3/lambda-extensions-debugging.yaml +67 -0
  41. package/courses/aws-lambda-debugging/scenarios/level-3/powertools-observability.yaml +79 -0
  42. package/courses/aws-lambda-debugging/scenarios/level-3/step-functions-debugging.yaml +80 -0
  43. package/courses/aws-lambda-debugging/scenarios/level-4/cost-optimization-strategy.yaml +67 -0
  44. package/courses/aws-lambda-debugging/scenarios/level-4/expert-debugging-shift.yaml +62 -0
  45. package/courses/aws-lambda-debugging/scenarios/level-4/incident-management-serverless.yaml +61 -0
  46. package/courses/aws-lambda-debugging/scenarios/level-4/multi-region-serverless.yaml +67 -0
  47. package/courses/aws-lambda-debugging/scenarios/level-4/observability-platform-design.yaml +71 -0
  48. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-architecture-design.yaml +64 -0
  49. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-data-architecture.yaml +66 -0
  50. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-migration-strategy.yaml +65 -0
  51. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-security-design.yaml +60 -0
  52. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-testing-strategy.yaml +62 -0
  53. package/courses/aws-lambda-debugging/scenarios/level-5/board-serverless-strategy.yaml +63 -0
  54. package/courses/aws-lambda-debugging/scenarios/level-5/consulting-serverless-adoption.yaml +57 -0
  55. package/courses/aws-lambda-debugging/scenarios/level-5/industry-serverless-patterns.yaml +62 -0
  56. package/courses/aws-lambda-debugging/scenarios/level-5/ma-serverless-integration.yaml +75 -0
  57. package/courses/aws-lambda-debugging/scenarios/level-5/master-debugging-shift.yaml +61 -0
  58. package/courses/aws-lambda-debugging/scenarios/level-5/organizational-serverless-transformation.yaml +65 -0
  59. package/courses/aws-lambda-debugging/scenarios/level-5/regulatory-serverless.yaml +61 -0
  60. package/courses/aws-lambda-debugging/scenarios/level-5/serverless-economics.yaml +65 -0
  61. package/courses/aws-lambda-debugging/scenarios/level-5/serverless-future-technology.yaml +66 -0
  62. package/courses/aws-lambda-debugging/scenarios/level-5/serverless-platform-design.yaml +71 -0
  63. package/courses/docker-container-debugging/course.yaml +11 -0
  64. package/courses/docker-container-debugging/scenarios/level-1/container-exit-codes.yaml +59 -0
  65. package/courses/docker-container-debugging/scenarios/level-1/container-networking-basics.yaml +69 -0
  66. package/courses/docker-container-debugging/scenarios/level-1/docker-logs-debugging.yaml +67 -0
  67. package/courses/docker-container-debugging/scenarios/level-1/dockerfile-build-failures.yaml +71 -0
  68. package/courses/docker-container-debugging/scenarios/level-1/environment-variable-issues.yaml +74 -0
  69. package/courses/docker-container-debugging/scenarios/level-1/first-debugging-shift.yaml +70 -0
  70. package/courses/docker-container-debugging/scenarios/level-1/image-pull-failures.yaml +68 -0
  71. package/courses/docker-container-debugging/scenarios/level-1/port-mapping-issues.yaml +67 -0
  72. package/courses/docker-container-debugging/scenarios/level-1/resource-limits-oom.yaml +70 -0
  73. package/courses/docker-container-debugging/scenarios/level-1/volume-mount-problems.yaml +66 -0
  74. package/courses/docker-container-debugging/scenarios/level-2/container-health-checks.yaml +73 -0
  75. package/courses/docker-container-debugging/scenarios/level-2/docker-compose-debugging.yaml +66 -0
  76. package/courses/docker-container-debugging/scenarios/level-2/docker-exec-debugging.yaml +71 -0
  77. package/courses/docker-container-debugging/scenarios/level-2/image-layer-optimization.yaml +81 -0
  78. package/courses/docker-container-debugging/scenarios/level-2/intermediate-debugging-shift.yaml +73 -0
  79. package/courses/docker-container-debugging/scenarios/level-2/logging-and-log-rotation.yaml +76 -0
  80. package/courses/docker-container-debugging/scenarios/level-2/multi-stage-build-debugging.yaml +76 -0
  81. package/courses/docker-container-debugging/scenarios/level-2/network-debugging-tools.yaml +67 -0
  82. package/courses/docker-container-debugging/scenarios/level-2/pid1-signal-handling.yaml +71 -0
  83. package/courses/docker-container-debugging/scenarios/level-2/security-scanning-basics.yaml +67 -0
  84. package/courses/docker-container-debugging/scenarios/level-3/advanced-debugging-shift.yaml +77 -0
  85. package/courses/docker-container-debugging/scenarios/level-3/buildkit-optimization.yaml +67 -0
  86. package/courses/docker-container-debugging/scenarios/level-3/container-filesystem-debugging.yaml +70 -0
  87. package/courses/docker-container-debugging/scenarios/level-3/container-security-hardening.yaml +74 -0
  88. package/courses/docker-container-debugging/scenarios/level-3/disk-space-management.yaml +74 -0
  89. package/courses/docker-container-debugging/scenarios/level-3/docker-api-automation.yaml +72 -0
  90. package/courses/docker-container-debugging/scenarios/level-3/docker-daemon-issues.yaml +73 -0
  91. package/courses/docker-container-debugging/scenarios/level-3/docker-in-docker-ci.yaml +69 -0
  92. package/courses/docker-container-debugging/scenarios/level-3/overlay-network-debugging.yaml +70 -0
  93. package/courses/docker-container-debugging/scenarios/level-3/production-container-ops.yaml +71 -0
  94. package/courses/docker-container-debugging/scenarios/level-4/cicd-pipeline-design.yaml +66 -0
  95. package/courses/docker-container-debugging/scenarios/level-4/container-monitoring-observability.yaml +63 -0
  96. package/courses/docker-container-debugging/scenarios/level-4/container-orchestration-strategy.yaml +62 -0
  97. package/courses/docker-container-debugging/scenarios/level-4/container-performance-engineering.yaml +64 -0
  98. package/courses/docker-container-debugging/scenarios/level-4/container-security-architecture.yaml +66 -0
  99. package/courses/docker-container-debugging/scenarios/level-4/enterprise-image-management.yaml +58 -0
  100. package/courses/docker-container-debugging/scenarios/level-4/expert-debugging-shift.yaml +63 -0
  101. package/courses/docker-container-debugging/scenarios/level-4/incident-response-containers.yaml +70 -0
  102. package/courses/docker-container-debugging/scenarios/level-4/multi-environment-management.yaml +65 -0
  103. package/courses/docker-container-debugging/scenarios/level-4/stateful-service-containers.yaml +65 -0
  104. package/courses/docker-container-debugging/scenarios/level-5/board-infrastructure-strategy.yaml +58 -0
  105. package/courses/docker-container-debugging/scenarios/level-5/consulting-container-strategy.yaml +61 -0
  106. package/courses/docker-container-debugging/scenarios/level-5/container-platform-architecture.yaml +67 -0
  107. package/courses/docker-container-debugging/scenarios/level-5/container-platform-economics.yaml +67 -0
  108. package/courses/docker-container-debugging/scenarios/level-5/container-technology-evolution.yaml +67 -0
  109. package/courses/docker-container-debugging/scenarios/level-5/disaster-recovery-containers.yaml +66 -0
  110. package/courses/docker-container-debugging/scenarios/level-5/industry-container-patterns.yaml +71 -0
  111. package/courses/docker-container-debugging/scenarios/level-5/master-debugging-shift.yaml +62 -0
  112. package/courses/docker-container-debugging/scenarios/level-5/organizational-transformation.yaml +67 -0
  113. package/courses/docker-container-debugging/scenarios/level-5/regulatory-compliance-containers.yaml +61 -0
  114. package/courses/github-actions-cicd/course.yaml +10 -0
  115. package/courses/github-actions-cicd/scenarios/level-1/actions-and-runners.yaml +58 -0
  116. package/courses/github-actions-cicd/scenarios/level-1/basic-workflow-syntax.yaml +52 -0
  117. package/courses/github-actions-cicd/scenarios/level-1/branch-protection-checks.yaml +63 -0
  118. package/courses/github-actions-cicd/scenarios/level-1/environment-variables-secrets.yaml +65 -0
  119. package/courses/github-actions-cicd/scenarios/level-1/first-cicd-shift.yaml +62 -0
  120. package/courses/github-actions-cicd/scenarios/level-1/job-dependencies-outputs.yaml +62 -0
  121. package/courses/github-actions-cicd/scenarios/level-1/simple-ci-pipeline.yaml +57 -0
  122. package/courses/github-actions-cicd/scenarios/level-1/workflow-debugging.yaml +90 -0
  123. package/courses/github-actions-cicd/scenarios/level-1/workflow-status-notifications.yaml +59 -0
  124. package/courses/github-actions-cicd/scenarios/level-1/workflow-triggers.yaml +56 -0
  125. package/courses/github-actions-cicd/scenarios/level-2/concurrency-control.yaml +58 -0
  126. package/courses/github-actions-cicd/scenarios/level-2/conditional-execution.yaml +60 -0
  127. package/courses/github-actions-cicd/scenarios/level-2/custom-actions-development.yaml +55 -0
  128. package/courses/github-actions-cicd/scenarios/level-2/dependency-caching.yaml +58 -0
  129. package/courses/github-actions-cicd/scenarios/level-2/deployment-workflows.yaml +61 -0
  130. package/courses/github-actions-cicd/scenarios/level-2/github-packages-publishing.yaml +59 -0
  131. package/courses/github-actions-cicd/scenarios/level-2/intermediate-cicd-shift.yaml +68 -0
  132. package/courses/github-actions-cicd/scenarios/level-2/matrix-builds.yaml +59 -0
  133. package/courses/github-actions-cicd/scenarios/level-2/reusable-workflows.yaml +61 -0
  134. package/courses/github-actions-cicd/scenarios/level-2/workflow-cost-optimization.yaml +61 -0
  135. package/courses/github-actions-cicd/scenarios/level-3/advanced-cicd-shift.yaml +64 -0
  136. package/courses/github-actions-cicd/scenarios/level-3/compliance-automation.yaml +68 -0
  137. package/courses/github-actions-cicd/scenarios/level-3/docker-action-development.yaml +65 -0
  138. package/courses/github-actions-cicd/scenarios/level-3/github-environments.yaml +65 -0
  139. package/courses/github-actions-cicd/scenarios/level-3/monorepo-ci.yaml +68 -0
  140. package/courses/github-actions-cicd/scenarios/level-3/oidc-cloud-deployments.yaml +55 -0
  141. package/courses/github-actions-cicd/scenarios/level-3/release-automation.yaml +61 -0
  142. package/courses/github-actions-cicd/scenarios/level-3/security-hardening.yaml +63 -0
  143. package/courses/github-actions-cicd/scenarios/level-3/self-hosted-runners.yaml +60 -0
  144. package/courses/github-actions-cicd/scenarios/level-3/workflow-optimization.yaml +59 -0
  145. package/courses/github-actions-cicd/scenarios/level-4/cicd-data-architecture.yaml +63 -0
  146. package/courses/github-actions-cicd/scenarios/level-4/cicd-economics-roi.yaml +63 -0
  147. package/courses/github-actions-cicd/scenarios/level-4/cicd-executive-communication.yaml +58 -0
  148. package/courses/github-actions-cicd/scenarios/level-4/cicd-incident-response.yaml +60 -0
  149. package/courses/github-actions-cicd/scenarios/level-4/cicd-org-design.yaml +59 -0
  150. package/courses/github-actions-cicd/scenarios/level-4/cicd-platform-architecture.yaml +63 -0
  151. package/courses/github-actions-cicd/scenarios/level-4/cicd-training-program.yaml +65 -0
  152. package/courses/github-actions-cicd/scenarios/level-4/cicd-vendor-evaluation.yaml +59 -0
  153. package/courses/github-actions-cicd/scenarios/level-4/enterprise-cicd-governance.yaml +55 -0
  154. package/courses/github-actions-cicd/scenarios/level-4/expert-cicd-shift.yaml +60 -0
  155. package/courses/github-actions-cicd/scenarios/level-5/cicd-ai-future.yaml +63 -0
  156. package/courses/github-actions-cicd/scenarios/level-5/cicd-behavioral-science.yaml +70 -0
  157. package/courses/github-actions-cicd/scenarios/level-5/cicd-board-strategy.yaml +56 -0
  158. package/courses/github-actions-cicd/scenarios/level-5/cicd-consulting-engagement.yaml +61 -0
  159. package/courses/github-actions-cicd/scenarios/level-5/cicd-industry-benchmarks.yaml +63 -0
  160. package/courses/github-actions-cicd/scenarios/level-5/cicd-ma-integration.yaml +73 -0
  161. package/courses/github-actions-cicd/scenarios/level-5/cicd-product-development.yaml +68 -0
  162. package/courses/github-actions-cicd/scenarios/level-5/cicd-regulatory-landscape.yaml +72 -0
  163. package/courses/github-actions-cicd/scenarios/level-5/comprehensive-cicd-system.yaml +66 -0
  164. package/courses/github-actions-cicd/scenarios/level-5/master-cicd-shift.yaml +76 -0
  165. package/courses/github-pr-review/scenarios/level-2/api-change-review.yaml +82 -0
  166. package/courses/github-pr-review/scenarios/level-2/automated-review-tooling.yaml +53 -0
  167. package/courses/github-pr-review/scenarios/level-2/cross-team-review.yaml +61 -0
  168. package/courses/github-pr-review/scenarios/level-2/intermediate-review-shift.yaml +66 -0
  169. package/courses/github-pr-review/scenarios/level-2/performance-review-patterns.yaml +99 -0
  170. package/courses/github-pr-review/scenarios/level-2/review-disagreement-resolution.yaml +64 -0
  171. package/courses/github-pr-review/scenarios/level-2/review-metrics-analysis.yaml +63 -0
  172. package/courses/github-pr-review/scenarios/level-2/review-turnaround-sla.yaml +54 -0
  173. package/courses/github-pr-review/scenarios/level-2/stacked-pr-review.yaml +65 -0
  174. package/courses/github-pr-review/scenarios/level-3/advanced-review-shift.yaml +65 -0
  175. package/courses/github-pr-review/scenarios/level-3/ai-powered-review.yaml +58 -0
  176. package/courses/github-pr-review/scenarios/level-3/compliance-review-process.yaml +64 -0
  177. package/courses/github-pr-review/scenarios/level-3/cross-functional-review.yaml +60 -0
  178. package/courses/github-pr-review/scenarios/level-3/incident-driven-review.yaml +63 -0
  179. package/courses/github-pr-review/scenarios/level-3/large-scale-review-operations.yaml +55 -0
  180. package/courses/github-pr-review/scenarios/level-3/monorepo-review-process.yaml +68 -0
  181. package/courses/github-pr-review/scenarios/level-3/review-automation-platform.yaml +61 -0
  182. package/courses/github-pr-review/scenarios/level-3/review-culture-design.yaml +62 -0
  183. package/courses/github-pr-review/scenarios/level-3/review-data-pipeline.yaml +62 -0
  184. package/courses/github-pr-review/scenarios/level-4/enterprise-review-operations.yaml +61 -0
  185. package/courses/github-pr-review/scenarios/level-4/expert-review-shift.yaml +62 -0
  186. package/courses/github-pr-review/scenarios/level-4/review-data-architecture.yaml +69 -0
  187. package/courses/github-pr-review/scenarios/level-4/review-economics-roi.yaml +63 -0
  188. package/courses/github-pr-review/scenarios/level-4/review-executive-communication.yaml +61 -0
  189. package/courses/github-pr-review/scenarios/level-4/review-incident-postmortem.yaml +69 -0
  190. package/courses/github-pr-review/scenarios/level-4/review-org-design.yaml +62 -0
  191. package/courses/github-pr-review/scenarios/level-4/review-platform-architecture.yaml +64 -0
  192. package/courses/github-pr-review/scenarios/level-4/review-training-program.yaml +66 -0
  193. package/courses/github-pr-review/scenarios/level-4/review-vendor-evaluation.yaml +76 -0
  194. package/courses/github-pr-review/scenarios/level-5/comprehensive-review-system.yaml +68 -0
  195. package/courses/github-pr-review/scenarios/level-5/master-review-shift.yaml +73 -0
  196. package/courses/github-pr-review/scenarios/level-5/review-ai-future.yaml +69 -0
  197. package/courses/github-pr-review/scenarios/level-5/review-behavioral-science.yaml +66 -0
  198. package/courses/github-pr-review/scenarios/level-5/review-board-strategy.yaml +62 -0
  199. package/courses/github-pr-review/scenarios/level-5/review-consulting-engagement.yaml +62 -0
  200. package/courses/github-pr-review/scenarios/level-5/review-devtools-product.yaml +71 -0
  201. package/courses/github-pr-review/scenarios/level-5/review-industry-benchmarks.yaml +64 -0
  202. package/courses/github-pr-review/scenarios/level-5/review-ma-integration.yaml +76 -0
  203. package/courses/github-pr-review/scenarios/level-5/review-regulatory-landscape.yaml +78 -0
  204. package/courses/kubernetes-deployment-troubleshooting/course.yaml +12 -0
  205. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/configmap-secret-issues.yaml +69 -0
  206. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/crashloopbackoff.yaml +68 -0
  207. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/deployment-rollout.yaml +56 -0
  208. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/first-troubleshooting-shift.yaml +65 -0
  209. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/health-probe-failures.yaml +70 -0
  210. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/imagepullbackoff.yaml +57 -0
  211. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/kubectl-debugging-basics.yaml +56 -0
  212. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/oomkilled.yaml +70 -0
  213. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/pending-pods.yaml +68 -0
  214. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/service-not-reachable.yaml +66 -0
  215. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/dns-resolution-failures.yaml +63 -0
  216. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/helm-deployment-failures.yaml +63 -0
  217. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/hpa-scaling-issues.yaml +62 -0
  218. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/ingress-routing-issues.yaml +63 -0
  219. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/init-container-failures.yaml +63 -0
  220. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/intermediate-troubleshooting-shift.yaml +66 -0
  221. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/network-policy-blocking.yaml +67 -0
  222. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/persistent-volume-issues.yaml +69 -0
  223. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/rbac-permission-denied.yaml +57 -0
  224. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/resource-quota-limits.yaml +64 -0
  225. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/advanced-troubleshooting-shift.yaml +69 -0
  226. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/cluster-upgrade-failures.yaml +71 -0
  227. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/gitops-drift-detection.yaml +62 -0
  228. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/job-cronjob-failures.yaml +67 -0
  229. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/monitoring-alerting-gaps.yaml +64 -0
  230. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/multi-container-debugging.yaml +68 -0
  231. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/node-pressure-evictions.yaml +70 -0
  232. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/pod-disruption-budgets.yaml +59 -0
  233. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/service-mesh-debugging.yaml +64 -0
  234. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/statefulset-troubleshooting.yaml +69 -0
  235. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/capacity-planning.yaml +65 -0
  236. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/cost-optimization.yaml +57 -0
  237. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/disaster-recovery-design.yaml +56 -0
  238. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/executive-communication.yaml +62 -0
  239. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/expert-troubleshooting-shift.yaml +65 -0
  240. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/incident-management-process.yaml +59 -0
  241. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/multi-cluster-operations.yaml +62 -0
  242. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/multi-tenancy-design.yaml +55 -0
  243. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/platform-engineering.yaml +59 -0
  244. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/security-hardening.yaml +58 -0
  245. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/behavioral-science.yaml +62 -0
  246. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/board-strategy.yaml +61 -0
  247. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/cloud-native-future.yaml +65 -0
  248. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/comprehensive-platform.yaml +57 -0
  249. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/consulting-engagement.yaml +62 -0
  250. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/industry-benchmarks.yaml +58 -0
  251. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/ma-integration.yaml +62 -0
  252. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/master-troubleshooting-shift.yaml +73 -0
  253. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/product-development.yaml +65 -0
  254. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/regulatory-compliance.yaml +76 -0
  255. package/courses/mysql-query-optimization/course.yaml +11 -0
  256. package/courses/mysql-query-optimization/scenarios/level-1/buffer-pool-basics.yaml +65 -0
  257. package/courses/mysql-query-optimization/scenarios/level-1/explain-basics.yaml +66 -0
  258. package/courses/mysql-query-optimization/scenarios/level-1/first-optimization-shift.yaml +78 -0
  259. package/courses/mysql-query-optimization/scenarios/level-1/innodb-index-fundamentals.yaml +68 -0
  260. package/courses/mysql-query-optimization/scenarios/level-1/join-basics.yaml +66 -0
  261. package/courses/mysql-query-optimization/scenarios/level-1/n-plus-one-queries.yaml +67 -0
  262. package/courses/mysql-query-optimization/scenarios/level-1/query-rewriting-basics.yaml +66 -0
  263. package/courses/mysql-query-optimization/scenarios/level-1/select-star-problems.yaml +68 -0
  264. package/courses/mysql-query-optimization/scenarios/level-1/slow-query-diagnosis.yaml +65 -0
  265. package/courses/mysql-query-optimization/scenarios/level-1/where-clause-optimization.yaml +65 -0
  266. package/courses/mysql-query-optimization/scenarios/level-2/buffer-pool-tuning.yaml +64 -0
  267. package/courses/mysql-query-optimization/scenarios/level-2/composite-index-design.yaml +71 -0
  268. package/courses/mysql-query-optimization/scenarios/level-2/covering-and-invisible-indexes.yaml +69 -0
  269. package/courses/mysql-query-optimization/scenarios/level-2/cte-and-window-functions.yaml +78 -0
  270. package/courses/mysql-query-optimization/scenarios/level-2/intermediate-optimization-shift.yaml +68 -0
  271. package/courses/mysql-query-optimization/scenarios/level-2/join-optimization.yaml +67 -0
  272. package/courses/mysql-query-optimization/scenarios/level-2/performance-schema-analysis.yaml +69 -0
  273. package/courses/mysql-query-optimization/scenarios/level-2/query-optimizer-hints.yaml +74 -0
  274. package/courses/mysql-query-optimization/scenarios/level-2/subquery-optimization.yaml +70 -0
  275. package/courses/mysql-query-optimization/scenarios/level-2/write-optimization.yaml +63 -0
  276. package/courses/mysql-query-optimization/scenarios/level-3/advanced-optimization-shift.yaml +71 -0
  277. package/courses/mysql-query-optimization/scenarios/level-3/connection-management.yaml +67 -0
  278. package/courses/mysql-query-optimization/scenarios/level-3/full-text-search.yaml +77 -0
  279. package/courses/mysql-query-optimization/scenarios/level-3/json-optimization.yaml +87 -0
  280. package/courses/mysql-query-optimization/scenarios/level-3/lock-contention-analysis.yaml +68 -0
  281. package/courses/mysql-query-optimization/scenarios/level-3/monitoring-alerting.yaml +63 -0
  282. package/courses/mysql-query-optimization/scenarios/level-3/online-schema-changes.yaml +79 -0
  283. package/courses/mysql-query-optimization/scenarios/level-3/partitioning-strategies.yaml +83 -0
  284. package/courses/mysql-query-optimization/scenarios/level-3/query-profiling-deep-dive.yaml +84 -0
  285. package/courses/mysql-query-optimization/scenarios/level-3/replication-optimization.yaml +66 -0
  286. package/courses/mysql-query-optimization/scenarios/level-4/aurora-vs-rds-evaluation.yaml +61 -0
  287. package/courses/mysql-query-optimization/scenarios/level-4/data-architecture.yaml +62 -0
  288. package/courses/mysql-query-optimization/scenarios/level-4/database-migration-planning.yaml +59 -0
  289. package/courses/mysql-query-optimization/scenarios/level-4/enterprise-governance.yaml +50 -0
  290. package/courses/mysql-query-optimization/scenarios/level-4/executive-communication.yaml +54 -0
  291. package/courses/mysql-query-optimization/scenarios/level-4/expert-optimization-shift.yaml +67 -0
  292. package/courses/mysql-query-optimization/scenarios/level-4/high-availability-architecture.yaml +60 -0
  293. package/courses/mysql-query-optimization/scenarios/level-4/optimizer-internals.yaml +62 -0
  294. package/courses/mysql-query-optimization/scenarios/level-4/performance-sla-design.yaml +52 -0
  295. package/courses/mysql-query-optimization/scenarios/level-4/read-replica-scaling.yaml +51 -0
  296. package/courses/mysql-query-optimization/scenarios/level-5/ai-database-future.yaml +45 -0
  297. package/courses/mysql-query-optimization/scenarios/level-5/behavioral-science.yaml +44 -0
  298. package/courses/mysql-query-optimization/scenarios/level-5/benchmark-design.yaml +47 -0
  299. package/courses/mysql-query-optimization/scenarios/level-5/board-strategy.yaml +48 -0
  300. package/courses/mysql-query-optimization/scenarios/level-5/comprehensive-platform.yaml +49 -0
  301. package/courses/mysql-query-optimization/scenarios/level-5/consulting-engagement.yaml +52 -0
  302. package/courses/mysql-query-optimization/scenarios/level-5/ma-database-integration.yaml +47 -0
  303. package/courses/mysql-query-optimization/scenarios/level-5/master-optimization-shift.yaml +56 -0
  304. package/courses/mysql-query-optimization/scenarios/level-5/product-development.yaml +48 -0
  305. package/courses/mysql-query-optimization/scenarios/level-5/regulatory-compliance.yaml +48 -0
  306. package/courses/postgresql-query-optimization/course.yaml +11 -0
  307. package/courses/postgresql-query-optimization/scenarios/level-1/explain-analyze-basics.yaml +80 -0
  308. package/courses/postgresql-query-optimization/scenarios/level-1/first-optimization-shift.yaml +77 -0
  309. package/courses/postgresql-query-optimization/scenarios/level-1/index-fundamentals.yaml +76 -0
  310. package/courses/postgresql-query-optimization/scenarios/level-1/join-basics.yaml +73 -0
  311. package/courses/postgresql-query-optimization/scenarios/level-1/n-plus-one-queries.yaml +62 -0
  312. package/courses/postgresql-query-optimization/scenarios/level-1/query-rewriting-basics.yaml +69 -0
  313. package/courses/postgresql-query-optimization/scenarios/level-1/select-star-problems.yaml +69 -0
  314. package/courses/postgresql-query-optimization/scenarios/level-1/slow-query-diagnosis.yaml +63 -0
  315. package/courses/postgresql-query-optimization/scenarios/level-1/vacuum-and-statistics.yaml +62 -0
  316. package/courses/postgresql-query-optimization/scenarios/level-1/where-clause-optimization.yaml +74 -0
  317. package/courses/postgresql-query-optimization/scenarios/level-2/autovacuum-tuning.yaml +76 -0
  318. package/courses/postgresql-query-optimization/scenarios/level-2/composite-index-design.yaml +81 -0
  319. package/courses/postgresql-query-optimization/scenarios/level-2/covering-indexes.yaml +74 -0
  320. package/courses/postgresql-query-optimization/scenarios/level-2/cte-optimization.yaml +83 -0
  321. package/courses/postgresql-query-optimization/scenarios/level-2/intermediate-optimization-shift.yaml +66 -0
  322. package/courses/postgresql-query-optimization/scenarios/level-2/join-optimization.yaml +72 -0
  323. package/courses/postgresql-query-optimization/scenarios/level-2/partial-and-expression-indexes.yaml +75 -0
  324. package/courses/postgresql-query-optimization/scenarios/level-2/query-planner-settings.yaml +62 -0
  325. package/courses/postgresql-query-optimization/scenarios/level-2/subquery-optimization.yaml +67 -0
  326. package/courses/postgresql-query-optimization/scenarios/level-2/window-function-optimization.yaml +63 -0
  327. package/courses/postgresql-query-optimization/scenarios/level-3/advanced-optimization-shift.yaml +71 -0
  328. package/courses/postgresql-query-optimization/scenarios/level-3/connection-pooling.yaml +60 -0
  329. package/courses/postgresql-query-optimization/scenarios/level-3/full-text-search-optimization.yaml +66 -0
  330. package/courses/postgresql-query-optimization/scenarios/level-3/jsonb-optimization.yaml +88 -0
  331. package/courses/postgresql-query-optimization/scenarios/level-3/lock-contention-analysis.yaml +80 -0
  332. package/courses/postgresql-query-optimization/scenarios/level-3/materialized-view-optimization.yaml +73 -0
  333. package/courses/postgresql-query-optimization/scenarios/level-3/parallel-query-execution.yaml +74 -0
  334. package/courses/postgresql-query-optimization/scenarios/level-3/partitioning-strategies.yaml +71 -0
  335. package/courses/postgresql-query-optimization/scenarios/level-3/specialized-index-types.yaml +67 -0
  336. package/courses/postgresql-query-optimization/scenarios/level-3/write-optimization.yaml +65 -0
  337. package/courses/postgresql-query-optimization/scenarios/level-4/data-architecture-analytics.yaml +64 -0
  338. package/courses/postgresql-query-optimization/scenarios/level-4/database-executive-communication.yaml +64 -0
  339. package/courses/postgresql-query-optimization/scenarios/level-4/database-migration-planning.yaml +57 -0
  340. package/courses/postgresql-query-optimization/scenarios/level-4/enterprise-database-governance.yaml +52 -0
  341. package/courses/postgresql-query-optimization/scenarios/level-4/expert-optimization-shift.yaml +73 -0
  342. package/courses/postgresql-query-optimization/scenarios/level-4/high-availability-architecture.yaml +62 -0
  343. package/courses/postgresql-query-optimization/scenarios/level-4/optimizer-internals.yaml +69 -0
  344. package/courses/postgresql-query-optimization/scenarios/level-4/performance-sla-design.yaml +58 -0
  345. package/courses/postgresql-query-optimization/scenarios/level-4/read-replica-optimization.yaml +62 -0
  346. package/courses/postgresql-query-optimization/scenarios/level-4/vendor-evaluation.yaml +73 -0
  347. package/courses/postgresql-query-optimization/scenarios/level-5/comprehensive-database-system.yaml +70 -0
  348. package/courses/postgresql-query-optimization/scenarios/level-5/database-ai-future.yaml +81 -0
  349. package/courses/postgresql-query-optimization/scenarios/level-5/database-behavioral-science.yaml +63 -0
  350. package/courses/postgresql-query-optimization/scenarios/level-5/database-board-strategy.yaml +77 -0
  351. package/courses/postgresql-query-optimization/scenarios/level-5/database-consulting-engagement.yaml +61 -0
  352. package/courses/postgresql-query-optimization/scenarios/level-5/database-industry-benchmarks.yaml +64 -0
  353. package/courses/postgresql-query-optimization/scenarios/level-5/database-ma-integration.yaml +71 -0
  354. package/courses/postgresql-query-optimization/scenarios/level-5/database-product-development.yaml +72 -0
  355. package/courses/postgresql-query-optimization/scenarios/level-5/database-regulatory-landscape.yaml +76 -0
  356. package/courses/postgresql-query-optimization/scenarios/level-5/master-optimization-shift.yaml +66 -0
  357. package/courses/rest-api-error-handling/course.yaml +11 -0
  358. package/courses/rest-api-error-handling/scenarios/level-1/authentication-errors.yaml +71 -0
  359. package/courses/rest-api-error-handling/scenarios/level-1/content-negotiation-errors.yaml +63 -0
  360. package/courses/rest-api-error-handling/scenarios/level-1/error-logging-basics.yaml +63 -0
  361. package/courses/rest-api-error-handling/scenarios/level-1/error-response-format.yaml +58 -0
  362. package/courses/rest-api-error-handling/scenarios/level-1/first-error-handling-shift.yaml +67 -0
  363. package/courses/rest-api-error-handling/scenarios/level-1/http-status-codes.yaml +46 -0
  364. package/courses/rest-api-error-handling/scenarios/level-1/not-found-errors.yaml +52 -0
  365. package/courses/rest-api-error-handling/scenarios/level-1/rate-limiting-errors.yaml +56 -0
  366. package/courses/rest-api-error-handling/scenarios/level-1/request-validation-errors.yaml +59 -0
  367. package/courses/rest-api-error-handling/scenarios/level-1/server-error-handling.yaml +55 -0
  368. package/courses/rest-api-error-handling/scenarios/level-2/api-versioning-errors.yaml +66 -0
  369. package/courses/rest-api-error-handling/scenarios/level-2/batch-request-errors.yaml +61 -0
  370. package/courses/rest-api-error-handling/scenarios/level-2/circuit-breaker-pattern.yaml +52 -0
  371. package/courses/rest-api-error-handling/scenarios/level-2/error-code-taxonomy.yaml +62 -0
  372. package/courses/rest-api-error-handling/scenarios/level-2/error-monitoring-alerting.yaml +53 -0
  373. package/courses/rest-api-error-handling/scenarios/level-2/intermediate-error-shift.yaml +69 -0
  374. package/courses/rest-api-error-handling/scenarios/level-2/pagination-errors.yaml +66 -0
  375. package/courses/rest-api-error-handling/scenarios/level-2/retry-and-idempotency.yaml +60 -0
  376. package/courses/rest-api-error-handling/scenarios/level-2/rfc7807-problem-details.yaml +60 -0
  377. package/courses/rest-api-error-handling/scenarios/level-2/webhook-error-handling.yaml +55 -0
  378. package/courses/rest-api-error-handling/scenarios/level-3/advanced-error-shift.yaml +72 -0
  379. package/courses/rest-api-error-handling/scenarios/level-3/api-gateway-errors.yaml +71 -0
  380. package/courses/rest-api-error-handling/scenarios/level-3/async-api-errors.yaml +67 -0
  381. package/courses/rest-api-error-handling/scenarios/level-3/caching-error-scenarios.yaml +65 -0
  382. package/courses/rest-api-error-handling/scenarios/level-3/chaos-engineering-apis.yaml +62 -0
  383. package/courses/rest-api-error-handling/scenarios/level-3/database-error-handling.yaml +79 -0
  384. package/courses/rest-api-error-handling/scenarios/level-3/distributed-error-propagation.yaml +63 -0
  385. package/courses/rest-api-error-handling/scenarios/level-3/error-budgets-sre.yaml +61 -0
  386. package/courses/rest-api-error-handling/scenarios/level-3/error-correlation.yaml +58 -0
  387. package/courses/rest-api-error-handling/scenarios/level-3/graphql-vs-rest-errors.yaml +73 -0
  388. package/courses/rest-api-error-handling/scenarios/level-4/compliance-error-handling.yaml +65 -0
  389. package/courses/rest-api-error-handling/scenarios/level-4/enterprise-error-governance.yaml +62 -0
  390. package/courses/rest-api-error-handling/scenarios/level-4/error-analytics-platform.yaml +65 -0
  391. package/courses/rest-api-error-handling/scenarios/level-4/error-cost-optimization.yaml +63 -0
  392. package/courses/rest-api-error-handling/scenarios/level-4/error-executive-communication.yaml +60 -0
  393. package/courses/rest-api-error-handling/scenarios/level-4/error-handling-architecture.yaml +67 -0
  394. package/courses/rest-api-error-handling/scenarios/level-4/error-org-design.yaml +68 -0
  395. package/courses/rest-api-error-handling/scenarios/level-4/error-sla-design.yaml +65 -0
  396. package/courses/rest-api-error-handling/scenarios/level-4/error-training-program.yaml +61 -0
  397. package/courses/rest-api-error-handling/scenarios/level-4/expert-error-shift.yaml +63 -0
  398. package/courses/rest-api-error-handling/scenarios/level-5/comprehensive-error-system.yaml +68 -0
  399. package/courses/rest-api-error-handling/scenarios/level-5/error-ai-future.yaml +75 -0
  400. package/courses/rest-api-error-handling/scenarios/level-5/error-behavioral-science.yaml +73 -0
  401. package/courses/rest-api-error-handling/scenarios/level-5/error-board-strategy.yaml +60 -0
  402. package/courses/rest-api-error-handling/scenarios/level-5/error-consulting-engagement.yaml +58 -0
  403. package/courses/rest-api-error-handling/scenarios/level-5/error-industry-benchmarks.yaml +72 -0
  404. package/courses/rest-api-error-handling/scenarios/level-5/error-ma-integration.yaml +68 -0
  405. package/courses/rest-api-error-handling/scenarios/level-5/error-product-development.yaml +66 -0
  406. package/courses/rest-api-error-handling/scenarios/level-5/error-regulatory-landscape.yaml +80 -0
  407. package/courses/rest-api-error-handling/scenarios/level-5/master-error-shift.yaml +73 -0
  408. package/courses/terraform-infrastructure-setup/course.yaml +11 -0
  409. package/courses/terraform-infrastructure-setup/scenarios/level-1/terraform-init-errors.yaml +72 -0
  410. package/dist/cli/commands/add.d.ts.map +1 -1
  411. package/dist/cli/commands/add.js +6 -5
  412. package/dist/cli/commands/add.js.map +1 -1
  413. package/dist/cli/commands/generate.d.ts.map +1 -1
  414. package/dist/cli/commands/generate.js +4 -0
  415. package/dist/cli/commands/generate.js.map +1 -1
  416. package/dist/cli/commands/list.d.ts.map +1 -1
  417. package/dist/cli/commands/list.js +6 -18
  418. package/dist/cli/commands/list.js.map +1 -1
  419. package/dist/cli/commands/train.d.ts.map +1 -1
  420. package/dist/cli/commands/train.js +18 -18
  421. package/dist/cli/commands/train.js.map +1 -1
  422. package/dist/cli/index.js +93 -55
  423. package/dist/cli/index.js.map +1 -1
  424. package/dist/cli/run-demo.js +2 -1
  425. package/dist/cli/run-demo.js.map +1 -1
  426. package/dist/cli/setup.d.ts +18 -0
  427. package/dist/cli/setup.d.ts.map +1 -0
  428. package/dist/cli/setup.js +154 -0
  429. package/dist/cli/setup.js.map +1 -0
  430. package/dist/engine/agent-bridge.d.ts +5 -2
  431. package/dist/engine/agent-bridge.d.ts.map +1 -1
  432. package/dist/engine/agent-bridge.js +36 -9
  433. package/dist/engine/agent-bridge.js.map +1 -1
  434. package/dist/engine/loader.d.ts +21 -0
  435. package/dist/engine/loader.d.ts.map +1 -1
  436. package/dist/engine/loader.js +54 -1
  437. package/dist/engine/loader.js.map +1 -1
  438. package/dist/engine/training-loop.d.ts.map +1 -1
  439. package/dist/engine/training-loop.js +1 -0
  440. package/dist/engine/training-loop.js.map +1 -1
  441. package/dist/engine/training.d.ts.map +1 -1
  442. package/dist/engine/training.js +1 -0
  443. package/dist/engine/training.js.map +1 -1
  444. package/dist/generator/skill-generator.d.ts +1 -1
  445. package/dist/generator/skill-generator.d.ts.map +1 -1
  446. package/dist/generator/skill-generator.js +21 -2
  447. package/dist/generator/skill-generator.js.map +1 -1
  448. package/dist/mcp/server.d.ts.map +1 -1
  449. package/dist/mcp/server.js +11 -26
  450. package/dist/mcp/server.js.map +1 -1
  451. package/dist/mcp/session-manager.d.ts +9 -4
  452. package/dist/mcp/session-manager.d.ts.map +1 -1
  453. package/dist/mcp/session-manager.js +65 -28
  454. package/dist/mcp/session-manager.js.map +1 -1
  455. package/dist/types/schemas.d.ts +38 -13
  456. package/dist/types/schemas.d.ts.map +1 -1
  457. package/dist/types/schemas.js +9 -5
  458. package/dist/types/schemas.js.map +1 -1
  459. package/package.json +1 -1
@@ -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"
@@ -0,0 +1,74 @@
1
+ meta:
2
+ id: sam-local-debugging
3
+ level: 2
4
+ course: aws-lambda-debugging
5
+ type: output
6
+ description: "Debug Lambda locally with SAM CLI — use sam local invoke, start-api, and generate-event for local development and testing"
7
+ tags: [AWS, Lambda, SAM, local-testing, debugging, development, intermediate]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your development workflow is painful: make a change, deploy to AWS
13
+ (2 minutes), test, see error, repeat. You need local debugging.
14
+
15
+ Setting up SAM CLI:
16
+
17
+ $ sam init --runtime python3.12 --app-template hello-world
18
+ $ sam build
19
+ $ sam local invoke HelloWorldFunction
20
+ Invoking app.lambda_handler (python3.12)
21
+ Building image...
22
+ START RequestId: local-123
23
+ {"statusCode": 200, "body": "{\"message\": \"hello world\"}"}
24
+ END RequestId: local-123
25
+ REPORT RequestId: local-123 Duration: 5.23 ms
26
+
27
+ Works! But now testing with a real event:
28
+
29
+ $ sam local generate-event apigateway aws-proxy > event.json
30
+ $ sam local invoke HelloWorldFunction -e event.json
31
+ Error: Template file not found: template.yaml
32
+
33
+ Wrong directory — SAM needs template.yaml (infrastructure definition).
34
+
35
+ Testing API locally:
36
+ $ sam local start-api
37
+ Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET]
38
+ $ curl http://localhost:3000/hello
39
+ {"message": "hello world"}
40
+
41
+ But environment variables are missing:
42
+ $ sam local invoke -n env.json HelloWorldFunction
43
+ # env.json: {"HelloWorldFunction": {"TABLE_NAME": "local-table"}}
44
+
45
+ Debugging with breakpoints:
46
+ $ sam local invoke -d 5858 HelloWorldFunction
47
+ Debugger listening on ws://127.0.0.1:5858
48
+ (attach VS Code debugger to port 5858)
49
+
50
+ Limitations:
51
+ - Local execution uses Docker — slightly different from actual Lambda
52
+ - IAM permissions not enforced locally
53
+ - VPC networking not simulated
54
+ - Event source mappings not simulated (must provide events manually)
55
+
56
+ Task: Explain SAM CLI local debugging. Write: sam local invoke
57
+ (function testing), sam local start-api (API testing), generating
58
+ test events, environment variables and configuration, debugging
59
+ with breakpoints (VS Code), limitations of local testing, and
60
+ complementary tools (LocalStack, moto for AWS mocking).
61
+
62
+ assertions:
63
+ - type: llm_judge
64
+ criteria: "SAM local commands are explained — sam local invoke: runs function once with optional event file (-e event.json). sam local start-api: starts local HTTP server that routes to Lambda functions (mirrors API Gateway). sam local start-lambda: starts local Lambda endpoint for SDK testing. sam local generate-event: creates sample events for various triggers (apigateway, s3, sqs, dynamodb, etc.). sam build: compiles/packages code before local testing. All require Docker running locally"
65
+ weight: 0.35
66
+ description: "SAM commands"
67
+ - type: llm_judge
68
+ criteria: "Debugging and configuration are covered — breakpoint debugging: sam local invoke -d <port> pauses function until debugger attaches. VS Code: launch.json configuration for SAM debugging. Environment variables: -n env.json file or --parameter-overrides. Docker network: --docker-network to connect Lambda to local services (local DynamoDB, PostgreSQL). Hot reloading: --skip-pull-image for faster iteration. Layer testing: layers specified in template.yaml are automatically included in local invocations"
69
+ weight: 0.35
70
+ description: "Debugging"
71
+ - type: llm_judge
72
+ criteria: "Limitations and alternatives are practical — SAM local limitations: no IAM enforcement (permission errors won't appear), no VPC simulation, no event source mapping simulation, Docker-based execution has slight differences from real Lambda. Alternatives: LocalStack (full AWS service emulation), moto (Python AWS mocking), DynamoDB Local (official local DynamoDB). Best practice: local testing for rapid development iteration, deploy to a dev AWS account for integration testing, use CI/CD for automated testing against real services. Unit tests mock AWS SDK calls for fast feedback"
73
+ weight: 0.30
74
+ description: "Limitations"