Documentation for Custom provider class for S3

Huriel
Level 1
Documentation for Custom provider class for S3

Hello,

We are looking to utilize a custom provider class for S3 Credentials on the official S3 connection.  

I can see from the credentials dropdown has an option for Custom credentials with an input: 

  • Custom provider class: Class name of a custom DSS AWS credentials provider

Can you provide documentation on what is needed to create a custom DSS AWS credentials provider?

  • Does Dataiku expect a Java or Python class?
  • Where should this class be placed?
  • What methods do we need to implement?
  • What response are we expected to return?
  • What context details do we have access to from the custom provider class?

 

Thanks!

0 Kudos
1 Reply
pandemite77
Level 1

Hi Hurriel,

I know this is a few months old... but I've just worked through this.

To make it work you need the following:
* Need to grab some of the dataiku jars for some dependencies: ( these are in your install directory )
* dataiku-app-platform.jar (for the com.dataiku.dip.security.AuthCtx)
* dataiku-dip.jar (for the 
com.dataiku.dip.connections.EC2Connection.AWSConnectionCredentialsProvider )
* Next create a jar with a class implementing the com.dataiku.dip.connections.EC2Connection.AWSConnectionCredentialsProvider interface. 
* Make sure to package up the jar with all the required runtime dependencies (but not the dataiku jars as they will already exist. no need to duplicate).
* keep the Jar simple... i.e. don't include anything like springboot etc... (it will clash with the existing jars).
* deploy the jar (with appropriate permissions) to the <dss>/lib/java folder of your installation. (This folder is already on the class path!)
* restart dss.

The AWSConnectionCredentialsProvider essentially has 2 important interfaces. setParams, where you can get the custom paramters setup in the connection. And a 'get' function where you convert your params into a "
EC2Connection.SerializableAWSCredential".
You can look these up in the dataiku-dip.jar. 

Just popluate this will the AWS acessKeyId, secretAccessKey sessiontoken and optionally the expiry time. 

 

0 Kudos