You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(local-lambda): allow '/' in durable execution and callback URI labels
After aws-durable-execution-sdk-python-testing#216, DurableExecutionArn
values are minted as <uuid>/<invocation-id> and boto percent-encodes
the '/' as %2F in the URI label. Werkzeug decodes %2F back to '/'
during routing, so the path no longer matches a single <string>
segment and every Get/History/Stop request 404'd before reaching the
handler with PathNotFoundLocally. The same shape applies to
base64-encoded CallbackId values which contain '/'.
Switch the six ARN/CallbackId URI labels from the default <string>
converter to <path:...>. Werkzeug picks the right rule via
trailing-literal specificity (.../<path:arn>/history beats
.../<path:arn>). The existing unquote() calls in handlers stay --
idempotent on already-decoded values. Backwards-compatible with
old UUID-only ARNs.
Adds TestDurableRoutingPercentEncodedSlash regression tests that
drive the real Flask app via test_client with %2F-encoded paths
across all six routes plus a UUID-only legacy form, asserting
routing reaches the correct handler with the decoded value.
Verified locally:
- make pr (init, schema, black-check, lint, test-all): green
(9248 unit tests pass, 25 skipped, 28 subtests pass, coverage
94.17%)
- tests/integration/local/start_lambda/test_start_lambda_durable.py
all 18 tests pass (was 17 failures pre-fix), exercising the new
ARN format end-to-end through real Docker emulator
Fixes#9039
0 commit comments