How to use aws athena using nodejs?

10.1k Views Asked by At
  • Athena is analytics service for retrieving data from s3 using sql query.
  • I have queried data in s3 using t aws console
  • Need access to aws athena using nodejs code
5

There are 5 best solutions below

1
On

I am using athena like following way in my nodejs project :

download JDBC driver from AWS. Create a connector.js file. npm install jdbc NPM. Paste followings:

var JDBC = require('jdbc');
var jinst = require('jdbc/lib/jinst');
 
if (!jinst.isJvmCreated()) {
  jinst.addOption("-Xrs");
  jinst.setupClasspath(['./AthenaJDBC41-*.jar']);
}
 
var config = {
  // Required 
  url: 'jdbc:awsathena://athena.*.amazonaws.com:443',
   // Optional 
  drivername: 'com.amazonaws.athena.jdbc.AthenaDriver',
  minpoolsize: 10,
  maxpoolsize: 100,
  properties: {
                s3_staging_dir: 's3://aws-athena-query-results-*/',
                log_path: '/logs/athenajdbc.log',
                user: 'access_key',
                password: 'secret_key'
   }
};
 
 
var hsqldb = new JDBC(config);
 
hsqldb.initialize(function(err) {
  if (err) {
    console.log(err);
  }
});

0
On

You could use the athena-express module from here, as documented by AWS here

4
On

You need to use aws-sdk and athena-express dependencies,

There's a full working tutorial in this video I made: https://www.youtube.com/watch?v=aBf5Qo9GZ1Yac

0
On

This is code about node js with Athena connection....

const AthenaExpress = require("athena-express");
const aws = require("aws-sdk");

const awsCredentials = {
  region: "us-east-1",
  accessKeyId: "xxxxx", // Modified key name
  secretAccessKey: "xxxxxxxxx", // Modified key name
};

aws.config.update(awsCredentials);

const athenaExpressConfig = {
  aws: aws,
  s3: "s3://xyz/abc/",
  getStats: true,
};

const athenaExpress = new AthenaExpress(athenaExpressConfig);

(async () => {
 
  let myQuery = {
    sql: "SELECT id, name, address FROM dummydata1ealogs LIMIT 3",
    db: "database",
  };
 
  try {
    let results = await athenaExpress.query(myQuery);
    console.log(results);
  } catch (error) {
    console.log(error);
  }`enter code here`
})();
2
On

Just use the Athena Service on the JS SDK.

Athena JS Documentation

AWS JS SDK