diff --git a/aws/resource_aws_service_discovery_public_dns_namespace.go b/aws/resource_aws_service_discovery_public_dns_namespace.go index e112dfaf4e9d..d311f2247d97 100644 --- a/aws/resource_aws_service_discovery_public_dns_namespace.go +++ b/aws/resource_aws_service_discovery_public_dns_namespace.go @@ -1,7 +1,6 @@ package aws import ( - "fmt" "time" "github.com/aws/aws-sdk-go/aws" @@ -46,9 +45,17 @@ func resourceAwsServiceDiscoveryPublicDnsNamespace() *schema.Resource { func resourceAwsServiceDiscoveryPublicDnsNamespaceCreate(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).sdconn - requestId := resource.PrefixedUniqueId(fmt.Sprintf("tf-%s", d.Get("name").(string))) + name := d.Get("name").(string) + // The CreatorRequestId has a limit of 64 bytes + var requestId string + if len(name) > (64 - resource.UniqueIDSuffixLength) { + requestId = resource.PrefixedUniqueId(name[0:(64 - resource.UniqueIDSuffixLength - 1)]) + } else { + requestId = resource.PrefixedUniqueId(name) + } + input := &servicediscovery.CreatePublicDnsNamespaceInput{ - Name: aws.String(d.Get("name").(string)), + Name: aws.String(name), CreatorRequestId: aws.String(requestId), } diff --git a/aws/resource_aws_service_discovery_public_dns_namespace_test.go b/aws/resource_aws_service_discovery_public_dns_namespace_test.go index f082c4b9fb36..ecaa3834a4e4 100644 --- a/aws/resource_aws_service_discovery_public_dns_namespace_test.go +++ b/aws/resource_aws_service_discovery_public_dns_namespace_test.go @@ -95,6 +95,26 @@ func testAccCheckAwsServiceDiscoveryPublicDnsNamespaceExists(name string) resour } } +func testAccAWSServiceDiscoveryPublicDnsNamespace_longname(t *testing.T) { + rName := acctest.RandString(64 - len("terraform.com")) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckAwsServiceDiscoveryPublicDnsNamespaceDestroy, + Steps: []resource.TestStep{ + { + Config: testAccServiceDiscoveryPublicDnsNamespaceConfig(rName), + Check: resource.ComposeTestCheckFunc( + testAccCheckAwsServiceDiscoveryPublicDnsNamespaceExists("aws_service_discovery_public_dns_namespace.test"), + resource.TestCheckResourceAttrSet("aws_service_discovery_public_dns_namespace.test", "arn"), + resource.TestCheckResourceAttrSet("aws_service_discovery_public_dns_namespace.test", "hosted_zone"), + ), + }, + }, + }) +} + func testAccServiceDiscoveryPublicDnsNamespaceConfig(rName string) string { return fmt.Sprintf(` resource "aws_service_discovery_public_dns_namespace" "test" {