Skip to content

Commit acb1bd0

Browse files
authored
Merge pull request #25496 from silvaalbert/f-resolver-firewall-config
add data source aws_route53_resolver_firewall_config
2 parents 84a4f15 + 098bcf0 commit acb1bd0

File tree

5 files changed

+150
-3
lines changed

5 files changed

+150
-3
lines changed

.changelog/25496.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:new-data-source
2+
aws_route53_resolver_firewall_config
3+
```

internal/provider/provider.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -846,9 +846,10 @@ func New(_ context.Context) (*schema.Provider, error) {
846846
"aws_route53_traffic_policy_document": route53.DataSourceTrafficPolicyDocument(),
847847
"aws_route53_zone": route53.DataSourceZone(),
848848

849-
"aws_route53_resolver_endpoint": route53resolver.DataSourceEndpoint(),
850-
"aws_route53_resolver_rule": route53resolver.DataSourceRule(),
851-
"aws_route53_resolver_rules": route53resolver.DataSourceRules(),
849+
"aws_route53_resolver_endpoint": route53resolver.DataSourceEndpoint(),
850+
"aws_route53_resolver_firewall_config": route53resolver.DataSourceFirewallConfig(),
851+
"aws_route53_resolver_rule": route53resolver.DataSourceRule(),
852+
"aws_route53_resolver_rules": route53resolver.DataSourceRules(),
852853

853854
"aws_canonical_user_id": s3.DataSourceCanonicalUserID(),
854855
"aws_s3_bucket": s3.DataSourceBucket(),
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package route53resolver
2+
3+
import (
4+
"context"
5+
6+
"github.com/aws/aws-sdk-go/aws"
7+
"github.com/aws/aws-sdk-go/service/route53resolver"
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
9+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
10+
"github.com/hashicorp/terraform-provider-aws/internal/conns"
11+
)
12+
13+
func DataSourceFirewallConfig() *schema.Resource {
14+
return &schema.Resource{
15+
ReadWithoutTimeout: dataSourceFirewallConfigRead,
16+
17+
Schema: map[string]*schema.Schema{
18+
"firewall_fail_open": {
19+
Type: schema.TypeString,
20+
Computed: true,
21+
},
22+
"owner_id": {
23+
Type: schema.TypeString,
24+
Computed: true,
25+
},
26+
"resource_id": {
27+
Type: schema.TypeString,
28+
Required: true,
29+
},
30+
},
31+
}
32+
}
33+
34+
func dataSourceFirewallConfigRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
35+
conn := meta.(*conns.AWSClient).Route53ResolverConn
36+
37+
input := &route53resolver.GetFirewallConfigInput{
38+
ResourceId: aws.String(d.Get("resource_id").(string)),
39+
}
40+
41+
output, err := conn.GetFirewallConfigWithContext(ctx, input)
42+
43+
if err != nil {
44+
return diag.Errorf("reading Route53 Resolver Firewall Config: %s", err)
45+
}
46+
47+
firewallConfig := output.FirewallConfig
48+
d.SetId(aws.StringValue(firewallConfig.Id))
49+
d.Set("firewall_fail_open", firewallConfig.FirewallFailOpen)
50+
d.Set("owner_id", firewallConfig.OwnerId)
51+
d.Set("resource_id", firewallConfig.ResourceId)
52+
53+
return nil
54+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package route53resolver_test
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
"github.com/aws/aws-sdk-go/service/route53resolver"
8+
sdkacctest "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
9+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
10+
"github.com/hashicorp/terraform-provider-aws/internal/acctest"
11+
)
12+
13+
func TestAccRoute53ResolverFirewallConfigDataSource_basic(t *testing.T) {
14+
dataSourceName := "data.aws_route53_resolver_firewall_config.test"
15+
resourceName := "aws_route53_resolver_firewall_config.test"
16+
rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)
17+
18+
resource.Test(t, resource.TestCase{
19+
PreCheck: func() { acctest.PreCheck(t); testAccPreCheck(t) },
20+
ErrorCheck: acctest.ErrorCheck(t, route53resolver.EndpointsID),
21+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
22+
Steps: []resource.TestStep{
23+
{
24+
Config: testAccFirewallConfigDataSourceConfig_basic(rName),
25+
Check: resource.ComposeTestCheckFunc(
26+
resource.TestCheckResourceAttrPair(dataSourceName, "firewall_fail_open", resourceName, "firewall_fail_open"),
27+
resource.TestCheckResourceAttrPair(dataSourceName, "owner_id", resourceName, "owner_id"),
28+
resource.TestCheckResourceAttrPair(dataSourceName, "resource_id", resourceName, "resource_id"),
29+
),
30+
},
31+
},
32+
})
33+
}
34+
35+
func testAccFirewallConfigDataSourceConfig_basic(rName string) string {
36+
return fmt.Sprintf(`
37+
resource "aws_vpc" "test" {
38+
cidr_block = "10.0.0.0/16"
39+
enable_dns_support = true
40+
enable_dns_hostnames = true
41+
42+
tags = {
43+
Name = %[1]q
44+
}
45+
}
46+
47+
resource "aws_route53_resolver_firewall_config" "test" {
48+
resource_id = aws_vpc.test.id
49+
firewall_fail_open = "ENABLED"
50+
}
51+
52+
data "aws_route53_resolver_firewall_config" "test" {
53+
resource_id = aws_vpc.test.id
54+
}
55+
`, rName)
56+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
subcategory: "Route 53 Resolver"
3+
layout: "aws"
4+
page_title: "AWS: aws_route53_resolver_firewall_config"
5+
description: |-
6+
Provides details about a specific a Route 53 Resolver DNS Firewall config.
7+
---
8+
9+
# Data Source: aws_route53_resolver_firewall_config
10+
11+
`aws_route53_resolver_firewall_config` provides details about a specific a Route 53 Resolver DNS Firewall config.
12+
13+
This data source allows to find a details about a specific a Route 53 Resolver DNS Firewall config.
14+
15+
## Example Usage
16+
17+
The following example shows how to get a firewall config using the VPC ID.
18+
19+
```terraform
20+
data "aws_route53_resolver_firewall_config" "example" {
21+
resource_id = "vpc-exampleid"
22+
}
23+
```
24+
25+
## Argument Reference
26+
27+
* `resource_id` - (Required) The ID of the VPC from Amazon VPC that the configuration is for.
28+
29+
The following attribute is additionally exported:
30+
31+
* `firewall_fail_open` - Determines how DNS Firewall operates during failures, for example when all traffic that is sent to DNS Firewall fails to receive a reply.
32+
* `id` - The ID of the firewall configuration.
33+
* `owner_id` - The Amazon Web Services account ID of the owner of the VPC that this firewall configuration applies to.

0 commit comments

Comments
 (0)