diff --git a/aws/resource_aws_ec2_traffic_mirror_filter.go b/aws/resource_aws_ec2_traffic_mirror_filter.go index 0a3809c88143..450d6c853f88 100644 --- a/aws/resource_aws_ec2_traffic_mirror_filter.go +++ b/aws/resource_aws_ec2_traffic_mirror_filter.go @@ -5,6 +5,7 @@ import ( "log" "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/arn" "github.com/aws/aws-sdk-go/service/ec2" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/helper/validation" @@ -21,6 +22,10 @@ func resourceAwsEc2TrafficMirrorFilter() *schema.Resource { State: schema.ImportStatePassthrough, }, Schema: map[string]*schema.Schema{ + "arn": { + Type: schema.TypeString, + Computed: true, + }, "description": { Type: schema.TypeString, Optional: true, @@ -59,7 +64,7 @@ func resourceAwsEc2TrafficMirrorFilterCreate(d *schema.ResourceData, meta interf return fmt.Errorf("Error while creating traffic filter %s", err) } - d.SetId(*out.TrafficMirrorFilter.TrafficMirrorFilterId) + d.SetId(aws.StringValue(out.TrafficMirrorFilter.TrafficMirrorFilterId)) if v, ok := d.GetOk("network_services"); ok { input := &ec2.ModifyTrafficMirrorFilterNetworkServicesInput{ @@ -150,6 +155,16 @@ func resourceAwsEc2TrafficMirrorFilterRead(d *schema.ResourceData, meta interfac return fmt.Errorf("error setting network_services for filter %v: %s", d.Id(), err) } + arn := arn.ARN{ + Partition: meta.(*AWSClient).partition, + Service: "ec2", + Region: meta.(*AWSClient).region, + AccountID: meta.(*AWSClient).accountid, + Resource: fmt.Sprintf("traffic-mirror-filter/%s", d.Id()), + }.String() + + d.Set("arn", arn) + return nil } diff --git a/aws/resource_aws_ec2_traffic_mirror_filter_test.go b/aws/resource_aws_ec2_traffic_mirror_filter_test.go index 260adfcc857a..a2a316481f19 100644 --- a/aws/resource_aws_ec2_traffic_mirror_filter_test.go +++ b/aws/resource_aws_ec2_traffic_mirror_filter_test.go @@ -2,6 +2,7 @@ package aws import ( "fmt" + "regexp" "testing" "github.com/aws/aws-sdk-go/aws" @@ -29,6 +30,7 @@ func TestAccAWSEc2TrafficMirrorFilter_basic(t *testing.T) { Config: testAccTrafficMirrorFilterConfig(description), Check: resource.ComposeTestCheckFunc( testAccCheckAWSEc2TrafficMirrorFilterExists(resourceName, &v), + testAccMatchResourceAttrRegionalARN(resourceName, "arn", "ec2", regexp.MustCompile(`traffic-mirror-filter/tmf-.+`)), resource.TestCheckResourceAttr(resourceName, "description", description), resource.TestCheckResourceAttr(resourceName, "network_services.#", "1"), resource.TestCheckResourceAttr(resourceName, "tags.%", "0"), @@ -123,7 +125,7 @@ func TestAccAWSEc2TrafficMirrorFilter_disappears(t *testing.T) { Config: testAccTrafficMirrorFilterConfig(description), Check: resource.ComposeTestCheckFunc( testAccCheckAWSEc2TrafficMirrorFilterExists(resourceName, &v), - testAccCheckAWSEc2TrafficMirrorFilterDisappears(&v), + testAccCheckResourceDisappears(testAccProvider, resourceAwsEc2TrafficMirrorFilter(), resourceName), ), ExpectNonEmptyPlan: true, }, @@ -162,17 +164,6 @@ func testAccCheckAWSEc2TrafficMirrorFilterExists(name string, traffic *ec2.Traff } } -func testAccCheckAWSEc2TrafficMirrorFilterDisappears(traffic *ec2.TrafficMirrorFilter) resource.TestCheckFunc { - return func(s *terraform.State) error { - conn := testAccProvider.Meta().(*AWSClient).ec2conn - _, err := conn.DeleteTrafficMirrorFilter(&ec2.DeleteTrafficMirrorFilterInput{ - TrafficMirrorFilterId: traffic.TrafficMirrorFilterId, - }) - - return err - } -} - func testAccTrafficMirrorFilterConfig(description string) string { return fmt.Sprintf(` resource "aws_ec2_traffic_mirror_filter" "test" { diff --git a/website/docs/index.html.markdown b/website/docs/index.html.markdown index 39933c47d01c..810362d75645 100644 --- a/website/docs/index.html.markdown +++ b/website/docs/index.html.markdown @@ -250,7 +250,8 @@ for more information about connecting to alternate AWS endpoints or AWS compatib - [`aws_ebs_volume` data source](/docs/providers/aws/d/ebs_volume.html) - [`aws_ec2_capacity_reservation` resource](/docs/providers/aws/r/ec2_capacity_reservation.html) - [`aws_ec2_client_vpn_endpoint` resource](/docs/providers/aws/r/ec2_client_vpn_endpoint.html) - - [`aws_ec2_traffic_mirror_session` resource](/docs/providers/aws/r/ec2_traffic_mirror_session.html) + - [`aws_ec2_traffic_mirror_filter` resource](/docs/providers/aws/r/ec2_traffic_mirror_filter.html) + - [`aws_ec2_traffic_mirror_session` resource](/docs/providers/aws/r/ec2_traffic_mirror_session.html) - [`aws_ec2_traffic_mirror_target` resource](/docs/providers/aws/r/ec2_traffic_mirror_target.html) - [`aws_ecs_capacity_provider` resource (import)](/docs/providers/aws/r/ecs_capacity_provider.html) - [`aws_ecs_cluster` resource (import)](/docs/providers/aws/r/ecs_cluster.html) diff --git a/website/docs/r/ec2_traffic_mirror_filter.html.markdown b/website/docs/r/ec2_traffic_mirror_filter.html.markdown index 0bf7ca21b107..d4fb95cb685a 100644 --- a/website/docs/r/ec2_traffic_mirror_filter.html.markdown +++ b/website/docs/r/ec2_traffic_mirror_filter.html.markdown @@ -35,6 +35,7 @@ The following arguments are supported: In addition to all arguments above, the following attributes are exported: +* `arn` - The ARN of the traffic mirror filter. * `id` - The name of the filter. ## Import