diff --git a/.changelog/13948.txt b/.changelog/13948.txt new file mode 100644 index 000000000000..71f2f4e7481d --- /dev/null +++ b/.changelog/13948.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_ec2_traffic_mirror_filter: Add `arn` attribute. +``` diff --git a/aws/resource_aws_ec2_traffic_mirror_filter.go b/aws/resource_aws_ec2_traffic_mirror_filter.go index fcf9a4859243..4541a94dce19 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/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/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, @@ -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 04042a270d47..911e619eb877 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" @@ -28,6 +29,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"), @@ -122,7 +124,7 @@ func TestAccAWSEc2TrafficMirrorFilter_disappears(t *testing.T) { Config: testAccTrafficMirrorFilterConfig(description), Check: resource.ComposeTestCheckFunc( testAccCheckAWSEc2TrafficMirrorFilterExists(resourceName, &v), - testAccCheckAWSEc2TrafficMirrorFilterDisappears(&v), + testAccCheckResourceDisappears(testAccProvider, resourceAwsEc2TrafficMirrorFilter(), resourceName), ), ExpectNonEmptyPlan: true, }, @@ -161,17 +163,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 5a6d9fd17262..8266d49b471b 100644 --- a/website/docs/index.html.markdown +++ b/website/docs/index.html.markdown @@ -265,6 +265,7 @@ 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_filter` resource](/docs/providers/aws/r/ec2_traffic_mirror_filter.html) - [`aws_ec2_traffic_mirror_filter_rule` resource](/docs/providers/aws/r/ec2_traffic_mirror_filter_rule.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) 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