diff --git a/builtin/providers/aws/data_source_aws_security_group.go b/builtin/providers/aws/data_source_aws_security_group.go index 1ff1f17a4..c0757d9a8 100644 --- a/builtin/providers/aws/data_source_aws_security_group.go +++ b/builtin/providers/aws/data_source_aws_security_group.go @@ -14,23 +14,29 @@ func dataSourceAwsSecurityGroup() *schema.Resource { Read: dataSourceAwsSecurityGroupRead, Schema: map[string]*schema.Schema{ - "vpc_id": &schema.Schema{ + "vpc_id": { Type: schema.TypeString, Optional: true, Computed: true, }, - "name": &schema.Schema{ + "name": { Type: schema.TypeString, Optional: true, Computed: true, }, "filter": ec2CustomFiltersSchema(), - "id": &schema.Schema{ + "id": { Type: schema.TypeString, Optional: true, Computed: true, }, + + "arn": { + Type: schema.TypeString, + Computed: true, + }, + "tags": tagsSchemaComputed(), }, } @@ -81,6 +87,8 @@ func dataSourceAwsSecurityGroupRead(d *schema.ResourceData, meta interface{}) er d.Set("description", sg.Description) d.Set("vpc_id", sg.VpcId) d.Set("tags", tagsToMap(sg.Tags)) + d.Set("arn", fmt.Sprintf("arn:%s:ec2:%s:%s/security-group/%s", + meta.(*AWSClient).partition, meta.(*AWSClient).region, *sg.OwnerId, *sg.GroupId)) return nil } diff --git a/builtin/providers/aws/data_source_aws_security_group_test.go b/builtin/providers/aws/data_source_aws_security_group_test.go index d697c1e3e..6e1f1664a 100644 --- a/builtin/providers/aws/data_source_aws_security_group_test.go +++ b/builtin/providers/aws/data_source_aws_security_group_test.go @@ -4,6 +4,8 @@ import ( "fmt" "testing" + "strings" + "github.com/hashicorp/terraform/helper/acctest" "github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform/terraform" @@ -66,6 +68,10 @@ func testAccDataSourceAwsSecurityGroupCheck(name string) resource.TestCheckFunc return fmt.Errorf("bad Name tag %s", attr["tags.Name"]) } + if !strings.Contains(attr["arn"], attr["id"]) { + return fmt.Errorf("bad ARN %s", attr["arn"]) + } + return nil } }