You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "Paul Grey (Jira)" <ji...@apache.org> on 2021/12/16 18:24:00 UTC

[jira] [Commented] (NIFI-7371) Improve error handling of S3 processors

    [ https://issues.apache.org/jira/browse/NIFI-7371?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17460948#comment-17460948 ] 

Paul Grey commented on NIFI-7371:
---------------------------------

Finally circled back to this.  PR is up.  Did a little testing for some failure conditions, and pulled this data out:

[INCORRECT BUCKET NAME]
s3.additionalDetails = \{BucketName=<bad bucket name>, Error=<base64 string>}
s3.errorCode = NoSuchBucket
s3.errorMessage = The specified bucket does not exist
s3.exception = com.amazonaws.services.s3.model.AmazonS3Exception
s3.statusCode = 404

[BAD FILENAME] (appended garbage to end of FetchS3Object field "Object Key")
s3.additionalDetails = \{Error=<base64 string>, Key=<bad path>}
s3.errorCode = NoSuchKey
s3.errorMessage = The specified key does not exist.
s3.exception = com.amazonaws.services.s3.model.AmazonS3Exception
s3.statusCode = 404

[NETWORK CONNECTIVITY FAILURE] (disabled wifi)
s3.exception = com.amazonaws.SdkClientException

[BAD CREDENTIALS] (incorrect AWS Secret Access Key)
s3.additionalDetails = \{CanonicalRequestBytes=<hex string>}
s3.errorCode = SignatureDoesNotMatch
s3.errorMessage = The request signature we calculated does not match the signature you provided. Check your key and signing method.
s3.exception = com.amazonaws.services.s3.model.AmazonS3Exception
s3.statusCode = 403

[BAD CREDENTIALS] (incorrect AWS Access Key ID)
s3.additionalDetails = \{AWSAccessKeyId=<bad key id>, Error=<base64 string>}
s3.errorCode = InvalidAccessKeyId
s3.errorMessage = The AWS Access Key Id you provided does not exist in our records.
s3.exception = com.amazonaws.services.s3.model.AmazonS3Exception
s3.statusCode = 403

 

> Improve error handling of S3 processors
> ---------------------------------------
>
>                 Key: NIFI-7371
>                 URL: https://issues.apache.org/jira/browse/NIFI-7371
>             Project: Apache NiFi
>          Issue Type: Improvement
>          Components: Extensions
>    Affects Versions: 1.11.4
>            Reporter: endzeit
>            Assignee: Paul Grey
>            Priority: Major
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> Currently the S3 processors, such as FetchS3Object, only expose the relationsships "success" and "failure". However the are a multitute of reasons why an interaction with an S3 storage might fail.
> As of now there is no easy way of knowing why a flow file was directed to the "failure" relationsship just by the flow file itself.
> A way of finding out the reason might be to search for a corresponing log / bulletin entry.
>  This seems rather complicated.
> A use case where having this information is useful could be when deciding whether
>  * the action should be retried, e.g. on a timeout,
>  * or the failure be handled, e.g. when the object for the specified key does not exists.
> I haven't looked much into the underlying AWS library yet as I wanted to discuss whether such an improvement is desired at all first?
>  If so, should the information be exposed via
>  * additional / other relationsships, such as in the FetchSFTP processor,
>  * or rather an attribute added to the flow file, such as in the ValidateXml processor?
> This might also apply to other AWS processors but we just have come across the S3 processors as we use them quite regulary.
> Any thoughts or comments would be highly appreciated!



--
This message was sent by Atlassian Jira
(v8.20.1#820001)