Giter Site home page Giter Site logo

aws / aws-sigv4-auth-cassandra-java-driver-plugin Goto Github PK

View Code? Open in Web Editor NEW
13.0 14.0 14.0 112 KB

A SigV4 authentication plugin for the open-source DataStax Java Driver for Apache Cassandra. Allows use of AWS IAM users and roles for direct authentication.

License: Apache License 2.0

Java 100.00%
amazon-keyspaces cassandra aws-sigv4 datastax-java-driver sigv4 sigv4client cql aws keyspaces

aws-sigv4-auth-cassandra-java-driver-plugin's Issues

Generating invalid signatures on Windows platforms

The method generateSignature generates an invalid stringToSign on Windows platforms.

It uses the String.format, using %n as line separators which corresponds to the OS line separator. In Windows, that is \r\n, but according to the specs, the line separator must be \n.

The same also applies in the method canonicalizeRequest.

DefaultTopologyMonitor and DefaultTokenFactoryRegistry Warning

We have moved our cassandra cluster to Amazon Keyspaces, in practice we did not face critical issues so far. But there's an already open discussion for DefaultTopologyMonitor and TokenFactory warnings. We have facing issues related to these warnings when we attempted to use in production.

  • Control node .../...:9142 has an entry for itself
  • Unsupported partitioner 'com.amazonaws.cassandra.DefaultPartitioner', token map will be empty.

We have following configuration as it's suggested by AWS experts in the discussion:

metadata { schema { enabled = false } token-map { enabled = false } }

The warnings are appearing after a period like ~24 hours without any action on our side. You can see the below chart, we have ~35k warnings coming from 10 different pods .

image

We are using AWS sigv4 plugin and we implemented as it's suggested in Sample Application

Version 4.0.3 not compatible with other AWS libraries ( Ex: version 1.11.904 )

This version requires

        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-core</artifactId>
            <version>1.11.717</version>
        </dependency>

which is incompatible with newest com.amazonaws library releases

java.lang.NoSuchFieldError: ENDPOINT_OVERRIDDEN
	at com.amazonaws.services.sqs.AmazonSQSClient.executeGetQueueUrl(AmazonSQSClient.java:1200) ~[aws-java-sdk-sqs-1.11.904.jar:?]
	at com.amazonaws.services.sqs.AmazonSQSClient.getQueueUrl(AmazonSQSClient.java:1182) ~[aws-java-sdk-sqs-1.11.904.jar:?]
	at com.amazon.sqs.javamessaging.AmazonSQSMessagingClientWrapper.queueExists(AmazonSQSMessagingClientWrapper.java:220) ~[amazon-sqs-java-messaging-lib-1.0.8.jar:?]

Problem with OpenJDK "14.0.1"

Having this exception when trying to use this plugin with OpenJDK "14.0.1". Is there support for Java versions higher than 8?
I'm trying the sample of usage from AWS documentation here https://docs.aws.amazon.com/keyspaces/latest/devguide/programmatic.credentials.html

