vybekiit 0.7.4 → 0.7.7
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.
- package/dist/bin.js +10483 -1704
- package/dist/global-skills/aws-cdk/SKILL.md +2 -1
- package/dist/global-skills/aws-cloudformation/SKILL.md +2 -1
- package/dist/global-skills/aws-serverless/SKILL.md +45 -44
- package/dist/global-skills/aws-serverless/assets/powertools-handler.py +2 -1
- package/dist/global-skills/aws-serverless/references/api-gateway.md +50 -470
- package/dist/global-skills/aws-serverless/references/architecture.md +47 -186
- package/dist/global-skills/aws-serverless/references/concurrency.md +44 -158
- package/dist/global-skills/aws-serverless/references/deployment.md +1 -1
- package/dist/global-skills/aws-serverless/references/event-sources.md +72 -391
- package/dist/global-skills/aws-serverless/references/lambda.md +69 -428
- package/dist/global-skills/aws-serverless/references/orchestration.md +65 -384
- package/dist/global-skills/aws-serverless/references/production.md +78 -415
- package/dist/global-skills/aws-serverless/references/troubleshooting.md +92 -619
- package/dist/global-skills/claimable-postgres/SKILL.md +60 -49
- package/dist/global-skills/design-my-data/SKILL.md +2 -0
- package/dist/global-skills/eas-app-stores/SKILL.md +8 -0
- package/dist/global-skills/eas-app-stores/references/play-store.md +2 -0
- package/dist/global-skills/eas-hosting/SKILL.md +8 -0
- package/dist/global-skills/eas-observe/SKILL.md +30 -8
- package/dist/global-skills/eas-observe/agents/openai.yaml +1 -1
- package/dist/global-skills/eas-observe/references/metrics.md +54 -3
- package/dist/global-skills/eas-observe/references/queries.md +78 -17
- package/dist/global-skills/eas-observe/references/setup.md +164 -5
- package/dist/global-skills/eas-observe/references/third-party.md +136 -0
- package/dist/global-skills/eas-simulator/SKILL.md +63 -11
- package/dist/global-skills/eas-simulator/references/controllers.md +21 -2
- package/dist/global-skills/eas-simulator/references/run-your-app.md +16 -11
- package/dist/global-skills/eas-simulator/references/troubleshooting.md +8 -5
- package/dist/global-skills/eas-update-insights/SKILL.md +8 -0
- package/dist/global-skills/eas-workflows/SKILL.md +15 -10
- package/dist/global-skills/eas-workflows/scripts/package.json +2 -7
- package/dist/global-skills/email-best-practices/.github/workflows/sync-skills.yml +30 -0
- package/dist/global-skills/email-best-practices/README.md +63 -0
- package/dist/global-skills/email-best-practices/references/accessibility.md +189 -0
- package/dist/global-skills/email-best-practices/references/compliance.md +125 -0
- package/dist/global-skills/email-best-practices/references/deliverability.md +121 -0
- package/dist/global-skills/email-best-practices/references/email-capture.md +129 -0
- package/dist/global-skills/email-best-practices/references/email-types.md +173 -0
- package/dist/global-skills/email-best-practices/references/list-management.md +157 -0
- package/dist/global-skills/email-best-practices/references/marketing-emails.md +115 -0
- package/dist/global-skills/email-best-practices/references/sending-reliability.md +155 -0
- package/dist/global-skills/email-best-practices/references/transactional-email-catalog.md +418 -0
- package/dist/global-skills/email-best-practices/references/transactional-emails.md +92 -0
- package/dist/global-skills/email-best-practices/references/webhooks-events.md +167 -0
- package/dist/global-skills/email-best-practices/tests/README.md +35 -0
- package/dist/global-skills/email-best-practices/tests/scenarios/01-spam-deliverability.md +46 -0
- package/dist/global-skills/email-best-practices/tests/scenarios/02-multi-region-compliance.md +48 -0
- package/dist/global-skills/email-best-practices/tests/scenarios/03-retry-idempotency.md +36 -0
- package/dist/global-skills/email-best-practices/tests/scenarios/04-webhook-bounce-handling.md +52 -0
- package/dist/global-skills/email-best-practices/tests/scenarios/05-new-saas-email-plan.md +51 -0
- package/dist/global-skills/expo-animation/LICENSE +21 -0
- package/dist/global-skills/expo-animation/RECIPES.md +385 -0
- package/dist/global-skills/expo-animation/SKILL.md +267 -0
- package/dist/global-skills/expo-animation/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-app-clip/SKILL.md +8 -0
- package/dist/global-skills/expo-brownfield/SKILL.md +8 -0
- package/dist/global-skills/expo-brownfield/references/brownfield-isolated.md +53 -4
- package/dist/global-skills/expo-data-fetching/SKILL.md +8 -0
- package/dist/global-skills/expo-design-system/SKILL.md +356 -0
- package/dist/global-skills/expo-design-system/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-design-system/references/audit.md +185 -0
- package/dist/global-skills/expo-dev-client/SKILL.md +8 -0
- package/dist/global-skills/expo-dom/SKILL.md +8 -0
- package/dist/global-skills/expo-examples/SKILL.md +8 -0
- package/dist/global-skills/expo-migrate-module/SKILL.md +113 -0
- package/dist/global-skills/expo-migrate-module/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-migrate-module/references/compatibility.md +73 -0
- package/dist/global-skills/expo-migrate-module/references/example.md +212 -0
- package/dist/global-skills/expo-migrate-module/references/migration-map.md +306 -0
- package/dist/global-skills/expo-module/SKILL.md +11 -1
- package/dist/global-skills/expo-native-ui/SKILL.md +8 -0
- package/dist/global-skills/expo-project-structure/SKILL.md +114 -0
- package/dist/global-skills/expo-project-structure/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-router/SKILL.md +8 -0
- package/dist/global-skills/expo-skill-feedback/SKILL.md +66 -33
- package/dist/global-skills/expo-skill-feedback/agents/openai.yaml +2 -2
- package/dist/global-skills/expo-tailwind-setup/SKILL.md +8 -0
- package/dist/global-skills/expo-ui/SKILL.md +8 -0
- package/dist/global-skills/expo-upgrade/SKILL.md +15 -1
- package/dist/global-skills/expo-web-to-native/SKILL.md +8 -0
- package/dist/global-skills/extension-to-functions-codebase/SKILL.md +129 -0
- package/dist/global-skills/extension-to-functions-codebase/references/configuration-migration.md +161 -0
- package/dist/global-skills/extension-to-functions-codebase/references/destructuring-shim.md +122 -0
- package/dist/global-skills/extension-to-functions-codebase/references/signature-mapping.md +84 -0
- package/dist/global-skills/firebase-ai-logic-basics/SKILL.md +61 -19
- package/dist/global-skills/firebase-ai-logic-basics/references/flutter_setup.md +6 -3
- package/dist/global-skills/firebase-app-hosting-basics/SKILL.md +5 -1
- package/dist/global-skills/firebase-auth-basics/SKILL.md +4 -2
- package/dist/global-skills/firebase-basics/SKILL.md +5 -5
- package/dist/global-skills/firebase-crashlytics/SKILL.md +2 -0
- package/dist/global-skills/firebase-data-connect/SKILL.md +2 -0
- package/dist/global-skills/firebase-firestore/SKILL.md +3 -6
- package/dist/global-skills/firebase-hosting-basics/SKILL.md +4 -1
- package/dist/global-skills/firebase-remote-config-basics/SKILL.md +5 -1
- package/dist/global-skills/firebase-security-rules-auditor/SKILL.md +4 -1
- package/dist/global-skills/harden/SKILL.md +2 -1
- package/dist/global-skills/instrument-feature-flags/SKILL.md +1 -0
- package/dist/global-skills/instrument-feature-flags/references/COMMANDMENTS.md +5 -0
- package/dist/global-skills/instrument-feature-flags/references/adding-feature-flag-code.md +6 -4
- package/dist/global-skills/instrument-feature-flags/references/android.md +6 -4
- package/dist/global-skills/instrument-feature-flags/references/api.md +6 -4
- package/dist/global-skills/instrument-feature-flags/references/best-practices.md +6 -4
- package/dist/global-skills/instrument-feature-flags/references/django.md +38 -5
- package/dist/global-skills/instrument-feature-flags/references/dotnet.md +10 -4
- package/dist/global-skills/instrument-feature-flags/references/elixir.md +6 -4
- package/dist/global-skills/instrument-feature-flags/references/flask.md +17 -5
- package/dist/global-skills/instrument-feature-flags/references/flutter.md +7 -5
- package/dist/global-skills/instrument-feature-flags/references/go.md +6 -4
- package/dist/global-skills/instrument-feature-flags/references/ios.md +6 -4
- package/dist/global-skills/instrument-feature-flags/references/java.md +6 -4
- package/dist/global-skills/instrument-feature-flags/references/laravel.md +6 -4
- package/dist/global-skills/instrument-feature-flags/references/next-js.md +74 -8
- package/dist/global-skills/instrument-feature-flags/references/nodejs.md +6 -4
- package/dist/global-skills/instrument-feature-flags/references/php.md +6 -4
- package/dist/global-skills/instrument-feature-flags/references/python.md +6 -4
- package/dist/global-skills/instrument-feature-flags/references/react-native.md +6 -4
- package/dist/global-skills/instrument-feature-flags/references/react.md +6 -4
- package/dist/global-skills/instrument-feature-flags/references/ruby-on-rails.md +6 -4
- package/dist/global-skills/instrument-feature-flags/references/ruby.md +6 -4
- package/dist/global-skills/instrument-feature-flags/references/rust.md +6 -4
- package/dist/global-skills/instrument-feature-flags/references/usage.md +41 -4
- package/dist/global-skills/instrument-feature-flags/references/web.md +7 -5
- package/dist/global-skills/instrument-product-analytics/SKILL.md +2 -1
- package/dist/global-skills/instrument-product-analytics/references/COMMANDMENTS.md +5 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-hybrid.md +12 -14
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-ssr.md +25 -21
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-django.md +75 -55
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-fastapi.md +3 -6
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-flask.md +26 -16
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-nuxt-3-6.md +8 -5
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-nuxt-4.md +4 -4
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-react-react-router-7-framework.md +3 -3
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-ruby-on-rails.md +8 -4
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-tanstack-start.md +20 -8
- package/dist/global-skills/instrument-product-analytics/references/android.md +46 -4
- package/dist/global-skills/instrument-product-analytics/references/angular.md +41 -5
- package/dist/global-skills/instrument-product-analytics/references/astro.md +41 -5
- package/dist/global-skills/instrument-product-analytics/references/configuration.md +7 -4
- package/dist/global-skills/instrument-product-analytics/references/django.md +38 -5
- package/dist/global-skills/instrument-product-analytics/references/dotnet.md +10 -4
- package/dist/global-skills/instrument-product-analytics/references/elixir.md +6 -4
- package/dist/global-skills/instrument-product-analytics/references/flask.md +17 -5
- package/dist/global-skills/instrument-product-analytics/references/flutter.md +49 -4
- package/dist/global-skills/instrument-product-analytics/references/go.md +6 -4
- package/dist/global-skills/instrument-product-analytics/references/identify-users.md +38 -7
- package/dist/global-skills/instrument-product-analytics/references/ios.md +14 -4
- package/dist/global-skills/instrument-product-analytics/references/laravel.md +6 -4
- package/dist/global-skills/instrument-product-analytics/references/next-js.md +74 -8
- package/dist/global-skills/instrument-product-analytics/references/nuxt-js-3-6.md +39 -7
- package/dist/global-skills/instrument-product-analytics/references/nuxt-js.md +40 -4
- package/dist/global-skills/instrument-product-analytics/references/php.md +6 -4
- package/dist/global-skills/instrument-product-analytics/references/posthog-python.md +21 -17
- package/dist/global-skills/instrument-product-analytics/references/python.md +15 -5
- package/dist/global-skills/instrument-product-analytics/references/react-native.md +41 -7
- package/dist/global-skills/instrument-product-analytics/references/react-router-v6.md +18 -4
- package/dist/global-skills/instrument-product-analytics/references/react-router-v7-data-mode.md +18 -4
- package/dist/global-skills/instrument-product-analytics/references/react-router-v7-declarative-mode.md +18 -4
- package/dist/global-skills/instrument-product-analytics/references/react-router-v7-framework-mode.md +18 -4
- package/dist/global-skills/instrument-product-analytics/references/ruby-on-rails.md +6 -4
- package/dist/global-skills/instrument-product-analytics/references/ruby.md +6 -4
- package/dist/global-skills/instrument-product-analytics/references/svelte.md +42 -6
- package/dist/global-skills/instrument-product-analytics/references/tanstack-start.md +31 -7
- package/dist/global-skills/instrument-product-analytics/references/usage.md +41 -4
- package/dist/global-skills/instrument-product-analytics/references/vue-js.md +42 -6
- package/dist/global-skills/manifest.json +6 -1
- package/dist/global-skills/neon/SKILL.md +235 -121
- package/dist/global-skills/neon-ai-gateway/SKILL.md +95 -16
- package/dist/global-skills/neon-functions/SKILL.md +242 -152
- package/dist/global-skills/neon-functions/references/ai-sdk.md +9 -3
- package/dist/global-skills/neon-functions/references/mastra-studio.md +1 -1
- package/dist/global-skills/neon-functions/references/mcp.md +13 -4
- package/dist/global-skills/neon-functions/references/sentry.md +165 -52
- package/dist/global-skills/neon-functions/references/sse.md +23 -6
- package/dist/global-skills/neon-object-storage/SKILL.md +40 -16
- package/dist/global-skills/neon-postgres/SKILL.md +63 -262
- package/dist/global-skills/neon-postgres-branches/SKILL.md +61 -50
- package/dist/global-skills/neon-postgres-egress-optimizer/SKILL.md +22 -3
- package/dist/global-skills/resend/SKILL.md +6 -6
- package/dist/global-skills/resend/references/automations.md +2 -2
- package/dist/global-skills/resend/references/broadcasts.md +11 -3
- package/dist/global-skills/resend/references/domains.md +25 -3
- package/dist/global-skills/resend/references/installation.md +7 -7
- package/dist/global-skills/setup-payments/SKILL.md +4 -5
- package/dist/global-skills/stripe-best-practices/SKILL.md +32 -7
- package/dist/global-skills/stripe-best-practices/references/billing.md +11 -1
- package/dist/global-skills/stripe-best-practices/references/payments.md +23 -2
- package/dist/global-skills/stripe-best-practices/references/security.md +21 -11
- package/dist/global-skills/stripe-best-practices/references/tax.md +116 -11
- package/dist/global-skills/supabase/CHANGELOG.md +25 -0
- package/dist/global-skills/supabase/SKILL.md +5 -1
- package/dist/global-skills/supabase-postgres-best-practices/CHANGELOG.md +30 -0
- package/dist/global-skills/supabase-postgres-best-practices/SKILL.md +1 -1
- package/dist/global-skills/use-kit-mcp/SKILL.md +5 -5
- package/dist/global-skills/use-railway/SKILL.md +4 -4
- package/dist/global-skills/use-railway/references/iac.md +206 -57
- package/dist/global-skills/use-railway/scripts/railway-api.sh +7 -2
- package/dist/global-skills/xcode-project-setup/SKILL.md +2 -0
- package/package.json +12 -9
- package/LICENSE.md +0 -47
- package/dist/global-skills/eas-workflows/scripts/validate.js +0 -84
- package/dist/global-skills/expo-skill-feedback/scripts/skill-feedback.cjs +0 -118
- package/dist/global-skills/neon-functions/references/hono-websockets.md +0 -145
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
# Orchestration Reference
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Step Functions and EventBridge decision matrices, error semantics, and limits. Assumes you can write Amazon States Language (Saga/Parallel/Map/Choice JSON) and EventBridge patterns — this file focuses on the choices and gotchas.
|
|
4
4
|
|
|
5
5
|
## Contents
|
|
6
6
|
|
|
7
|
-
- [
|
|
8
|
-
- [State machine patterns](#state-machine-patterns)
|
|
7
|
+
- [Standard vs Express](#standard-vs-express)
|
|
8
|
+
- [State machine limits and patterns](#state-machine-limits-and-patterns)
|
|
9
9
|
- [Error handling](#error-handling)
|
|
10
|
-
- [EventBridge rules and patterns](#eventbridge-rules-and-patterns)
|
|
11
|
-
- [
|
|
10
|
+
- [EventBridge rules, pipes, and patterns](#eventbridge-rules-pipes-and-patterns)
|
|
11
|
+
- [Step Functions vs Lambda durable functions](#step-functions-vs-lambda-durable-functions)
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
15
|
-
##
|
|
16
|
-
|
|
17
|
-
### Decision Matrix
|
|
15
|
+
## Standard vs Express
|
|
18
16
|
|
|
19
17
|
| Dimension | Standard | Express |
|
|
20
18
|
|---|---|---|
|
|
@@ -25,425 +23,108 @@ AWS Step Functions and Amazon EventBridge patterns and configuration.
|
|
|
25
23
|
| `.waitForTaskToken` | Supported | **Not supported** |
|
|
26
24
|
| Distributed Map | Supported | **Not supported** |
|
|
27
25
|
| Activities | Supported | **Not supported** |
|
|
28
|
-
| Idempotency | Automatic (execution name unique
|
|
29
|
-
|
|
30
|
-
Express sub-types:
|
|
26
|
+
| Idempotency | Automatic (execution name unique 90 days) | Not managed |
|
|
31
27
|
|
|
32
|
-
- **
|
|
33
|
-
- **Synchronous**: Blocks until completion. Invokable from API Gateway, Lambda, or `StartSyncExecution`. 5-min max.
|
|
28
|
+
Express sub-types: **Async** (fire-and-forget, results via CloudWatch Logs); **Sync** (blocks until completion, invokable from API Gateway/Lambda/`StartSyncExecution`, 5-min max).
|
|
34
29
|
|
|
35
|
-
| Use
|
|
30
|
+
| Use case | Type |
|
|
36
31
|
|---|---|
|
|
37
|
-
| Long-running
|
|
38
|
-
| Non-idempotent operations (payments, exactly-once) | Standard |
|
|
32
|
+
| Long-running, `.sync`/callback, non-idempotent (payments) | Standard |
|
|
39
33
|
| Distributed Map (large-scale parallel) | Standard |
|
|
40
34
|
| High-volume event processing (IoT, streaming) | Express |
|
|
41
35
|
| API-backed synchronous microservice orchestration | Synchronous Express |
|
|
42
36
|
|
|
43
37
|
---
|
|
44
38
|
|
|
45
|
-
## State
|
|
46
|
-
|
|
47
|
-
### Saga Pattern (Compensating Transactions)
|
|
48
|
-
|
|
49
|
-
Each step has a corresponding undo step invoked on failure via `Catch`. Compensations chain in reverse.
|
|
50
|
-
|
|
51
|
-
```json
|
|
52
|
-
{
|
|
53
|
-
"Comment": "Saga pattern — book travel",
|
|
54
|
-
"StartAt": "BookHotel",
|
|
55
|
-
"States": {
|
|
56
|
-
"BookHotel": {
|
|
57
|
-
"Type": "Task",
|
|
58
|
-
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:book-hotel",
|
|
59
|
-
"TimeoutSeconds": 30,
|
|
60
|
-
"Catch": [{
|
|
61
|
-
"ErrorEquals": ["States.ALL"],
|
|
62
|
-
"ResultPath": "$.BookHotelError",
|
|
63
|
-
"Next": "NotifyFailure"
|
|
64
|
-
}],
|
|
65
|
-
"Next": "BookFlight"
|
|
66
|
-
},
|
|
67
|
-
"BookFlight": {
|
|
68
|
-
"Type": "Task",
|
|
69
|
-
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:book-flight",
|
|
70
|
-
"TimeoutSeconds": 30,
|
|
71
|
-
"Catch": [{
|
|
72
|
-
"ErrorEquals": ["States.ALL"],
|
|
73
|
-
"ResultPath": "$.BookFlightError",
|
|
74
|
-
"Next": "CancelHotel"
|
|
75
|
-
}],
|
|
76
|
-
"Next": "BookCar"
|
|
77
|
-
},
|
|
78
|
-
"BookCar": {
|
|
79
|
-
"Type": "Task",
|
|
80
|
-
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:book-car",
|
|
81
|
-
"TimeoutSeconds": 30,
|
|
82
|
-
"Catch": [{
|
|
83
|
-
"ErrorEquals": ["States.ALL"],
|
|
84
|
-
"ResultPath": "$.BookCarError",
|
|
85
|
-
"Next": "CancelFlight"
|
|
86
|
-
}],
|
|
87
|
-
"Next": "ConfirmBooking"
|
|
88
|
-
},
|
|
89
|
-
"CancelFlight": {
|
|
90
|
-
"Type": "Task",
|
|
91
|
-
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:cancel-flight",
|
|
92
|
-
"Next": "CancelHotel"
|
|
93
|
-
},
|
|
94
|
-
"CancelHotel": {
|
|
95
|
-
"Type": "Task",
|
|
96
|
-
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:cancel-hotel",
|
|
97
|
-
"Next": "NotifyFailure"
|
|
98
|
-
},
|
|
99
|
-
"NotifyFailure": {
|
|
100
|
-
"Type": "Fail",
|
|
101
|
-
"Error": "SagaFailed",
|
|
102
|
-
"Cause": "One or more bookings failed; compensations executed"
|
|
103
|
-
},
|
|
104
|
-
"ConfirmBooking": { "Type": "Succeed" }
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
### Parallel State
|
|
110
|
-
|
|
111
|
-
Executes branches concurrently. **Output is an array** with one element per branch. All branches must succeed or the entire Parallel state fails. Supports `Retry` and `Catch`.
|
|
112
|
-
|
|
113
|
-
```json
|
|
114
|
-
{
|
|
115
|
-
"Type": "Parallel",
|
|
116
|
-
"Branches": [
|
|
117
|
-
{
|
|
118
|
-
"StartAt": "ProcessImages",
|
|
119
|
-
"States": {
|
|
120
|
-
"ProcessImages": {
|
|
121
|
-
"Type": "Task",
|
|
122
|
-
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:process-images",
|
|
123
|
-
"End": true
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
"StartAt": "ProcessMetadata",
|
|
129
|
-
"States": {
|
|
130
|
-
"ProcessMetadata": {
|
|
131
|
-
"Type": "Task",
|
|
132
|
-
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:process-metadata",
|
|
133
|
-
"End": true
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
],
|
|
138
|
-
"Next": "AggregateResults"
|
|
139
|
-
}
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
### Map State
|
|
143
|
-
|
|
144
|
-
**Inline Map**: Iterates over an array in the same execution. Max **40 concurrent** iterations.
|
|
145
|
-
|
|
146
|
-
```json
|
|
147
|
-
{
|
|
148
|
-
"Type": "Map",
|
|
149
|
-
"ItemsPath": "$.orders",
|
|
150
|
-
"MaxConcurrency": 10,
|
|
151
|
-
"ItemProcessor": {
|
|
152
|
-
"ProcessorConfig": { "Mode": "INLINE" },
|
|
153
|
-
"StartAt": "ProcessOrder",
|
|
154
|
-
"States": {
|
|
155
|
-
"ProcessOrder": {
|
|
156
|
-
"Type": "Task",
|
|
157
|
-
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:process-order",
|
|
158
|
-
"End": true
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
},
|
|
162
|
-
"Next": "Done"
|
|
163
|
-
}
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
**Distributed Map**: Up to **10,000 parallel child executions**. Reads from S3 (JSON, CSV, S3 inventory). Supports `ItemBatcher`, `ItemReader`, `ResultWriter`. **Standard workflows only.**
|
|
39
|
+
## State machine limits and patterns
|
|
167
40
|
|
|
168
|
-
|
|
41
|
+
- **Payload limit: 256 KiB between states** — store large data in S3, pass S3 keys.
|
|
42
|
+
- **Inline Map:** max **40 concurrent** iterations, same execution.
|
|
43
|
+
- **Distributed Map:** up to **10,000 parallel child executions**, reads from S3 (JSON/CSV/inventory), supports `ItemBatcher`/`ItemReader`/`ResultWriter`. **Standard workflows only.**
|
|
44
|
+
- **25,000 execution-history entries** (Standard) — split long workflows into child executions.
|
|
45
|
+
- **Parallel state output is an array** (one element per branch); all branches must succeed or the state fails.
|
|
46
|
+
- **Choice state:** always include a `Default` branch.
|
|
169
47
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
Comparison operators: `StringEquals`, `StringMatches`, `NumericGreaterThan`, `NumericLessThanEquals`, `BooleanEquals`, `IsPresent`, `IsNull`, `TimestampEquals`, and `Path` variants.
|
|
173
|
-
|
|
174
|
-
```json
|
|
175
|
-
{
|
|
176
|
-
"Type": "Choice",
|
|
177
|
-
"Choices": [
|
|
178
|
-
{ "Variable": "$.orderTotal", "NumericGreaterThan": 1000, "Next": "HighValueOrder" },
|
|
179
|
-
{ "Variable": "$.isPrime", "BooleanEquals": true, "Next": "PrimeProcessing" }
|
|
180
|
-
],
|
|
181
|
-
"Default": "StandardProcessing"
|
|
182
|
-
}
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
### Agentic AI Loop Pattern (Tool Use)
|
|
186
|
-
|
|
187
|
-
Model outputs a structured response indicating a tool call or final answer. Choice state routes accordingly. Tool results feed back in a loop.
|
|
188
|
-
|
|
189
|
-
```json
|
|
190
|
-
{
|
|
191
|
-
"Comment": "Agentic AI loop with tool use",
|
|
192
|
-
"QueryLanguage": "JSONata",
|
|
193
|
-
"StartAt": "InvokeModel",
|
|
194
|
-
"States": {
|
|
195
|
-
"InvokeModel": {
|
|
196
|
-
"Type": "Task",
|
|
197
|
-
"Resource": "arn:aws:states:::bedrock:invokeModel",
|
|
198
|
-
"Arguments": {
|
|
199
|
-
"ModelId": "global.anthropic.claude-sonnet-4-6",
|
|
200
|
-
"Body": {
|
|
201
|
-
"anthropic_version": "bedrock-2023-05-31",
|
|
202
|
-
"max_tokens": 4096,
|
|
203
|
-
"messages": "{% $states.input.messages %}"
|
|
204
|
-
},
|
|
205
|
-
"ContentType": "application/json",
|
|
206
|
-
"Accept": "application/json"
|
|
207
|
-
},
|
|
208
|
-
"Next": "CheckAction"
|
|
209
|
-
},
|
|
210
|
-
"CheckAction": {
|
|
211
|
-
"Type": "Choice",
|
|
212
|
-
"Choices": [
|
|
213
|
-
{ "Condition": "{% $states.input.Body.stop_reason = 'tool_use' %}", "Next": "ExecuteTool" }
|
|
214
|
-
],
|
|
215
|
-
"Default": "ReturnResult"
|
|
216
|
-
},
|
|
217
|
-
"ExecuteTool": {
|
|
218
|
-
"Type": "Task",
|
|
219
|
-
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:execute-tool",
|
|
220
|
-
"TimeoutSeconds": 60,
|
|
221
|
-
"Next": "InvokeModel"
|
|
222
|
-
},
|
|
223
|
-
"ReturnResult": { "Type": "Succeed" }
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
```
|
|
48
|
+
Common patterns (write the ASL directly): **Saga** (each step has a compensating undo via `Catch`, chained in reverse); **Parallel** (concurrent branches); **Map** (iterate an array); **Agentic AI loop** (`bedrock:invokeModel` → Choice on `stop_reason = 'tool_use'` → execute tool → loop). Prefer **direct SDK integrations** (200+ services) over Lambda intermediaries to cut latency, and prefer **JSONata** for inline transforms over a Lambda task.
|
|
227
49
|
|
|
228
50
|
---
|
|
229
51
|
|
|
230
|
-
## Error
|
|
52
|
+
## Error handling
|
|
231
53
|
|
|
232
|
-
### Built-in
|
|
54
|
+
### Built-in error names
|
|
233
55
|
|
|
234
|
-
| Error Name |
|
|
235
|
-
|
|
236
|
-
| `States.ALL` | Wildcard —
|
|
237
|
-
| `States.TaskFailed` | Wildcard for task errors (except `States.Timeout`) |
|
|
238
|
-
| `States.Timeout` |
|
|
239
|
-
| `States.
|
|
240
|
-
| `States.
|
|
241
|
-
| `States.
|
|
242
|
-
| `States.
|
|
243
|
-
| `States.ItemReaderFailed` | Map couldn't read from ItemReader source | Yes |
|
|
244
|
-
| `States.ResultWriterFailed` | Map couldn't write to ResultWriter destination | Yes |
|
|
245
|
-
|
|
246
|
-
`States.ALL` does **not** match `States.DataLimitExceeded` or `States.Runtime`.
|
|
56
|
+
| Error Name | Retriable? | Notes |
|
|
57
|
+
|---|:---:|---|
|
|
58
|
+
| `States.ALL` | Yes | Wildcard — but does **NOT** match the two terminal errors below |
|
|
59
|
+
| `States.TaskFailed` | Yes | Wildcard for task errors (except `States.Timeout`) |
|
|
60
|
+
| `States.Timeout` / `States.HeartbeatTimeout` | Yes | Exceeded `TimeoutSeconds` / missed `HeartbeatSeconds` |
|
|
61
|
+
| `States.Permissions` | Yes | Insufficient IAM privileges |
|
|
62
|
+
| `States.DataLimitExceeded` | **No** | Payload > 256 KiB — **terminal** |
|
|
63
|
+
| `States.Runtime` | **No** | Invalid JSONPath, null payload — **terminal** |
|
|
64
|
+
| `States.ItemReaderFailed` / `States.ResultWriterFailed` | Yes | Map source/destination errors |
|
|
247
65
|
|
|
248
|
-
|
|
66
|
+
> **`States.ALL` does NOT catch `States.DataLimitExceeded` or `States.Runtime`.** These are terminal and must be designed around, not retried.
|
|
249
67
|
|
|
250
|
-
|
|
68
|
+
### Retry config
|
|
251
69
|
|
|
252
70
|
```json
|
|
253
71
|
"Retry": [
|
|
254
|
-
{
|
|
255
|
-
"
|
|
256
|
-
|
|
257
|
-
"MaxAttempts": 2,
|
|
258
|
-
|
|
259
|
-
"MaxDelaySeconds": 30,
|
|
260
|
-
"JitterStrategy": "FULL"
|
|
261
|
-
},
|
|
262
|
-
{
|
|
263
|
-
"ErrorEquals": ["Lambda.ServiceException", "Lambda.SdkClientException"],
|
|
264
|
-
"IntervalSeconds": 1,
|
|
265
|
-
"MaxAttempts": 3,
|
|
266
|
-
"BackoffRate": 2.0
|
|
267
|
-
},
|
|
268
|
-
{
|
|
269
|
-
"ErrorEquals": ["States.ALL"],
|
|
270
|
-
"IntervalSeconds": 1,
|
|
271
|
-
"MaxAttempts": 3,
|
|
272
|
-
"BackoffRate": 2.0
|
|
273
|
-
}
|
|
274
|
-
]
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
| Field | Default | Description |
|
|
278
|
-
|---|---|---|
|
|
279
|
-
| `ErrorEquals` | (required) | Array of error names to match |
|
|
280
|
-
| `IntervalSeconds` | 1 | Initial wait before first retry |
|
|
281
|
-
| `MaxAttempts` | 3 | Max retries; 0 = never retry |
|
|
282
|
-
| `BackoffRate` | 2.0 | Multiplier for exponential backoff |
|
|
283
|
-
| `MaxDelaySeconds` | — | Cap on computed backoff interval |
|
|
284
|
-
| `JitterStrategy` | `"NONE"` | `"FULL"` randomizes wait between 0 and computed interval |
|
|
285
|
-
|
|
286
|
-
Rules:
|
|
287
|
-
|
|
288
|
-
- `States.ALL` must be **last** in the Retry array
|
|
289
|
-
- Retries count as state transitions (billed in Standard workflows)
|
|
290
|
-
- `States.Runtime` and `States.DataLimitExceeded` **cannot be retried**
|
|
291
|
-
- Use `JitterStrategy: "FULL"` to prevent thundering herd
|
|
292
|
-
|
|
293
|
-
### Catch (Fallback States)
|
|
294
|
-
|
|
295
|
-
```json
|
|
296
|
-
"Catch": [
|
|
297
|
-
{
|
|
298
|
-
"ErrorEquals": ["CustomBusinessError"],
|
|
299
|
-
"ResultPath": "$.error-info",
|
|
300
|
-
"Next": "HandleBusinessError"
|
|
301
|
-
},
|
|
302
|
-
{
|
|
303
|
-
"ErrorEquals": ["States.ALL"],
|
|
304
|
-
"ResultPath": "$.error-info",
|
|
305
|
-
"Next": "GenericErrorHandler"
|
|
306
|
-
}
|
|
72
|
+
{ "ErrorEquals": ["States.Timeout"], "IntervalSeconds": 3, "MaxAttempts": 2,
|
|
73
|
+
"BackoffRate": 2.0, "MaxDelaySeconds": 30, "JitterStrategy": "FULL" },
|
|
74
|
+
{ "ErrorEquals": ["Lambda.ServiceException", "Lambda.SdkClientException"],
|
|
75
|
+
"IntervalSeconds": 1, "MaxAttempts": 3, "BackoffRate": 2.0 },
|
|
76
|
+
{ "ErrorEquals": ["States.ALL"], "IntervalSeconds": 1, "MaxAttempts": 3, "BackoffRate": 2.0 }
|
|
307
77
|
]
|
|
308
78
|
```
|
|
309
79
|
|
|
310
|
-
|
|
311
|
-
- Without `ResultPath`, error output replaces entire input
|
|
312
|
-
- Retries are attempted first; catchers apply only after retries are exhausted
|
|
313
|
-
|
|
314
|
-
### Error handling best practices
|
|
315
|
-
|
|
316
|
-
1. **Always set `TimeoutSeconds`** on every Task state
|
|
317
|
-
2. **Always retry Lambda service exceptions**: `Lambda.ServiceException`, `Lambda.SdkClientException`
|
|
318
|
-
3. **Use `HeartbeatSeconds`** for long-running tasks
|
|
319
|
-
4. **Combine Retry + Catch**: Retry transient, Catch permanent
|
|
320
|
-
5. **Use `JitterStrategy: "FULL"`** to prevent thundering herd
|
|
321
|
-
6. **Listen for execution failures via EventBridge** for top-level failures
|
|
322
|
-
|
|
323
|
-
---
|
|
324
|
-
|
|
325
|
-
## EventBridge Rules and Patterns
|
|
326
|
-
|
|
327
|
-
### Event Pattern Structure
|
|
328
|
-
|
|
329
|
-
All specified fields must match (AND). Values within an array are OR'd.
|
|
330
|
-
|
|
331
|
-
```json
|
|
332
|
-
{
|
|
333
|
-
"source": ["aws.ec2"],
|
|
334
|
-
"detail-type": ["EC2 Instance State-change Notification"],
|
|
335
|
-
"detail": { "state": ["terminated", "stopped"] }
|
|
336
|
-
}
|
|
337
|
-
```
|
|
338
|
-
|
|
339
|
-
### Advanced Pattern Operators
|
|
340
|
-
|
|
341
|
-
| Operator | Syntax | Description |
|
|
342
|
-
|---|---|---|
|
|
343
|
-
| Exact match | `["value"]` | Field equals value |
|
|
344
|
-
| Prefix | `[{"prefix": "prod-"}]` | Starts with string |
|
|
345
|
-
| Suffix | `[{"suffix": ".json"}]` | Ends with string |
|
|
346
|
-
| Anything-but | `[{"anything-but": ["val"]}]` | Not in list |
|
|
347
|
-
| Numeric range | `[{"numeric": [">", 0, "<=", 100]}]` | Numeric comparison |
|
|
348
|
-
| Exists | `[{"exists": true}]` | Field must be present |
|
|
349
|
-
| Wildcard | `[{"wildcard": "prod-*-east"}]` | Glob-style matching |
|
|
350
|
-
|
|
351
|
-
### EventBridge best practices
|
|
352
|
-
|
|
353
|
-
1. **Dedicated event bus per application domain** — default bus for AWS service events only
|
|
354
|
-
2. **Be precise with patterns** — broad patterns increase risk of infinite loops
|
|
355
|
-
3. **One target per rule** — simplifies debugging and IAM permissions
|
|
356
|
-
4. **Use DLQs on targets** — capture failed event deliveries
|
|
357
|
-
5. **Use the EventBridge Sandbox** to test patterns before deploying
|
|
358
|
-
|
|
359
|
-
### Step Functions Status Change Events
|
|
360
|
-
|
|
361
|
-
Step Functions emits to the default bus automatically:
|
|
362
|
-
|
|
363
|
-
```json
|
|
364
|
-
{
|
|
365
|
-
"source": ["aws.states"],
|
|
366
|
-
"detail-type": ["Step Functions Execution Status Change"],
|
|
367
|
-
"detail": { "status": ["FAILED", "TIMED_OUT", "ABORTED"] }
|
|
368
|
-
}
|
|
369
|
-
```
|
|
370
|
-
|
|
371
|
-
### Integration Patterns
|
|
372
|
-
|
|
373
|
-
**SFN → EventBridge** (publish events from a workflow):
|
|
374
|
-
|
|
375
|
-
```json
|
|
376
|
-
{
|
|
377
|
-
"Type": "Task",
|
|
378
|
-
"QueryLanguage": "JSONata",
|
|
379
|
-
"Resource": "arn:aws:states:::events:putEvents",
|
|
380
|
-
"Arguments": {
|
|
381
|
-
"Entries": [{
|
|
382
|
-
"Detail": { "orderId": "{% $states.input.orderId %}", "status": "PROCESSED" },
|
|
383
|
-
"DetailType": "OrderProcessed",
|
|
384
|
-
"EventBusName": "my-app-bus",
|
|
385
|
-
"Source": "my-app.orders"
|
|
386
|
-
}]
|
|
387
|
-
},
|
|
388
|
-
"Next": "Done"
|
|
389
|
-
}
|
|
390
|
-
```
|
|
80
|
+
Defaults: `IntervalSeconds` 1, `MaxAttempts` 3 (0 = never), `BackoffRate` 2.0, `JitterStrategy` `"NONE"`.
|
|
391
81
|
|
|
392
|
-
|
|
82
|
+
Rules and best practices:
|
|
393
83
|
|
|
394
|
-
|
|
84
|
+
- `States.ALL` must be **last** in the Retry array; retries are attempted **before** catchers.
|
|
85
|
+
- Retries count as state transitions (billed in Standard).
|
|
86
|
+
- Always set `TimeoutSeconds` on every Task; always retry `Lambda.ServiceException` / `Lambda.SdkClientException`.
|
|
87
|
+
- Use `JitterStrategy: "FULL"` to prevent thundering herd; `HeartbeatSeconds` for long tasks.
|
|
88
|
+
- `Catch` with `ResultPath: "$.error-info"` preserves the original input alongside the error (without it, error output replaces the input).
|
|
89
|
+
- Listen for top-level execution failures via EventBridge (`source: aws.states`, `detail-type: Step Functions Execution Status Change`, `status: [FAILED, TIMED_OUT, ABORTED]`).
|
|
395
90
|
|
|
396
91
|
---
|
|
397
92
|
|
|
398
|
-
## EventBridge
|
|
93
|
+
## EventBridge rules, pipes, and patterns
|
|
399
94
|
|
|
400
|
-
###
|
|
95
|
+
### Event patterns
|
|
401
96
|
|
|
402
|
-
|
|
403
|
-
Source → [Filter] → [Enrichment] → [Transform] → Target
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
Eliminates intermediary Lambda functions for point-to-point integrations.
|
|
97
|
+
All specified fields must match (AND); values within an array are OR'd. Operators: exact `["value"]`, `{"prefix"}`, `{"suffix"}`, `{"anything-but"}`, `{"numeric": [">", 0, "<=", 100]}`, `{"exists": true}`, `{"wildcard": "prod-*-east"}`.
|
|
407
98
|
|
|
408
|
-
###
|
|
409
|
-
|
|
410
|
-
| Source | Notes |
|
|
411
|
-
|---|---|
|
|
412
|
-
| Amazon SQS | Standard and FIFO queues |
|
|
413
|
-
| Amazon Kinesis Data Streams | Shard-level polling |
|
|
414
|
-
| Amazon DynamoDB Streams | Change data capture |
|
|
415
|
-
| Amazon MSK / Self-managed Kafka | Topic-level consumption |
|
|
416
|
-
| Amazon MQ | ActiveMQ and RabbitMQ |
|
|
99
|
+
### Best practices
|
|
417
100
|
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
- **Filtering**: Event patterns filter at the source — pay only for matched events
|
|
425
|
-
- **Ordering**: Maintains event ordering within batches
|
|
426
|
-
- **Built-in retry + DLQ**: Source-level retry with dead-letter queue support
|
|
101
|
+
1. **Dedicated event bus per application domain** — default bus for AWS service events only.
|
|
102
|
+
2. **Be precise with patterns** — broad patterns risk infinite loops.
|
|
103
|
+
3. **One target per rule** — simplifies debugging and IAM.
|
|
104
|
+
4. **DLQs on all targets.**
|
|
105
|
+
5. Use the EventBridge Sandbox to test patterns before deploying.
|
|
427
106
|
|
|
428
107
|
### Pipes vs Rules
|
|
429
108
|
|
|
430
109
|
| Dimension | Pipes | Rules |
|
|
431
110
|
|---|---|---|
|
|
432
111
|
| Topology | Point-to-point (1→1) | Fan-out (1→N) |
|
|
433
|
-
|
|
|
434
|
-
|
|
|
435
|
-
|
|
|
112
|
+
| Flow | Source → Filter → Enrichment → Transform → Target | Event routing on a bus |
|
|
113
|
+
| Sources | SQS, Kinesis, DynamoDB Streams, MSK, MQ | Any event on a bus |
|
|
114
|
+
| Enrichment | Built-in (Lambda, API GW, API Destinations, Sync Express SFN) | Not built-in |
|
|
115
|
+
| Use case | **Replace Lambda glue** for source→target | Event routing and distribution |
|
|
116
|
+
|
|
117
|
+
Pipes filtering happens **at the source** — you pay only for matched events — with built-in retry + DLQ.
|
|
436
118
|
|
|
437
119
|
---
|
|
438
120
|
|
|
439
|
-
## Lambda durable functions
|
|
121
|
+
## Step Functions vs Lambda durable functions
|
|
440
122
|
|
|
441
|
-
Lambda durable functions let you write reliable multi-step workflows as plain code (
|
|
123
|
+
Lambda durable functions let you write reliable multi-step workflows as **plain code** (TS/Python/Java) with automatic checkpointing — the SDK persists each step and replays from the checkpoint on interruption, enabling executions up to 1 year with zero compute during waits. **For full guidance use the aws-lambda-durable-functions skill** (see SKILL.md routing).
|
|
442
124
|
|
|
443
125
|
| Question | Lambda durable functions | Step Functions |
|
|
444
126
|
|---|---|---|
|
|
445
|
-
|
|
|
446
|
-
|
|
|
447
|
-
|
|
|
448
|
-
|
|
|
449
|
-
| Best for? | Distributed transactions, stateful logic, AI agent loops | Business process automation, multi-service orchestration |
|
|
127
|
+
| Programming model | Standard code (TS/Python/Java) | Amazon States Language / visual designer |
|
|
128
|
+
| AWS service integrations | Primarily Lambda | 200+ native integrations |
|
|
129
|
+
| Who reads the workflow | Developers | Non-technical stakeholders too |
|
|
130
|
+
| Best for | Distributed transactions, stateful logic, AI agent loops | Business process automation, multi-service orchestration |
|