in go/connector.go [66:114]
func (c *SQLConnector) Connect(ctx context.Context) (driver.Conn, error) {
now := time.Now()
c.tracer = NewDefaultObservability(c.config)
if metrics, ok := ctx.Value(MetricsKey).(tally.Scope); ok {
c.tracer.SetScope(metrics)
}
if logger, ok := ctx.Value(LoggerKey).(*zap.Logger); ok {
c.tracer.SetLogger(logger)
}
var awsAthenaSession *session.Session
var err error
// respect AWS_SDK_LOAD_CONFIG and local ~/.aws/credentials, ~/.aws/config
if ok, _ := strconv.ParseBool(os.Getenv("AWS_SDK_LOAD_CONFIG")); ok {
if profile := c.config.GetAWSProfile(); profile != "" {
awsAthenaSession, err = session.NewSession(&aws.Config{
Credentials: credentials.NewSharedCredentials("", profile),
})
} else {
awsAthenaSession, err = session.NewSession(&aws.Config{})
}
} else if c.config.GetAccessID() != "" {
staticCredentials := credentials.NewStaticCredentials(c.config.GetAccessID(),
c.config.GetSecretAccessKey(),
c.config.GetSessionToken())
awsConfig := &aws.Config{
Region: aws.String(c.config.GetRegion()),
Credentials: staticCredentials,
}
awsAthenaSession, err = session.NewSession(awsConfig)
} else {
awsAthenaSession, err = session.NewSession(&aws.Config{
Region: aws.String(c.config.GetRegion()),
})
}
if err != nil {
c.tracer.Scope().Counter(DriverName + ".failure.sqlconnector.newsession").Inc(1)
return nil, err
}
athenaAPI := athena.New(awsAthenaSession)
timeConnect := time.Since(now)
conn := &Connection{
athenaAPI: athenaAPI,
connector: c,
}
c.tracer.Scope().Timer(DriverName + ".connector.connect").Record(timeConnect)
return conn, nil
}