Repository navigation
fix(parameters): wrap GetParameters client errors in get_parameters_by_name - #8617
Conversation
…y_name _get_parameters_by_name only handled InvalidKeyId and InternalServerError, so throttling or any other ClientError escaped raw in both modes. And in fail-fast mode, those two handled errors returned failed names that the caller discarded, so parameters silently went missing. Any failure of the GetParameters request now raises GetParameterError when raise_on_error=True, and reports the request's names under _errors when raise_on_error=False. Closes aws-powertools#8597 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Resolve the conflict with aws-powertools#8616 in _get_parameters_by_name: keep the broader `except Exception` from this branch and aws-powertools#8616's "Failed to fetch parameters: [...]" message, with the botocore error appended so both sets of tests hold. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
leandrodamascena
left a comment
There was a problem hiding this comment.
Thanks @Tanmay-Ts, nice follow-up to #8616. That one only covered the two exceptions we knew about, and you're right that throttling or anything else still escaped raw from the batch path while get() wrapped everything. I tried it against real Parameter Store with an access denied, a dead endpoint and bad credentials, and all three now come back as GetParameterError or under _errors, as the docs say they should. Having the botocore message in the error text is a good call too.
I'm approving now. This goes out in 3.39.0, so it will sit here for a while before I merge it. No rebase needed in the meantime, and you'll be credited in the release notes.
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #8617 +/- ##
===========================================
- Coverage 96.95% 96.94% -0.02%
===========================================
Files 321 321
Lines 16251 16251
Branches 1453 1453
===========================================
- Hits 15756 15754 -2
- Misses 353 354 +1
- Partials 142 143 +1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
fe256cf
into
aws-powertools:develop
|
Awesome work, congrats on your first merged pull request and thank you for helping improve everyone's experience! |
|
Awesome work, congrats on your first merged pull request and thank you for helping improve everyone's experience! |



Issue number: closes #8597
Summary
Changes
_get_parameters_by_namenow catches any exception from theGetParametersrequest. Withraise_on_error=Trueit raisesGetParameterError(chained withfrom exc, so the botocore error is available as__cause__). Withraise_on_error=Falseit returns the request's names, which end up under_errors.InvalidKeyIdandInternalServerErrorwere caught, so throttling or any otherClientErrorescaped raw in both modes.InvalidKeyIdandInternalServerErrorraiseGetParameterErrorin fail-fast mode. This PR keeps itsFailed to fetch parameters: [...]message and appends the botocore error, so the cause is visible without reading__cause__.InvalidParametersare unchanged; only request-level failures are affected.GetParametersrequestget_parameters_by_namemakes: all-decrypt batches, non-decrypt batches, and the non-decrypted subset of a mixed batch. The decrypted subset of a mixed batch goes throughget(), which already wraps errors.Tests added in
tests/functional/parameters/_boto3/test_utilities_parameters.py:ThrottlingException,InvalidKeyIdandInternalServerError, each withdecrypt=Falseanddecrypt=True, assertingGetParameterErrorand the exactNames/WithDecryptionsent.InvalidParametersentry and the second throttled. Asserts_errors == [invalid, throttled]and that the successful values are kept.On current
develop, the throttling cases and the graceful test fail because theClientErrorescapes. TheInvalidKeyIdandInternalServerErrorcases already raise there since #8616 and fail only because the message doesn't name the error code. With this change,pytest tests/functional/parameters→ 190 passed.User experience
Before:
After:
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.
🤖 Generated with Claude Code