It is never advised to hard-code credentials when making a connection to Athena (even though the option is there). Instead it is advised to use profile_name (set up by AWS Command Line Interface), Amazon Resource Name roles or environmental variables. Here is a list of supported environment variables:

  • AWS_ACCESS_KEY_ID: is equivalent to the dbConnect parameter - aws_access_key_id

  • AWS_SECRET_ACCESS_KEY: is equivalent to the dbConnect parameter - aws_secret_access_key

  • AWS_SESSION_TOKEN: is equivalent to the dbConnect parameter - aws_session_token

  • AWS_ROLE_ARN: is equivalent to the dbConnect parameter - role_arn

  • AWS_EXPIRATION: is equivalent to the dbConnect parameter - duration_seconds

  • AWS_ATHENA_S3_STAGING_DIR: is equivalent to the dbConnect parameter - s3_staging_dir

  • AWS_ATHENA_WORK_GROUP: is equivalent to dbConnect parameter - work_group

  • AWS_REGION: is equivalent to dbConnect parameter - region_name

NOTE: If you have set any environmental variables in .Renviron please restart your R in order for the changes to take affect.

# S4 method for AthenaDriver
  aws_access_key_id = NULL,
  aws_secret_access_key = NULL,
  aws_session_token = NULL,
  schema_name = "default",
  work_group = NULL,
  poll_interval = NULL,
  encryption_option = c("NULL", "SSE_S3", "SSE_KMS", "CSE_KMS"),
  kms_key = NULL,
  profile_name = NULL,
  role_arn = NULL,
  role_session_name = sprintf("RAthena-session-%s", as.integer(Sys.time())),
  duration_seconds = 3600L,
  s3_staging_dir = NULL,
  region_name = NULL,
  botocore_session = NULL,
  keyboard_interrupt = TRUE,



an object that inherits from DBIDriver, or an existing DBIConnection object (in order to clone an existing connection).


AWS access key ID


AWS secret access key


AWS temporary session token


The schema_name to which the connection belongs


The name of the work group to run Athena queries , Currently defaulted to NULL.


Amount of time took when checking query execution status. Default set to a random interval between 0.5 - 1 seconds.


Athena encryption at rest link. Supported Amazon S3 Encryption Options ["NULL", "SSE_S3", "SSE_KMS", "CSE_KMS"]. Connection will default to NULL, usually changing this option is not required.


AWS Key Management Service, please refer to link for more information around the concept.


The name of a profile to use. If not given, then the default profile is used. To set profile name, the AWS Command Line Interface (AWS CLI) will need to be configured. To configure AWS CLI please refer to: Configuring the AWS CLI.


The Amazon Resource Name (ARN) of the role to assume (such as arn:aws:sts::123456789012:assumed-role/role_name/role_session_name)


An identifier for the assumed role session. By default `RAthena` creates a session name sprintf("RAthena-session-%s", as.integer(Sys.time()))


The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) up to the maximum session duration setting for the role. This setting can have a value from 1 hour to 12 hours. By default duration is set to 3600 seconds (1 hour).


The location in Amazon S3 where your query results are stored, such as s3://path/to/query/bucket/


Default region when creating new connections. Please refer to link for AWS region codes (region code example: Region = EU (Ireland) region_name = "eu-west-1")


Use this Botocore session instead of creating a new default one.


Stops AWS Athena process when R gets a keyboard interrupt, currently defaults to TRUE


Any other parameter for Boto3 session: Boto3 session documentation


dbConnect() returns a s4 class. This object is used to communicate with AWS Athena.

See also


if (FALSE) { # Connect to Athena using your aws access keys library(DBI) con <- dbConnect(RAthena::athena(), aws_access_key_id='YOUR_ACCESS_KEY_ID', # aws_secret_access_key='YOUR_SECRET_ACCESS_KEY', s3_staging_dir='s3://path/to/query/bucket/', region_name='us-west-2') dbDisconnect(con) # Connect to Athena using your profile name # Profile name can be created by using AWS CLI con <- dbConnect(RAthena::athena(), profile_name = "YOUR_PROFILE_NAME", s3_staging_dir = 's3://path/to/query/bucket/') dbDisconnect(con) # Connect to Athena using ARN role con <- dbConnect(RAthena::athena(), profile_name = "YOUR_PROFILE_NAME", role_arn = "arn:aws:sts::123456789012:assumed-role/role_name/role_session_name", s3_staging_dir = 's3://path/to/query/bucket/') dbDisconnect(con) }