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

James Wing commented on NIFI-1325:
----------------------------------

>From reviewing the patch on 2015-01-11:

Mans, you appear to have faithfully implemented the 
AbstractAWSProcessor-subclass design suggested on the dev email list.  I have 
to admit that I don't really like this design.  It feels weird to me to have a 
deprecated class which we are still actively using without any future intention 
of dropping.  It's deprecated because we don't want processor developers to 
directly inherit from it, but it's still in active use in the inheritance 
chain.  The backward compatibility problem is ugly any way I look at it, but I 
guess I would prefer a solution involving interfaces or annotations to signal 
AWSCredentialProvider readiness over the subclass.

Things I like:
* Your implementation worked in my brief testing
* Individual components can still specify credentials separate from the shared 
service

Suggestions:
* Please consider using 
[DefaultAWSCredentialsProviderChain|http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html]
 instead of AnonymousAWSCredentialProvider() as the unconfigured default 
credential.  This provider covers a number of common AWS credential 
configuration strategies, including EC2 instance profiles/roles.
* If we do have anonymous credentials, I believe we could use the same 
StaticCredentialProvider used for basic creds, I don't think we need a custom 
AnonymousAWSCredentialsProvider.
* "Assume Role Name" could be renamed "Assume Role Session Name" to clarify 
that it identifies the session, not the role. [See the RoleSessionName argument 
in AssumeRole action in the STS SDK 
docs|http://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html].
* You could add some attributes to the AWSCredentialsProviderServiceImpl to 
improve the presentation in the Add Controller Services dialog:
{code}
@CapabilityDescription("Defines credentials for Amazon Web Services 
processors.")
@Tags({ "aws", "credentials" })
public class AWSCredentialsProviderServiceImpl ...
{code}
* Naming Conventions - Someone more familiar with NiFi code should chime in, 
but don't I think the *Impl convention for a concrete implementation of an 
interface is  widespread in the NiFi codebase.  I looked at the 
nifi-couchbase-bundle for comparison, and the interface is 
CouchbaseClusterControllerService and the concrete class 
CouchbaseClusterService, but I do not really know what the standard is.  One 
interesting fact is that the class name AWSCredentialsProviderServiceImpl  
appears in the Controller Services dialog, so it effectively becomes part of 
the user experience.  That might explain  "CouchbaseClusterService".  If there 
is a display name, I didn't see any other services using it.

Thanks for putting this together!

> Enhance AWS S3 fetch to access bucket across accounts
> -----------------------------------------------------
>
>                 Key: NIFI-1325
>                 URL: https://issues.apache.org/jira/browse/NIFI-1325
>             Project: Apache NiFi
>          Issue Type: Improvement
>          Components: Core Framework
>    Affects Versions: 0.4.1
>         Environment: All
>            Reporter: Mans Singh
>            Assignee: Tony Kurc
>            Priority: Minor
>              Labels: easyfix
>             Fix For: 0.4.1
>
>         Attachments: nifi-1325.patch.zip, nifi-1325.patch.zip
>
>   Original Estimate: 48h
>  Remaining Estimate: 48h
>
> The AWS S3 Fetch Object component does not allow access to bucket across 
> accounts. AWS  S3 Fetch Object with can be enhanced to provide this 
> functionality by using assume role session/credentials 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to