-
Notifications
You must be signed in to change notification settings - Fork 4.4k
Structured Error Output #9890
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: feature/str-std-error
Are you sure you want to change the base?
Structured Error Output #9890
Conversation
This reverts commit 1afe452.
awscli/clidriver.py
Outdated
| except ClientError as e: | ||
| self._display_structured_error_for_exception(e, parsed_globals) | ||
| raise |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we need this block? Can the formatter raise a structured error that the actual API call wouldn't have?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pagination returns a lazy itertaor that formatting can consume and trigger a later page request. If that fails, catching around the formatter preserves the structured error for pagination-time failures
awscli/clidriver.py
Outdated
| config_var_name='cli_error_format', | ||
| session=self.session, | ||
| ), | ||
| ConstantProvider(value='STANDARD'), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Few things on the enum values:
- Left a comment elsewhere, but please start by documenting valid values in
global_options.rst - Add validation like we do for
outputfor invalid values. - Only
STANDARD | LEGACYwere never discussed as options, we should revisit with the team internally.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Leaving this comment until we discuss as a team.
…rs with extra fields to stderr
…hanced, text, table, legacy)
Issue #, if available: CLI-5136 & CLI-7572 & #2688
Description of changes:
Exposes modeled error members from AWS service exceptions to stdout in the configured output format (json/yaml/text/table/off), while maintaining the existing formatted error message on stderr.
Behavior:
Command:
aws s3api get-object --bucket not-a-real-bucket-0000 --key file.txt out.txtBefore:
An error occurred (NoSuchBucket) when calling the GetObject operation: The specified bucket does not existAfter (stdout):
After (stderr):
An error occurred (NoSuchBucket) when calling the GetObject operation: The specified bucket does not existConfiguration:
Users can opt out via:
cli_error_format = LEGACYAWS_CLI_ERROR_FORMAT=LEGACYAdditional Changes:
offas a valid output format option to suppress all outputDescription of tests: