github.com/GoogleCloudPlatform/terraformer@v0.8.18/providers/aws/waf_regional.go (about) 1 // Copyright 2020 The Terraformer Authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package aws 16 17 import ( 18 "context" 19 20 "github.com/GoogleCloudPlatform/terraformer/terraformutils" 21 "github.com/aws/aws-sdk-go-v2/service/wafregional" 22 ) 23 24 type WafRegionalGenerator struct { 25 AWSService 26 } 27 28 func (g *WafRegionalGenerator) InitResources() error { 29 config, e := g.generateConfig() 30 if e != nil { 31 return e 32 } 33 svc := wafregional.NewFromConfig(config) 34 35 if err := g.loadWebACL(svc); err != nil { 36 return err 37 } 38 // AWS WAF Regional API doesn't provide API to build aws_wafregional_web_acl_association resources 39 if err := g.loadByteMatchSet(svc); err != nil { 40 return err 41 } 42 if err := g.loadGeoMatchSet(svc); err != nil { 43 return err 44 } 45 if err := g.loadIPSet(svc); err != nil { 46 return err 47 } 48 if err := g.loadRateBasedRules(svc); err != nil { 49 return err 50 } 51 if err := g.loadRegexMatchSets(svc); err != nil { 52 return err 53 } 54 if err := g.loadRegexPatternSets(svc); err != nil { 55 return err 56 } 57 if err := g.loadWafRules(svc); err != nil { 58 return err 59 } 60 if err := g.loadWafRuleGroups(svc); err != nil { 61 return err 62 } 63 if err := g.loadSizeConstraintSets(svc); err != nil { 64 return err 65 } 66 if err := g.loadSQLInjectionMatchSets(svc); err != nil { 67 return err 68 } 69 if err := g.loadXSSMatchSet(svc); err != nil { 70 return err 71 } 72 73 return nil 74 } 75 76 func (g *WafRegionalGenerator) loadWebACL(svc *wafregional.Client) error { 77 output, err := svc.ListWebACLs(context.TODO(), &wafregional.ListWebACLsInput{}) 78 if err != nil { 79 return err 80 } 81 for _, acl := range output.WebACLs { 82 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 83 *acl.WebACLId, 84 *acl.Name+"_"+(*acl.WebACLId)[0:8], 85 "aws_wafregional_web_acl", 86 "aws", 87 wafAllowEmptyValues)) 88 } 89 return nil 90 } 91 92 func (g *WafRegionalGenerator) loadByteMatchSet(svc *wafregional.Client) error { 93 output, err := svc.ListByteMatchSets(context.TODO(), &wafregional.ListByteMatchSetsInput{}) 94 if err != nil { 95 return err 96 } 97 for _, byteMatchSet := range output.ByteMatchSets { 98 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 99 *byteMatchSet.ByteMatchSetId, 100 *byteMatchSet.Name+"_"+(*byteMatchSet.ByteMatchSetId)[0:8], 101 "aws_wafregional_byte_match_set", 102 "aws", 103 wafAllowEmptyValues)) 104 } 105 return nil 106 } 107 108 func (g *WafRegionalGenerator) loadGeoMatchSet(svc *wafregional.Client) error { 109 output, err := svc.ListGeoMatchSets(context.TODO(), &wafregional.ListGeoMatchSetsInput{}) 110 if err != nil { 111 return err 112 } 113 for _, matchSet := range output.GeoMatchSets { 114 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 115 *matchSet.GeoMatchSetId, 116 *matchSet.Name+"_"+(*matchSet.GeoMatchSetId)[0:8], 117 "aws_wafregional_geo_match_set", 118 "aws", 119 wafAllowEmptyValues)) 120 } 121 return nil 122 } 123 124 func (g *WafRegionalGenerator) loadIPSet(svc *wafregional.Client) error { 125 output, err := svc.ListIPSets(context.TODO(), &wafregional.ListIPSetsInput{}) 126 if err != nil { 127 return err 128 } 129 for _, IPSet := range output.IPSets { 130 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 131 *IPSet.IPSetId, 132 *IPSet.Name+"_"+(*IPSet.IPSetId)[0:8], 133 "aws_wafregional_ipset", 134 "aws", 135 wafAllowEmptyValues)) 136 } 137 return nil 138 } 139 140 func (g *WafRegionalGenerator) loadRateBasedRules(svc *wafregional.Client) error { 141 output, err := svc.ListRateBasedRules(context.TODO(), &wafregional.ListRateBasedRulesInput{}) 142 if err != nil { 143 return err 144 } 145 for _, rule := range output.Rules { 146 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 147 *rule.RuleId, 148 *rule.Name+"_"+(*rule.RuleId)[0:8], 149 "aws_wafregional_rate_based_rule", 150 "aws", 151 wafAllowEmptyValues)) 152 } 153 return nil 154 } 155 156 func (g *WafRegionalGenerator) loadRegexMatchSets(svc *wafregional.Client) error { 157 output, err := svc.ListRegexMatchSets(context.TODO(), &wafregional.ListRegexMatchSetsInput{}) 158 if err != nil { 159 return err 160 } 161 for _, regexMatchSet := range output.RegexMatchSets { 162 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 163 *regexMatchSet.RegexMatchSetId, 164 *regexMatchSet.Name+"_"+(*regexMatchSet.RegexMatchSetId)[0:8], 165 "aws_wafregional_regex_match_set", 166 "aws", 167 wafAllowEmptyValues)) 168 } 169 return nil 170 } 171 172 func (g *WafRegionalGenerator) loadRegexPatternSets(svc *wafregional.Client) error { 173 output, err := svc.ListRegexPatternSets(context.TODO(), &wafregional.ListRegexPatternSetsInput{}) 174 if err != nil { 175 return err 176 } 177 for _, regexPatternSet := range output.RegexPatternSets { 178 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 179 *regexPatternSet.RegexPatternSetId, 180 *regexPatternSet.Name+"_"+(*regexPatternSet.RegexPatternSetId)[0:8], 181 "aws_wafregional_regex_pattern_set", 182 "aws", 183 wafAllowEmptyValues)) 184 } 185 return nil 186 } 187 188 func (g *WafRegionalGenerator) loadWafRules(svc *wafregional.Client) error { 189 output, err := svc.ListRules(context.TODO(), &wafregional.ListRulesInput{}) 190 if err != nil { 191 return err 192 } 193 for _, rule := range output.Rules { 194 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 195 *rule.RuleId, 196 *rule.Name+"_"+(*rule.RuleId)[0:8], 197 "aws_wafregional_rule", 198 "aws", 199 wafAllowEmptyValues)) 200 } 201 return nil 202 } 203 204 func (g *WafRegionalGenerator) loadWafRuleGroups(svc *wafregional.Client) error { 205 output, err := svc.ListRuleGroups(context.TODO(), &wafregional.ListRuleGroupsInput{}) 206 if err != nil { 207 return err 208 } 209 for _, ruleGroup := range output.RuleGroups { 210 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 211 *ruleGroup.RuleGroupId, 212 *ruleGroup.Name+"_"+(*ruleGroup.RuleGroupId)[0:8], 213 "aws_wafregional_rule_group", 214 "aws", 215 wafAllowEmptyValues)) 216 } 217 return nil 218 } 219 220 func (g *WafRegionalGenerator) loadSizeConstraintSets(svc *wafregional.Client) error { 221 output, err := svc.ListSizeConstraintSets(context.TODO(), &wafregional.ListSizeConstraintSetsInput{}) 222 if err != nil { 223 return err 224 } 225 for _, sizeConstraintSet := range output.SizeConstraintSets { 226 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 227 *sizeConstraintSet.SizeConstraintSetId, 228 *sizeConstraintSet.Name+"_"+(*sizeConstraintSet.SizeConstraintSetId)[0:8], 229 "aws_wafregional_size_constraint_set", 230 "aws", 231 wafAllowEmptyValues)) 232 } 233 return nil 234 } 235 236 func (g *WafRegionalGenerator) loadSQLInjectionMatchSets(svc *wafregional.Client) error { 237 output, err := svc.ListSqlInjectionMatchSets(context.TODO(), &wafregional.ListSqlInjectionMatchSetsInput{}) 238 if err != nil { 239 return err 240 } 241 for _, sqlInjectionMatchSet := range output.SqlInjectionMatchSets { 242 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 243 *sqlInjectionMatchSet.SqlInjectionMatchSetId, 244 *sqlInjectionMatchSet.Name+"_"+(*sqlInjectionMatchSet.SqlInjectionMatchSetId)[0:8], 245 "aws_wafregional_sql_injection_match_set", 246 "aws", 247 wafAllowEmptyValues)) 248 } 249 return nil 250 } 251 252 func (g *WafRegionalGenerator) loadXSSMatchSet(svc *wafregional.Client) error { 253 output, err := svc.ListXssMatchSets(context.TODO(), &wafregional.ListXssMatchSetsInput{}) 254 if err != nil { 255 return err 256 } 257 for _, xssMatchSet := range output.XssMatchSets { 258 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 259 *xssMatchSet.XssMatchSetId, 260 *xssMatchSet.Name+"_"+(*xssMatchSet.XssMatchSetId)[0:8], 261 "aws_wafregional_xss_match_set", 262 "aws", 263 wafAllowEmptyValues)) 264 } 265 return nil 266 }