3
3
import { Client } from 'cassandra-driver' ;
4
4
import * as AWS from 'aws-sdk' ;
5
5
import { SigV4AuthProvider } from 'aws-sigv4-auth-cassandra-plugin' ; // Import the SigV4AuthProvider
6
+ import fs from 'fs' ;
7
+ import path from 'path' ;
6
8
7
9
// Load credentials manually if needed
8
10
console . log ( AWS . config . credentials )
@@ -11,12 +13,13 @@ if (!AWS.config.credentials) {
11
13
console . log ( process . env . AWS_ACCESS_KEY_ID )
12
14
console . log ( "access_secret_key" )
13
15
console . log ( process . env . AWS_SECRET_ACCESS_KEY )
14
- const credentials = new AWS . Credentials ( {
16
+ AWS . config . update ( {
15
17
accessKeyId : process . env . AWS_ACCESS_KEY_ID ,
16
18
secretAccessKey : process . env . AWS_SECRET_ACCESS_KEY ,
19
+ region : process . env . AWS_REGION || 'us-east-1' , // Optionally, you can also configure the region
17
20
} ) ;
18
21
19
- AWS . config . credentials = credentials ;
22
+ // AWS.config.credentials = credentials;
20
23
}
21
24
22
25
// Set up AWS SDK credentials for AWS Keyspaces (only used if connecting to AWS)
@@ -35,15 +38,31 @@ console.log(isAwsKeyspaces)
35
38
console . log ( process . env . DB_CONTACT_POINTS , process . env . DB_LOCAL_DATACENTER , process . env . DB_KEYSPACE )
36
39
// Set up Cassandra connection configuration for local and AWS Keyspaces
37
40
if ( isAwsKeyspaces ) {
41
+ const certPath = path . resolve ( process . cwd ( ) , 'sf-class2-root.crt' ) ; // This points to the file inside the container
42
+
38
43
console . log ( "Aws athenticate way" )
39
44
console . log ( AWS . config . credentials )
45
+
46
+ const auth = new SigV4AuthProvider ( {
47
+ region : process . env . AWS_REGION ,
48
+ accessKeyId : process . env . AWS_ACCESS_KEY_ID ,
49
+ secretAccessKey : process . env . AWS_SECRET_ACCESS_KEY
50
+ } ) ;
51
+
52
+ const sslOptions = {
53
+ ca : [ fs . readFileSync ( certPath , 'utf-8' ) ] , // Load the certificate file
54
+ host : process . env . DB_CONTACT_POINTS ,
55
+ rejectUnauthorized : true ,
56
+ } ;
57
+
40
58
// AWS Keyspaces connection setup
41
59
client = new Client ( {
42
60
contactPoints : [ process . env . DB_CONTACT_POINTS || 'cassandra.us-east-1.amazonaws.com' ] , // AWS Keyspaces endpoint
43
61
localDataCenter : process . env . DB_LOCAL_DATACENTER || 'us-east-1' ,
44
62
keyspace : process . env . DB_KEYSPACE || 'your_keyspace' ,
45
- authProvider : new SigV4AuthProvider ( AWS . config . credentials ) , // AWS IAM for authentication
46
- sslOptions : { rejectUnauthorized : true } , // Enable SSL for AWS Keyspaces
63
+ authProvider : auth ,
64
+ sslOptions : sslOptions ,
65
+ protocolOptions : { port : 9142 } ,
47
66
} ) ;
48
67
} else {
49
68
// Local Cassandra connection setup
0 commit comments