This repository was archived by the owner on May 14, 2021. It is now read-only.
Raise error for S3 region redirects, check that HTTP response is OK.#36
Open
ab wants to merge 5 commits into
Open
Raise error for S3 region redirects, check that HTTP response is OK.#36ab wants to merge 5 commits into
ab wants to merge 5 commits into
Conversation
This makes it possible for users of Citadel to get the full response body from S3 requests and to take custom action depending upon various different errors without needing to parse the string error message. For example, this enables callers to distinguish between HTTP 404 and HTTP 403 errors by using `err.wrapped_exception.response.code`.
It would probably be better to use the aws-sdk or aws-sigv4 gems directly, but this will work for now. This allows Citadel to work with KMS encrypted data and with AWS regions that came online in 2014 or later. Fixes: poise#28
- Actually check that the HTTP response code is an 200 OK so that we don't return nil if things have actually failed. - Handle bucket HTTP redirection. When you request an S3 bucket from the wrong region, it returns a 301 redirect with the correct region in a header, but no Location header. Because the Chef HTTP client doesn't recognize redirects unless the Location header is set, Citadel would previously return nil. Instead, raise an exception indicating the correct region that should have been passed. - Also raise an error if we get any unexpected HTTP status. Fixes: poise#25
Codecov Report
@@ Coverage Diff @@
## master #36 +/- ##
=========================================
- Coverage 87.95% 87.9% -0.05%
=========================================
Files 6 6
Lines 83 124 +41
=========================================
+ Hits 73 109 +36
- Misses 10 15 +5
Continue to review full report at Codecov.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request depends upon pull request #35. Only the last commit is unique to this PR.
don't return nil if things have actually failed.
wrong region, it returns a 301 redirect with the correct region in a
header, but no Location header. Because the Chef HTTP client doesn't
recognize redirects unless the Location header is set, Citadel would
previously return nil. Instead, raise an exception indicating the
correct region that should have been passed.
Fixes: #25