java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7
	at org.codehaus.groovy.vmplugin.VMPluginFactory.<clinit>(VMPluginFactory.java:43)
	at org.codehaus.groovy.reflection.GroovyClassValueFactory.<clinit>(GroovyClassValueFactory.java:35)
	at org.codehaus.groovy.reflection.ClassInfo.<clinit>(ClassInfo.java:107)
	at org.codehaus.groovy.reflection.ReflectionCache.getCachedClass(ReflectionCache.java:95)
	at org.codehaus.groovy.reflection.ReflectionCache.<clinit>(ReflectionCache.java:39)
	at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.registerMethods(MetaClassRegistryImpl.java:209)
	at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:107)
	at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:85)
	at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:36)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:340)
	at com.amazonaws.util.VersionInfoUtils.languageVersion(VersionInfoUtils.java:281)
	at com.amazonaws.util.VersionInfoUtils.groovyVersion(VersionInfoUtils.java:208)
	at com.amazonaws.util.VersionInfoUtils.getAdditionalJvmLanguages(VersionInfoUtils.java:192)
	at com.amazonaws.util.VersionInfoUtils.userAgent(VersionInfoUtils.java:161)
	at com.amazonaws.util.VersionInfoUtils.initializeUserAgent(VersionInfoUtils.java:137)
	at com.amazonaws.util.VersionInfoUtils.getUserAgent(VersionInfoUtils.java:100)
	at com.amazonaws.internal.EC2ResourceFetcher.<clinit>(EC2ResourceFetcher.java:44)
	at com.amazonaws.auth.InstanceMetadataServiceCredentialsFetcher.<init>(InstanceMetadataServiceCredentialsFetcher.java:36)
	at com.amazonaws.auth.InstanceProfileCredentialsProvider.<init>(InstanceProfileCredentialsProvider.java:102)
	at com.amazonaws.auth.InstanceProfileCredentialsProvider.<init>(InstanceProfileCredentialsProvider.java:82)
	at com.amazonaws.auth.InstanceProfileCredentialsProvider.<init>(InstanceProfileCredentialsProvider.java:66)
	at com.amazonaws.auth.InstanceProfileCredentialsProvider.<clinit>(InstanceProfileCredentialsProvider.java:49)
	at com.amazonaws.auth.EC2ContainerCredentialsProviderWrapper.initializeProvider(EC2ContainerCredentialsProviderWrapper.java:64)
	at com.amazonaws.auth.EC2ContainerCredentialsProviderWrapper.<init>(EC2ContainerCredentialsProviderWrapper.java:53)
	at com.amazonaws.auth.DefaultAWSCredentialsProviderChain.<init>(DefaultAWSCredentialsProviderChain.java:48)
	at com.amazonaws.auth.DefaultAWSCredentialsProviderChain.<clinit>(DefaultAWSCredentialsProviderChain.java:42)
	at software.aws.mcs.auth.SigV4AuthProvider.<init>(SigV4AuthProvider.java:102)
	at io.ninety.config.CassandraSession.session(CassandraSession.java:47)
	at io.ninety.ShipDataServiceApp.main(ShipDataServiceApp.java:33)
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.reflection.ReflectionCache
	at org.codehaus.groovy.runtime.dgmimpl.NumberNumberMetaMethod.<clinit>(NumberNumberMetaMethod.java:33)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
	at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:124)
	at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:346)
	at java.base/java.lang.Class.newInstance(Class.java:604)
	at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.createMetaMethodFromClass(MetaClassRegistryImpl.java:257)
	at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:110)
	at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:85)
	at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:36)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:340)
	at com.amazonaws.util.VersionInfoUtils.languageVersion(VersionInfoUtils.java:281)
	at com.amazonaws.util.VersionInfoUtils.groovyVersion(VersionInfoUtils.java:208)
	at com.amazonaws.util.VersionInfoUtils.getAdditionalJvmLanguages(VersionInfoUtils.java:192)
	at com.amazonaws.util.VersionInfoUtils.userAgent(VersionInfoUtils.java:161)
	at com.amazonaws.util.VersionInfoUtils.initializeUserAgent(VersionInfoUtils.java:137)
	at com.amazonaws.util.VersionInfoUtils.getUserAgent(VersionInfoUtils.java:100)
	at com.amazonaws.internal.EC2ResourceFetcher.<clinit>(EC2ResourceFetcher.java:44)
	at com.amazonaws.auth.InstanceMetadataServiceCredentialsFetcher.<init>(InstanceMetadataServiceCredentialsFetcher.java:36)
	at com.amazonaws.auth.InstanceProfileCredentialsProvider.<init>(InstanceProfileCredentialsProvider.java:102)
	at com.amazonaws.auth.InstanceProfileCredentialsProvider.<init>(InstanceProfileCredentialsProvider.java:82)
	at com.amazonaws.auth.InstanceProfileCredentialsProvider.<init>(InstanceProfileCredentialsProvider.java:66)
	at com.amazonaws.auth.InstanceProfileCredentialsProvider.<clinit>(InstanceProfileCredentialsProvider.java:49)
	at com.amazonaws.auth.EC2ContainerCredentialsProviderWrapper.initializeProvider(EC2ContainerCredentialsProviderWrapper.java:64)
	at com.amazonaws.auth.EC2ContainerCredentialsProviderWrapper.<init>(EC2ContainerCredentialsProviderWrapper.java:53)
	at com.amazonaws.auth.DefaultAWSCredentialsProviderChain.<init>(DefaultAWSCredentialsProviderChain.java:48)
	at com.amazonaws.auth.DefaultAWSCredentialsProviderChain.<clinit>(DefaultAWSCredentialsProviderChain.java:42)
	at software.aws.mcs.auth.SigV4AuthProvider.<init>(SigV4AuthProvider.java:102)
	at io.ninety.config.CassandraSession.session(CassandraSession.java:47)
	at io.ninety.ShipDataServiceApp.main(ShipDataServiceApp.java:33)

C# Driver

I don't know if this is the right place to ask. However, I have been trying to put together the code to connect to managed Cassandra instance with little luck. Will something like this driver but for c# be required to connect to mcs using roles and federated entities? I think I can use username and password but it doesn't look like that is the correct way to do it. However, I don't think a c# driver for SigV4AuthProvider exists yet. Right?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.