Closes #1085 - allow for specifying AWS credentials in config.

This commit is contained in:
John Engelman 2016-04-23 13:19:04 -05:00
parent 1751c35f69
commit dd2103b43b
3 changed files with 48 additions and 2 deletions

View File

@ -6,6 +6,7 @@ import (
"time" "time"
"github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/cloudwatch" "github.com/aws/aws-sdk-go/service/cloudwatch"
@ -18,6 +19,8 @@ import (
type ( type (
CloudWatch struct { CloudWatch struct {
Region string `toml:"region"` Region string `toml:"region"`
AccessKey string `toml:"access_key"`
SecretKey string `toml:"secret_key"`
Period internal.Duration `toml:"period"` Period internal.Duration `toml:"period"`
Delay internal.Duration `toml:"delay"` Delay internal.Duration `toml:"delay"`
Namespace string `toml:"namespace"` Namespace string `toml:"namespace"`
@ -53,6 +56,15 @@ func (c *CloudWatch) SampleConfig() string {
## Amazon Region ## Amazon Region
region = 'us-east-1' region = 'us-east-1'
## Amazon Credentials
## Credentials are loaded in the following order
## 1) explicit credentials from 'access_key' and 'secret_key'
## 2) environment variables
## 3) shared credentials file
## 4) EC2 Instance Profile
#access_key = ""
#secret_key = ""
## Requested CloudWatch aggregation Period (required - must be a multiple of 60s) ## Requested CloudWatch aggregation Period (required - must be a multiple of 60s)
period = '1m' period = '1m'
@ -152,6 +164,9 @@ func (c *CloudWatch) initializeCloudWatch() error {
config := &aws.Config{ config := &aws.Config{
Region: aws.String(c.Region), Region: aws.String(c.Region),
} }
if c.AccessKey != "" || c.SecretKey != "" {
config.Credentials = credentials.NewStaticCredentials(c.AccessKey, c.SecretKey, "")
}
c.client = cloudwatch.New(session.New(config)) c.client = cloudwatch.New(session.New(config))
return nil return nil

View File

@ -8,6 +8,7 @@ import (
"time" "time"
"github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/cloudwatch" "github.com/aws/aws-sdk-go/service/cloudwatch"
@ -16,8 +17,10 @@ import (
) )
type CloudWatch struct { type CloudWatch struct {
Region string // AWS Region Region string `toml:"region"` // AWS Region
Namespace string // CloudWatch Metrics Namespace AccessKey string `toml:"access_key"` // Explicit AWS Access Key ID
SecretKey string `toml:"secret_key"` // Explicit AWS Secret Access Key
Namespace string `toml:"namespace"` // CloudWatch Metrics Namespace
svc *cloudwatch.CloudWatch svc *cloudwatch.CloudWatch
} }
@ -25,6 +28,15 @@ var sampleConfig = `
## Amazon REGION ## Amazon REGION
region = 'us-east-1' region = 'us-east-1'
## Amazon Credentials
## Credentials are loaded in the following order
## 1) explicit credentials from 'access_key' and 'secret_key'
## 2) environment variables
## 3) shared credentials file
## 4) EC2 Instance Profile
#access_key = ""
#secret_key = ""
## Namespace for the CloudWatch MetricDatums ## Namespace for the CloudWatch MetricDatums
namespace = 'InfluxData/Telegraf' namespace = 'InfluxData/Telegraf'
` `
@ -41,6 +53,9 @@ func (c *CloudWatch) Connect() error {
Config := &aws.Config{ Config := &aws.Config{
Region: aws.String(c.Region), Region: aws.String(c.Region),
} }
if c.AccessKey != "" || c.SecretKey != "" {
Config.Credentials = credentials.NewStaticCredentials(c.AccessKey, c.SecretKey, "")
}
svc := cloudwatch.New(session.New(Config)) svc := cloudwatch.New(session.New(Config))

View File

@ -8,6 +8,7 @@ import (
"time" "time"
"github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/kinesis" "github.com/aws/aws-sdk-go/service/kinesis"
@ -17,6 +18,8 @@ import (
type KinesisOutput struct { type KinesisOutput struct {
Region string `toml:"region"` Region string `toml:"region"`
AccessKey string `toml:"access_key"`
SecretKey string `toml:"secret_key"`
StreamName string `toml:"streamname"` StreamName string `toml:"streamname"`
PartitionKey string `toml:"partitionkey"` PartitionKey string `toml:"partitionkey"`
Format string `toml:"format"` Format string `toml:"format"`
@ -27,6 +30,16 @@ type KinesisOutput struct {
var sampleConfig = ` var sampleConfig = `
## Amazon REGION of kinesis endpoint. ## Amazon REGION of kinesis endpoint.
region = "ap-southeast-2" region = "ap-southeast-2"
## Amazon Credentials
## Credentials are loaded in the following order
## 1) explicit credentials from 'access_key' and 'secret_key'
## 2) environment variables
## 3) shared credentials file
## 4) EC2 Instance Profile
#access_key = ""
#secret_key = ""
## Kinesis StreamName must exist prior to starting telegraf. ## Kinesis StreamName must exist prior to starting telegraf.
streamname = "StreamName" streamname = "StreamName"
## PartitionKey as used for sharding data. ## PartitionKey as used for sharding data.
@ -65,6 +78,9 @@ func (k *KinesisOutput) Connect() error {
Config := &aws.Config{ Config := &aws.Config{
Region: aws.String(k.Region), Region: aws.String(k.Region),
} }
if k.AccessKey != "" || k.SecretKey != "" {
Config.Credentials = credentials.NewStaticCredentials(k.AccessKey, k.SecretKey, "")
}
svc := kinesis.New(session.New(Config)) svc := kinesis.New(session.New(Config))
KinesisParams := &kinesis.ListStreamsInput{ KinesisParams := &kinesis.ListStreamsInput{