diff --git a/builtin/providers/aws/config.go b/builtin/providers/aws/config.go index e060dbda9..dd1149b91 100644 --- a/builtin/providers/aws/config.go +++ b/builtin/providers/aws/config.go @@ -269,12 +269,11 @@ func (c *Config) Client() (interface{}, error) { sess.Handlers.UnmarshalError.PushFrontNamed(debugAuthFailure) } - // Some services exist only in us-east-1, e.g. because they manage - // resources that can span across multiple regions, or because - // signature format v4 requires region to be us-east-1 for global - // endpoints: - // http://docs.aws.amazon.com/general/latest/gr/sigv4_changes.html - usEast1Sess := sess.Copy(&aws.Config{Region: aws.String("us-east-1")}) + // This restriction should only be used for Route53 sessions. + // Other resources that have restrictions should allow the API to fail, rather + // than Terraform abstracting the region for the user. This can lead to breaking + // changes if that resource is ever opened up to more regions. + r53Sess := sess.Copy(&aws.Config{Region: aws.String("us-east-1")}) // Some services have user-configurable endpoints awsCfSess := sess.Copy(&aws.Config{Endpoint: aws.String(c.CloudFormationEndpoint)}) @@ -368,9 +367,9 @@ func (c *Config) Client() (interface{}, error) { client.kinesisconn = kinesis.New(awsKinesisSess) client.kmsconn = kms.New(awsKmsSess) client.lambdaconn = lambda.New(sess) - client.lightsailconn = lightsail.New(usEast1Sess) + client.lightsailconn = lightsail.New(sess) client.opsworksconn = opsworks.New(sess) - client.r53conn = route53.New(usEast1Sess) + client.r53conn = route53.New(r53Sess) client.rdsconn = rds.New(awsRdsSess) client.redshiftconn = redshift.New(sess) client.simpledbconn = simpledb.New(sess) diff --git a/builtin/providers/aws/resource_aws_lightsail_instance_test.go b/builtin/providers/aws/resource_aws_lightsail_instance_test.go index 978aed68f..da7bc3b2e 100644 --- a/builtin/providers/aws/resource_aws_lightsail_instance_test.go +++ b/builtin/providers/aws/resource_aws_lightsail_instance_test.go @@ -38,6 +38,30 @@ func TestAccAWSLightsailInstance_basic(t *testing.T) { }) } +func TestAccAWSLightsailInstance_euRegion(t *testing.T) { + var conf lightsail.Instance + lightsailName := fmt.Sprintf("tf-test-lightsail-%d", acctest.RandInt()) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + IDRefreshName: "aws_lightsail_instance.lightsail_instance_test", + Providers: testAccProviders, + CheckDestroy: testAccCheckAWSLightsailInstanceDestroy, + Steps: []resource.TestStep{ + { + Config: testAccAWSLightsailInstanceConfig_euRegion(lightsailName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAWSLightsailInstanceExists("aws_lightsail_instance.lightsail_instance_test", &conf), + resource.TestCheckResourceAttrSet("aws_lightsail_instance.lightsail_instance_test", "availability_zone"), + resource.TestCheckResourceAttrSet("aws_lightsail_instance.lightsail_instance_test", "blueprint_id"), + resource.TestCheckResourceAttrSet("aws_lightsail_instance.lightsail_instance_test", "bundle_id"), + resource.TestCheckResourceAttrSet("aws_lightsail_instance.lightsail_instance_test", "key_pair_name"), + ), + }, + }, + }) +} + func TestAccAWSLightsailInstance_disapear(t *testing.T) { var conf lightsail.Instance lightsailName := fmt.Sprintf("tf-test-lightsail-%d", acctest.RandInt()) @@ -149,3 +173,17 @@ resource "aws_lightsail_instance" "lightsail_instance_test" { } `, lightsailName) } + +func testAccAWSLightsailInstanceConfig_euRegion(lightsailName string) string { + return fmt.Sprintf(` +provider "aws" { + region = "eu-west-1" +} +resource "aws_lightsail_instance" "lightsail_instance_test" { + name = "%s" + availability_zone = "eu-west-1a" + blueprint_id = "joomla_3_6_5" + bundle_id = "nano_1_0" +} +`, lightsailName) +}