From a5cffac41aa885fbcf26771fee581d5c0e313109 Mon Sep 17 00:00:00 2001 From: Brian Flad Date: Mon, 19 Mar 2018 14:07:23 -0400 Subject: [PATCH] resource/aws_kinesis_firehose_delivery_stream: Prevent crash on malformed ID for import --- ...rt_aws_kinesis_firehose_delivery_stream_test.go | 14 ++++++++++++++ ...esource_aws_kinesis_firehose_delivery_stream.go | 9 +++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/aws/import_aws_kinesis_firehose_delivery_stream_test.go b/aws/import_aws_kinesis_firehose_delivery_stream_test.go index 40c466e41396..a7d73803cc4c 100644 --- a/aws/import_aws_kinesis_firehose_delivery_stream_test.go +++ b/aws/import_aws_kinesis_firehose_delivery_stream_test.go @@ -2,6 +2,7 @@ package aws import ( "fmt" + "regexp" "testing" "github.com/hashicorp/terraform/helper/acctest" @@ -33,6 +34,19 @@ func TestAccAWSKinesisFirehoseDeliveryStream_importBasic(t *testing.T) { ImportState: true, ImportStateVerify: true, }, + // Ensure we properly error on malformed import IDs + { + ResourceName: resName, + ImportState: true, + ImportStateId: "just-a-name", + ExpectError: regexp.MustCompile(`Expected ID in format`), + }, + { + ResourceName: resName, + ImportState: true, + ImportStateId: "arn:aws:firehose:us-east-1:123456789012:missing-slash", + ExpectError: regexp.MustCompile(`Expected ID in format`), + }, }, }) } diff --git a/aws/resource_aws_kinesis_firehose_delivery_stream.go b/aws/resource_aws_kinesis_firehose_delivery_stream.go index 1d4762f5fc05..3534c8e68092 100644 --- a/aws/resource_aws_kinesis_firehose_delivery_stream.go +++ b/aws/resource_aws_kinesis_firehose_delivery_stream.go @@ -376,11 +376,16 @@ func resourceAwsKinesisFirehoseDeliveryStream() *schema.Resource { Importer: &schema.ResourceImporter{ State: func(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) { + idErr := fmt.Errorf("Expected ID in format of arn:PARTITION:firehose:REGION:ACCOUNTID:deliverystream/NAME and provided: %s", d.Id()) resARN, err := arn.Parse(d.Id()) if err != nil { - return nil, err + return nil, idErr } - d.Set("name", strings.Split(resARN.Resource, "/")[1]) + resourceParts := strings.Split(resARN.Resource, "/") + if len(resourceParts) != 2 { + return nil, idErr + } + d.Set("name", resourceParts[1]) return []*schema.ResourceData{d}, nil }, },