diff --git a/builtin/providers/aws/config.go b/builtin/providers/aws/config.go index bc465394c..437a0b8b1 100644 --- a/builtin/providers/aws/config.go +++ b/builtin/providers/aws/config.go @@ -35,6 +35,8 @@ type Config struct { AllowedAccountIds []interface{} ForbiddenAccountIds []interface{} + + DynamoDBEndpoint string } type AWSClient struct { @@ -56,7 +58,7 @@ type AWSClient struct { lambdaconn *lambda.Lambda } -// Client configures and returns a fully initailized AWSClient +// Client configures and returns a fully initialized AWSClient func (c *Config) Client() (interface{}, error) { var client AWSClient @@ -84,9 +86,15 @@ func (c *Config) Client() (interface{}, error) { Region: c.Region, MaxRetries: c.MaxRetries, } + awsDynamoDBConfig := &aws.Config{ + Credentials: creds, + Region: c.Region, + MaxRetries: c.MaxRetries, + Endpoint: c.DynamoDBEndpoint, + } log.Println("[INFO] Initializing DynamoDB connection") - client.dynamodbconn = dynamodb.New(awsConfig) + client.dynamodbconn = dynamodb.New(awsDynamoDBConfig) log.Println("[INFO] Initializing ELB connection") client.elbconn = elb.New(awsConfig) diff --git a/builtin/providers/aws/provider.go b/builtin/providers/aws/provider.go index d6d877187..058cb85a2 100644 --- a/builtin/providers/aws/provider.go +++ b/builtin/providers/aws/provider.go @@ -145,6 +145,13 @@ func Provider() terraform.ResourceProvider { return hashcode.String(v.(string)) }, }, + + "dynamodb_endpoint": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Default: "", + Description: descriptions["dynamodb_endpoint"], + }, }, ResourcesMap: map[string]*schema.Resource{ @@ -242,16 +249,20 @@ func init() { "max_retries": "The maximum number of times an AWS API request is\n" + "being executed. If the API request still fails, an error is\n" + "thrown.", + + "dynamodb_endpoint": "Use this to override the default endpoint URL constructed from the :region.\n" + + "It's typically used to connect to dynamodb-local.", } } func providerConfigure(d *schema.ResourceData) (interface{}, error) { config := Config{ - AccessKey: d.Get("access_key").(string), - SecretKey: d.Get("secret_key").(string), - Token: d.Get("token").(string), - Region: d.Get("region").(string), - MaxRetries: d.Get("max_retries").(int), + AccessKey: d.Get("access_key").(string), + SecretKey: d.Get("secret_key").(string), + Token: d.Get("token").(string), + Region: d.Get("region").(string), + MaxRetries: d.Get("max_retries").(int), + DynamoDBEndpoint: d.Get("dynamodb_endpoint").(string), } if v, ok := d.GetOk("allowed_account_ids"); ok {