From 8244dd39f33feaa6d9143d58b73c250f76a62947 Mon Sep 17 00:00:00 2001
From: SevenEarth <391613297@qq.com>
Date: Thu, 8 May 2025 14:49:01 +0800
Subject: [PATCH 1/3] add
---
tencentcloud/provider.go | 1 +
tencentcloud/provider.md | 1 +
.../waf/resource_tc_waf_domain_post_action.go | 144 ++++++++++++++++++
.../waf/resource_tc_waf_domain_post_action.md | 19 +++
...resource_tc_waf_domain_post_action_test.go | 60 ++++++++
.../services/waf/service_tencentcloud_waf.go | 62 ++++++++
.../r/waf_domain_post_action.html.markdown | 47 ++++++
website/tencentcloud.erb | 3 +
8 files changed, 337 insertions(+)
create mode 100644 tencentcloud/services/waf/resource_tc_waf_domain_post_action.go
create mode 100644 tencentcloud/services/waf/resource_tc_waf_domain_post_action.md
create mode 100644 tencentcloud/services/waf/resource_tc_waf_domain_post_action_test.go
create mode 100644 website/docs/r/waf_domain_post_action.html.markdown
diff --git a/tencentcloud/provider.go b/tencentcloud/provider.go
index f6f1647a51..acd084056a 100644
--- a/tencentcloud/provider.go
+++ b/tencentcloud/provider.go
@@ -2238,6 +2238,7 @@ func Provider() *schema.Provider {
"tencentcloud_waf_ip_access_control_v2": waf.ResourceTencentCloudWafIpAccessControlV2(),
"tencentcloud_waf_log_post_cls_flow": waf.ResourceTencentCloudWafLogPostClsFlow(),
"tencentcloud_waf_log_post_ckafka_flow": waf.ResourceTencentCloudWafLogPostCkafkaFlow(),
+ "tencentcloud_waf_domain_post_action": waf.ResourceTencentCloudWafDomainPostAction(),
"tencentcloud_wedata_rule_template": wedata.ResourceTencentCloudWedataRuleTemplate(),
"tencentcloud_wedata_datasource": wedata.ResourceTencentCloudWedataDatasource(),
"tencentcloud_wedata_function": wedata.ResourceTencentCloudWedataFunction(),
diff --git a/tencentcloud/provider.md b/tencentcloud/provider.md
index f579040538..179ddcae64 100644
--- a/tencentcloud/provider.md
+++ b/tencentcloud/provider.md
@@ -2183,6 +2183,7 @@ tencentcloud_waf_ip_access_control
tencentcloud_waf_ip_access_control_v2
tencentcloud_waf_log_post_cls_flow
tencentcloud_waf_log_post_ckafka_flow
+tencentcloud_waf_domain_post_action
Wedata
Data Source
diff --git a/tencentcloud/services/waf/resource_tc_waf_domain_post_action.go b/tencentcloud/services/waf/resource_tc_waf_domain_post_action.go
new file mode 100644
index 0000000000..1ac0bfd203
--- /dev/null
+++ b/tencentcloud/services/waf/resource_tc_waf_domain_post_action.go
@@ -0,0 +1,144 @@
+package waf
+
+import (
+ "context"
+ "log"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
+ wafv20180125 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125"
+
+ tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
+ "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
+)
+
+func ResourceTencentCloudWafDomainPostAction() *schema.Resource {
+ return &schema.Resource{
+ Create: resourceTencentCloudWafDomainPostActionCreate,
+ Read: resourceTencentCloudWafDomainPostActionRead,
+ Update: resourceTencentCloudWafDomainPostActionUpdate,
+ Delete: resourceTencentCloudWafDomainPostActionDelete,
+ Importer: &schema.ResourceImporter{
+ State: schema.ImportStatePassthrough,
+ },
+ Schema: map[string]*schema.Schema{
+ "domain": {
+ Type: schema.TypeString,
+ Required: true,
+ ForceNew: true,
+ Description: "Domain.",
+ },
+
+ "post_cls_action": {
+ Type: schema.TypeInt,
+ Required: true,
+ ValidateFunc: tccommon.ValidateAllowedIntValue([]int{0, 1}),
+ Description: "0- Disable shipping, 1- Enable shipping.",
+ },
+
+ "post_ckafka_action": {
+ Type: schema.TypeInt,
+ Required: true,
+ ValidateFunc: tccommon.ValidateAllowedIntValue([]int{0, 1}),
+ Description: "0- Disable shipping, 1- Enable shipping.",
+ },
+ },
+ }
+}
+
+func resourceTencentCloudWafDomainPostActionCreate(d *schema.ResourceData, meta interface{}) error {
+ defer tccommon.LogElapsed("resource.tencentcloud_waf_domain_post_action.create")()
+ defer tccommon.InconsistentCheck(d, meta)()
+
+ var domain string
+ if v, ok := d.GetOk("domain"); ok {
+ domain = v.(string)
+ }
+
+ d.SetId(domain)
+
+ return resourceTencentCloudWafDomainPostActionUpdate(d, meta)
+}
+
+func resourceTencentCloudWafDomainPostActionRead(d *schema.ResourceData, meta interface{}) error {
+ defer tccommon.LogElapsed("resource.tencentcloud_waf_domain_post_action.read")()
+ defer tccommon.InconsistentCheck(d, meta)()
+
+ var (
+ logId = tccommon.GetLogId(tccommon.ContextNil)
+ ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
+ service = WafService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
+ domain = d.Id()
+ )
+
+ respData, err := service.DescribeWafDomainPostActionById(ctx, domain)
+ if err != nil {
+ return err
+ }
+
+ if respData == nil {
+ d.SetId("")
+ log.Printf("[WARN]%s resource `waf_domain_post_action` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
+ return nil
+ }
+
+ _ = d.Set("domain", domain)
+
+ for _, item := range respData {
+ if item.PostCLSStatus != nil {
+ _ = d.Set("post_cls_action", item.PostCLSStatus)
+ }
+
+ if item.PostCKafkaStatus != nil {
+ _ = d.Set("post_ckafka_action", item.PostCKafkaStatus)
+ }
+ }
+
+ return nil
+}
+
+func resourceTencentCloudWafDomainPostActionUpdate(d *schema.ResourceData, meta interface{}) error {
+ defer tccommon.LogElapsed("resource.tencentcloud_waf_domain_post_action.update")()
+ defer tccommon.InconsistentCheck(d, meta)()
+
+ var (
+ logId = tccommon.GetLogId(tccommon.ContextNil)
+ ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
+ request = wafv20180125.NewModifyDomainPostActionRequest()
+ domain = d.Id()
+ )
+
+ if v, ok := d.GetOkExists("post_cls_action"); ok {
+ request.PostCLSAction = helper.IntInt64(v.(int))
+ }
+
+ if v, ok := d.GetOkExists("post_ckafka_action"); ok {
+ request.PostCKafkaAction = helper.IntInt64(v.(int))
+ }
+
+ request.Domain = &domain
+ reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
+ result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseWafV20180125Client().ModifyDomainPostActionWithContext(ctx, request)
+ if e != nil {
+ return tccommon.RetryError(e)
+ } else {
+ log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
+ }
+
+ return nil
+ })
+
+ if reqErr != nil {
+ log.Printf("[CRITAL]%s update waf domain post action failed, reason:%+v", logId, reqErr)
+ return reqErr
+ }
+
+ return resourceTencentCloudWafDomainPostActionRead(d, meta)
+}
+
+func resourceTencentCloudWafDomainPostActionDelete(d *schema.ResourceData, meta interface{}) error {
+ defer tccommon.LogElapsed("resource.tencentcloud_waf_domain_post_action.delete")()
+ defer tccommon.InconsistentCheck(d, meta)()
+
+ return nil
+}
diff --git a/tencentcloud/services/waf/resource_tc_waf_domain_post_action.md b/tencentcloud/services/waf/resource_tc_waf_domain_post_action.md
new file mode 100644
index 0000000000..6ef2b54d3a
--- /dev/null
+++ b/tencentcloud/services/waf/resource_tc_waf_domain_post_action.md
@@ -0,0 +1,19 @@
+Provides a resource to create a WAF domain post action
+
+Example Usage
+
+```hcl
+resource "tencentcloud_waf_domain_post_action" "example" {
+ domain = "example.com"
+ post_cls_action = 1
+ post_ckafka_action = 0
+}
+```
+
+Import
+
+WAF domain post action can be imported using the id, e.g.
+
+```
+terraform import tencentcloud_waf_domain_post_action.example example.com
+```
diff --git a/tencentcloud/services/waf/resource_tc_waf_domain_post_action_test.go b/tencentcloud/services/waf/resource_tc_waf_domain_post_action_test.go
new file mode 100644
index 0000000000..102d808cae
--- /dev/null
+++ b/tencentcloud/services/waf/resource_tc_waf_domain_post_action_test.go
@@ -0,0 +1,60 @@
+package waf_test
+
+import (
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+
+ tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest"
+)
+
+func TestAccTencentCloudWafDomainPostActionResource_basic(t *testing.T) {
+ t.Parallel()
+ resource.Test(t, resource.TestCase{
+ PreCheck: func() {
+ tcacctest.AccPreCheck(t)
+ },
+ Providers: tcacctest.AccProviders,
+ Steps: []resource.TestStep{
+ {
+ Config: testAccWafDomainPostAction,
+ Check: resource.ComposeTestCheckFunc(
+ resource.TestCheckResourceAttrSet("tencentcloud_waf_domain_post_action.example", "id"),
+ resource.TestCheckResourceAttrSet("tencentcloud_waf_domain_post_action.example", "domain"),
+ resource.TestCheckResourceAttrSet("tencentcloud_waf_domain_post_action.example", "post_cls_action"),
+ resource.TestCheckResourceAttrSet("tencentcloud_waf_domain_post_action.example", "post_ckafka_action"),
+ ),
+ },
+ {
+ Config: testAccWafDomainPostActionUpdate,
+ Check: resource.ComposeTestCheckFunc(
+ resource.TestCheckResourceAttrSet("tencentcloud_waf_domain_post_action.example", "id"),
+ resource.TestCheckResourceAttrSet("tencentcloud_waf_domain_post_action.example", "domain"),
+ resource.TestCheckResourceAttrSet("tencentcloud_waf_domain_post_action.example", "post_cls_action"),
+ resource.TestCheckResourceAttrSet("tencentcloud_waf_domain_post_action.example", "post_ckafka_action"),
+ ),
+ },
+ {
+ ResourceName: "tencentcloud_waf_domain_post_action.example",
+ ImportState: true,
+ ImportStateVerify: true,
+ },
+ },
+ })
+}
+
+const testAccWafDomainPostAction = `
+resource "tencentcloud_waf_domain_post_action" "example" {
+ domain = "example.com"
+ post_cls_action = 1
+ post_ckafka_action = 0
+}
+`
+
+const testAccWafDomainPostActionUpdate = `
+resource "tencentcloud_waf_domain_post_action" "example" {
+ domain = "example.com"
+ post_cls_action = 0
+ post_ckafka_action = 1
+}
+`
diff --git a/tencentcloud/services/waf/service_tencentcloud_waf.go b/tencentcloud/services/waf/service_tencentcloud_waf.go
index 3f9e8c77a4..364322d2ec 100644
--- a/tencentcloud/services/waf/service_tencentcloud_waf.go
+++ b/tencentcloud/services/waf/service_tencentcloud_waf.go
@@ -1582,3 +1582,65 @@ func (me *WafService) DescribeWafLogPostCkafkaFlowById(ctx context.Context, logT
ret = response.Response
return
}
+
+func (me *WafService) DescribeWafDomainPostActionById(ctx context.Context, domain string) (domains []*waf.DomainInfo, errRet error) {
+ logId := tccommon.GetLogId(ctx)
+
+ request := waf.NewDescribeDomainsRequest()
+ response := waf.NewDescribeDomainsResponse()
+ tmpFilter := []*waf.FiltersItemNew{}
+ if domain != "" {
+ tmpFilter = append(tmpFilter, &waf.FiltersItemNew{
+ Name: common.StringPtr("Domain"),
+ Values: common.StringPtrs([]string{domain}),
+ ExactMatch: common.BoolPtr(true),
+ })
+ }
+
+ request.Filters = tmpFilter
+
+ defer func() {
+ if errRet != nil {
+ log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error())
+ }
+ }()
+
+ var (
+ offset uint64 = 0
+ limit uint64 = 20
+ )
+ for {
+ request.Offset = &offset
+ request.Limit = &limit
+ err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
+ ratelimit.Check(request.GetAction())
+ result, e := me.client.UseWafV20180125Client().DescribeDomains(request)
+ if e != nil {
+ return tccommon.RetryError(e)
+ } else {
+ log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
+ }
+
+ response = result
+ return nil
+ })
+
+ if err != nil {
+ errRet = err
+ return
+ }
+
+ if response == nil || len(response.Response.Domains) < 1 {
+ break
+ }
+
+ domains = append(domains, response.Response.Domains...)
+ if len(response.Response.Domains) < int(limit) {
+ break
+ }
+
+ offset += limit
+ }
+
+ return
+}
diff --git a/website/docs/r/waf_domain_post_action.html.markdown b/website/docs/r/waf_domain_post_action.html.markdown
new file mode 100644
index 0000000000..3197a9e9ed
--- /dev/null
+++ b/website/docs/r/waf_domain_post_action.html.markdown
@@ -0,0 +1,47 @@
+---
+subcategory: "Web Application Firewall(WAF)"
+layout: "tencentcloud"
+page_title: "TencentCloud: tencentcloud_waf_domain_post_action"
+sidebar_current: "docs-tencentcloud-resource-waf_domain_post_action"
+description: |-
+ Provides a resource to create a WAF domain post action
+---
+
+# tencentcloud_waf_domain_post_action
+
+Provides a resource to create a WAF domain post action
+
+## Example Usage
+
+```hcl
+resource "tencentcloud_waf_domain_post_action" "example" {
+ domain = "example.com"
+ post_cls_action = 1
+ post_ckafka_action = 0
+}
+```
+
+## Argument Reference
+
+The following arguments are supported:
+
+* `domain` - (Required, String, ForceNew) Domain.
+* `post_ckafka_action` - (Required, Int) 0- Disable shipping, 1- Enable shipping.
+* `post_cls_action` - (Required, Int) 0- Disable shipping, 1- Enable shipping.
+
+## Attributes Reference
+
+In addition to all arguments above, the following attributes are exported:
+
+* `id` - ID of the resource.
+
+
+
+## Import
+
+WAF domain post action can be imported using the id, e.g.
+
+```
+terraform import tencentcloud_waf_domain_post_action.example example.com
+```
+
diff --git a/website/tencentcloud.erb b/website/tencentcloud.erb
index 6588ec471e..845d7d8d61 100644
--- a/website/tencentcloud.erb
+++ b/website/tencentcloud.erb
@@ -6850,6 +6850,9 @@
tencentcloud_waf_custom_white_rule
+
+ tencentcloud_waf_domain_post_action
+
tencentcloud_waf_ip_access_control
From 91e4d0880ad26efd59f379d4cebf2f9d0c6784f7 Mon Sep 17 00:00:00 2001
From: SevenEarth <391613297@qq.com>
Date: Mon, 12 May 2025 16:06:26 +0800
Subject: [PATCH 2/3] add
---
go.mod | 4 +-
go.sum | 6 +
tencentcloud/provider.go | 1 +
tencentcloud/provider.md | 1 +
.../waf/resource_tc_waf_clb_instance.go | 4 +
.../waf/resource_tc_waf_domain_post_action.go | 2 +-
...esource_tc_waf_instance_attack_log_post.go | 127 ++++++++++++++++++
...esource_tc_waf_instance_attack_log_post.md | 20 +++
...ce_tc_waf_instance_attack_log_post_test.go | 56 ++++++++
.../waf/resource_tc_waf_saas_instance.go | 4 +
.../services/waf/service_tencentcloud_waf.go | 62 ++++++++-
.../tencentcloud/common/http/request.go | 2 +-
.../tencentcloud/waf/v20180125/client.go | 73 ++++++++++
.../tencentcloud/waf/v20180125/models.go | 61 +++++++++
vendor/modules.txt | 4 +-
...waf_instance_attack_log_post.html.markdown | 47 +++++++
website/tencentcloud.erb | 3 +
17 files changed, 467 insertions(+), 10 deletions(-)
create mode 100644 tencentcloud/services/waf/resource_tc_waf_instance_attack_log_post.go
create mode 100644 tencentcloud/services/waf/resource_tc_waf_instance_attack_log_post.md
create mode 100644 tencentcloud/services/waf/resource_tc_waf_instance_attack_log_post_test.go
create mode 100644 website/docs/r/waf_instance_attack_log_post.html.markdown
diff --git a/go.mod b/go.mod
index 8b5d9ca919..4c6e8b14de 100644
--- a/go.mod
+++ b/go.mod
@@ -46,7 +46,7 @@ require (
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.1107
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.1033
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.1148
- github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1161
+ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1162
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.1153
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.1161
@@ -97,7 +97,7 @@ require (
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tsf v1.0.674
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.860
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.1154
- github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1149
+ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1162
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.0.792
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss v1.0.199
github.com/tencentyun/cos-go-sdk-v5 v0.7.64
diff --git a/go.sum b/go.sum
index 2a799e5574..b89924ddcb 100644
--- a/go.sum
+++ b/go.sum
@@ -971,6 +971,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1159 h1:Jl1
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1159/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1161 h1:S4dJSWhOtaPjp0/GO/yhzUC6DfZvpWhrnsEKaLxr73c=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1161/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1162 h1:bscCBygP9JRl6iNabF+vmBOhY+xayFFGYV5Wa0NzH0A=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1162/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993 h1:WlPgXldQCxt7qi5Xrc6j6zTrsXWzN5BcOGs7Irq7fwQ=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993/go.mod h1:Z9U8zNtyuyKhjS0698wqsrG/kLx1TQ5CEixXBwVe7xY=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860 h1:F3esKBIT3HW9+7Gt8cVgf8X06VdGIczpgLBUECzSEzU=
@@ -1119,6 +1121,10 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1148 h1:ILcBbO
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1148/go.mod h1:1n+Jj71KPI+7oeySg5l9+JopaMgsIqA0y9ATSi4nx0k=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1149 h1:SOrBtPoCjS8Jsq1dHa2Ul+ZUPP/vT6j/dJN/08ZEMHM=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1149/go.mod h1:6e3sb0k9K8kWQdB/WVXVrZxyYxrSC8hN4MWpzYRR80s=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1161 h1:7eXR3p6ZmggYE7GIvN/FbIg1ESh+LxJWbb0LV4oapnQ=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1161/go.mod h1:v3l7e0+48bKOFo8V/KLLDtegi0H7zLDqGKLMdqNPblI=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1162 h1:gnmuUaoFAShc9FKj3Omswu3n08bHM/sGsl8xjFAkFNs=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1162/go.mod h1:bu3KAFeoJ1xDGQp72h9Le3FqbOcCcdomOUig3OqgcE4=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.0.792 h1:NLgKNOIHWa38AmW7dyfI9Jlcp2Kr9VRD94f48pPNmxM=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.0.792/go.mod h1:Xz6vPV3gHlzPwtEcmWdWO1EUXJDgn2p7UMCXbJiVioQ=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss v1.0.199 h1:hMBLtiJPnZ9GvA677cTB6ELBR6B68wCR2QY1sNoGQc4=
diff --git a/tencentcloud/provider.go b/tencentcloud/provider.go
index acd084056a..a7ea730de6 100644
--- a/tencentcloud/provider.go
+++ b/tencentcloud/provider.go
@@ -2239,6 +2239,7 @@ func Provider() *schema.Provider {
"tencentcloud_waf_log_post_cls_flow": waf.ResourceTencentCloudWafLogPostClsFlow(),
"tencentcloud_waf_log_post_ckafka_flow": waf.ResourceTencentCloudWafLogPostCkafkaFlow(),
"tencentcloud_waf_domain_post_action": waf.ResourceTencentCloudWafDomainPostAction(),
+ "tencentcloud_waf_instance_attack_log_post": waf.ResourceTencentCloudWafInstanceAttackLogPost(),
"tencentcloud_wedata_rule_template": wedata.ResourceTencentCloudWedataRuleTemplate(),
"tencentcloud_wedata_datasource": wedata.ResourceTencentCloudWedataDatasource(),
"tencentcloud_wedata_function": wedata.ResourceTencentCloudWedataFunction(),
diff --git a/tencentcloud/provider.md b/tencentcloud/provider.md
index 179ddcae64..49f79a6910 100644
--- a/tencentcloud/provider.md
+++ b/tencentcloud/provider.md
@@ -2184,6 +2184,7 @@ tencentcloud_waf_ip_access_control_v2
tencentcloud_waf_log_post_cls_flow
tencentcloud_waf_log_post_ckafka_flow
tencentcloud_waf_domain_post_action
+tencentcloud_waf_instance_attack_log_post
Wedata
Data Source
diff --git a/tencentcloud/services/waf/resource_tc_waf_clb_instance.go b/tencentcloud/services/waf/resource_tc_waf_clb_instance.go
index 681796fa1c..19b48ecf35 100644
--- a/tencentcloud/services/waf/resource_tc_waf_clb_instance.go
+++ b/tencentcloud/services/waf/resource_tc_waf_clb_instance.go
@@ -313,6 +313,10 @@ func resourceTencentCloudWafClbInstanceCreate(d *schema.ResourceData, meta inter
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
}
+ if result == nil || result.Response == nil {
+ return resource.NonRetryableError(fmt.Errorf("Create waf clb instance failed, Response is nil."))
+ }
+
if *result.Response.Status == 0 || *result.Response.InstanceId == "" {
return resource.NonRetryableError(fmt.Errorf("create waf clb instance status error: %s", *result.Response.ReturnMessage))
}
diff --git a/tencentcloud/services/waf/resource_tc_waf_domain_post_action.go b/tencentcloud/services/waf/resource_tc_waf_domain_post_action.go
index 1ac0bfd203..0e664561e4 100644
--- a/tencentcloud/services/waf/resource_tc_waf_domain_post_action.go
+++ b/tencentcloud/services/waf/resource_tc_waf_domain_post_action.go
@@ -76,7 +76,7 @@ func resourceTencentCloudWafDomainPostActionRead(d *schema.ResourceData, meta in
return err
}
- if respData == nil {
+ if respData == nil || len(respData) < 1 {
d.SetId("")
log.Printf("[WARN]%s resource `waf_domain_post_action` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
return nil
diff --git a/tencentcloud/services/waf/resource_tc_waf_instance_attack_log_post.go b/tencentcloud/services/waf/resource_tc_waf_instance_attack_log_post.go
new file mode 100644
index 0000000000..e40503aeb3
--- /dev/null
+++ b/tencentcloud/services/waf/resource_tc_waf_instance_attack_log_post.go
@@ -0,0 +1,127 @@
+package waf
+
+import (
+ "context"
+ "log"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
+ wafv20180125 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125"
+
+ tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
+ "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
+)
+
+func ResourceTencentCloudWafInstanceAttackLogPost() *schema.Resource {
+ return &schema.Resource{
+ Create: resourceTencentCloudWafInstanceAttackLogPostCreate,
+ Read: resourceTencentCloudWafInstanceAttackLogPostRead,
+ Update: resourceTencentCloudWafInstanceAttackLogPostUpdate,
+ Delete: resourceTencentCloudWafInstanceAttackLogPostDelete,
+ Importer: &schema.ResourceImporter{
+ State: schema.ImportStatePassthrough,
+ },
+ Schema: map[string]*schema.Schema{
+ "instance_id": {
+ Type: schema.TypeString,
+ Required: true,
+ ForceNew: true,
+ Description: "Waf instance ID.",
+ },
+
+ "attack_log_post": {
+ Type: schema.TypeInt,
+ Required: true,
+ ValidateFunc: tccommon.ValidateAllowedIntValue([]int{0, 1}),
+ Description: "Attack log delivery switch. 0- Disable, 1- Enable.",
+ },
+ },
+ }
+}
+
+func resourceTencentCloudWafInstanceAttackLogPostCreate(d *schema.ResourceData, meta interface{}) error {
+ defer tccommon.LogElapsed("resource.tencentcloud_waf_instance_attack_log_post.create")()
+ defer tccommon.InconsistentCheck(d, meta)()
+
+ var instanceId string
+ if v, ok := d.GetOk("instance_id"); ok {
+ instanceId = v.(string)
+ }
+
+ d.SetId(instanceId)
+
+ return resourceTencentCloudWafInstanceAttackLogPostUpdate(d, meta)
+}
+
+func resourceTencentCloudWafInstanceAttackLogPostRead(d *schema.ResourceData, meta interface{}) error {
+ defer tccommon.LogElapsed("resource.tencentcloud_waf_instance_attack_log_post.read")()
+ defer tccommon.InconsistentCheck(d, meta)()
+
+ var (
+ logId = tccommon.GetLogId(tccommon.ContextNil)
+ ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
+ service = WafService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
+ instanceId = d.Id()
+ )
+
+ respData, err := service.DescribeWafInstanceById(ctx, instanceId)
+ if err != nil {
+ return err
+ }
+
+ if respData == nil {
+ d.SetId("")
+ log.Printf("[WARN]%s resource `waf_instance_attack_log_post` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
+ return nil
+ }
+
+ _ = d.Set("instance_id", instanceId)
+
+ if respData.AttackLogPost != nil {
+ _ = d.Set("attack_log_post", respData.AttackLogPost)
+ }
+
+ return nil
+}
+
+func resourceTencentCloudWafInstanceAttackLogPostUpdate(d *schema.ResourceData, meta interface{}) error {
+ defer tccommon.LogElapsed("resource.tencentcloud_waf_instance_attack_log_post.update")()
+ defer tccommon.InconsistentCheck(d, meta)()
+
+ var (
+ logId = tccommon.GetLogId(tccommon.ContextNil)
+ ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
+ request = wafv20180125.NewModifyInstanceAttackLogPostRequest()
+ instanceId = d.Id()
+ )
+
+ if v, ok := d.GetOkExists("attack_log_post"); ok {
+ request.AttackLogPost = helper.IntInt64(v.(int))
+ }
+
+ request.InstanceId = &instanceId
+ reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
+ result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseWafV20180125Client().ModifyInstanceAttackLogPostWithContext(ctx, request)
+ if e != nil {
+ return tccommon.RetryError(e)
+ } else {
+ log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
+ }
+
+ return nil
+ })
+
+ if reqErr != nil {
+ log.Printf("[CRITAL]%s update waf instance attack log_post failed, reason:%+v", logId, reqErr)
+ return reqErr
+ }
+
+ return resourceTencentCloudWafInstanceAttackLogPostRead(d, meta)
+}
+
+func resourceTencentCloudWafInstanceAttackLogPostDelete(d *schema.ResourceData, meta interface{}) error {
+ defer tccommon.LogElapsed("resource.tencentcloud_waf_instance_attack_log_post.delete")()
+ defer tccommon.InconsistentCheck(d, meta)()
+
+ return nil
+}
diff --git a/tencentcloud/services/waf/resource_tc_waf_instance_attack_log_post.md b/tencentcloud/services/waf/resource_tc_waf_instance_attack_log_post.md
new file mode 100644
index 0000000000..248af60221
--- /dev/null
+++ b/tencentcloud/services/waf/resource_tc_waf_instance_attack_log_post.md
@@ -0,0 +1,20 @@
+Provides a resource to create a WAF instance attack log post
+
+~> **NOTE:** Only enterprise version and above are supported for activation
+
+Example Usage
+
+```hcl
+resource "tencentcloud_waf_instance_attack_log_post" "example" {
+ instance_id = "waf_2kxtlbky11b4wcrb"
+ attack_log_post = 1
+}
+```
+
+Import
+
+WAF instance attack log post can be imported using the id, e.g.
+
+```
+terraform import tencentcloud_waf_instance_attack_log_post.example waf_2kxtlbky11b4wcrb
+```
diff --git a/tencentcloud/services/waf/resource_tc_waf_instance_attack_log_post_test.go b/tencentcloud/services/waf/resource_tc_waf_instance_attack_log_post_test.go
new file mode 100644
index 0000000000..da62c2eeb8
--- /dev/null
+++ b/tencentcloud/services/waf/resource_tc_waf_instance_attack_log_post_test.go
@@ -0,0 +1,56 @@
+package waf_test
+
+import (
+ "testing"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
+
+ tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest"
+)
+
+func TestAccTencentCloudWafInstanceAttackLogPostResource_basic(t *testing.T) {
+ t.Parallel()
+ resource.Test(t, resource.TestCase{
+ PreCheck: func() {
+ tcacctest.AccPreCheck(t)
+ },
+ Providers: tcacctest.AccProviders,
+ Steps: []resource.TestStep{
+ {
+ Config: testAccWafInstanceAttackLogPost,
+ Check: resource.ComposeTestCheckFunc(
+ resource.TestCheckResourceAttrSet("tencentcloud_waf_instance_attack_log_post.example", "id"),
+ resource.TestCheckResourceAttrSet("tencentcloud_waf_instance_attack_log_post.example", "instance_id"),
+ resource.TestCheckResourceAttrSet("tencentcloud_waf_instance_attack_log_post.example", "attack_log_post"),
+ ),
+ },
+ {
+ Config: testAccWafInstanceAttackLogPostUpdate,
+ Check: resource.ComposeTestCheckFunc(
+ resource.TestCheckResourceAttrSet("tencentcloud_waf_instance_attack_log_post.example", "id"),
+ resource.TestCheckResourceAttrSet("tencentcloud_waf_instance_attack_log_post.example", "instance_id"),
+ resource.TestCheckResourceAttrSet("tencentcloud_waf_instance_attack_log_post.example", "attack_log_post"),
+ ),
+ },
+ {
+ ResourceName: "tencentcloud_waf_instance_attack_log_post.example",
+ ImportState: true,
+ ImportStateVerify: true,
+ },
+ },
+ })
+}
+
+const testAccWafInstanceAttackLogPost = `
+resource "tencentcloud_waf_instance_attack_log_post" "example" {
+ instance_id = "waf_2kxtlbky11b4wcrb"
+ attack_log_post = 1
+}
+`
+
+const testAccWafInstanceAttackLogPostUpdate = `
+resource "tencentcloud_waf_instance_attack_log_post" "example" {
+ instance_id = "waf_2kxtlbky11b4wcrb"
+ attack_log_post = 0
+}
+`
diff --git a/tencentcloud/services/waf/resource_tc_waf_saas_instance.go b/tencentcloud/services/waf/resource_tc_waf_saas_instance.go
index d1e12a6756..e087e9f1f3 100644
--- a/tencentcloud/services/waf/resource_tc_waf_saas_instance.go
+++ b/tencentcloud/services/waf/resource_tc_waf_saas_instance.go
@@ -346,6 +346,10 @@ func resourceTencentCloudWafSaasInstanceCreate(d *schema.ResourceData, meta inte
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
}
+ if result == nil || result.Response == nil {
+ return resource.NonRetryableError(fmt.Errorf("Create waf saas instance failed, Response is nil."))
+ }
+
if *result.Response.Status == 0 || *result.Response.InstanceId == "" {
return resource.NonRetryableError(fmt.Errorf("create waf saas instance status error: %s", *result.Response.ReturnMessage))
}
diff --git a/tencentcloud/services/waf/service_tencentcloud_waf.go b/tencentcloud/services/waf/service_tencentcloud_waf.go
index 364322d2ec..771607ab98 100644
--- a/tencentcloud/services/waf/service_tencentcloud_waf.go
+++ b/tencentcloud/services/waf/service_tencentcloud_waf.go
@@ -2,6 +2,7 @@ package waf
import (
"context"
+ "fmt"
"log"
"strconv"
@@ -590,6 +591,7 @@ func (me *WafService) DescribeWafInstanceById(ctx context.Context, instanceId st
logId := tccommon.GetLogId(ctx)
request := waf.NewDescribeInstancesRequest()
+ response := waf.NewDescribeInstancesResponse()
request.Offset = common.Uint64Ptr(1)
request.Limit = common.Uint64Ptr(20)
request.Filters = []*waf.FiltersItemNew{
@@ -606,17 +608,27 @@ func (me *WafService) DescribeWafInstanceById(ctx context.Context, instanceId st
}
}()
- ratelimit.Check(request.GetAction())
var iacExtInfo connectivity.IacExtInfo
iacExtInfo.InstanceId = instanceId
- response, err := me.client.UseWafClient(iacExtInfo).DescribeInstances(request)
+
+ err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
+ ratelimit.Check(request.GetAction())
+ result, e := me.client.UseWafClient(iacExtInfo).DescribeInstances(request)
+ if e != nil {
+ return tccommon.RetryError(e)
+ } else {
+ log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
+ }
+
+ response = result
+ return nil
+ })
+
if err != nil {
errRet = err
return
}
- log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
-
if len(response.Response.Instances) < 1 {
return
}
@@ -625,6 +637,48 @@ func (me *WafService) DescribeWafInstanceById(ctx context.Context, instanceId st
return
}
+func (me *WafService) DescribeWafInstanceWaitStatusById(ctx context.Context, instanceId string) error {
+ logId := tccommon.GetLogId(ctx)
+
+ request := waf.NewDescribeInstancesRequest()
+ request.Offset = common.Uint64Ptr(1)
+ request.Limit = common.Uint64Ptr(20)
+ request.Filters = []*waf.FiltersItemNew{
+ {
+ Name: common.StringPtr("InstanceId"),
+ Values: common.StringPtrs([]string{instanceId}),
+ ExactMatch: common.BoolPtr(true),
+ },
+ }
+
+ err := resource.Retry(tccommon.ReadRetryTimeout*10, func() *resource.RetryError {
+ ratelimit.Check(request.GetAction())
+ result, e := me.client.UseWafClient().DescribeInstances(request)
+ if e != nil {
+ return tccommon.RetryError(e)
+ } else {
+ log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
+ }
+
+ if result == nil || result.Response == nil || len(result.Response.Instances) < 1 {
+ return resource.NonRetryableError(fmt.Errorf("DescribeInstances response is nil."))
+ }
+
+ instance := result.Response.Instances[0]
+ if instance.Status != nil && *instance.Status == 0 {
+ return nil
+ }
+
+ return resource.RetryableError(fmt.Errorf("Waf instance still running, status is %d...", *instance.Status))
+ })
+
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
func (me *WafService) DescribeWafAttackLogHistogramByFilter(ctx context.Context, param map[string]interface{}) (AttackLogHistogram *waf.GetAttackHistogramResponseParams, errRet error) {
var (
logId = tccommon.GetLogId(ctx)
diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go
index 38c2dc3afa..788b771b86 100644
--- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go
+++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go
@@ -265,7 +265,7 @@ func CompleteCommonParams(request Request, region string, requestClient string)
params["Action"] = request.GetAction()
params["Timestamp"] = strconv.FormatInt(time.Now().Unix(), 10)
params["Nonce"] = strconv.Itoa(rand.Int())
- params["RequestClient"] = "SDK_GO_1.0.1161"
+ params["RequestClient"] = "SDK_GO_1.0.1162"
if requestClient != "" {
params["RequestClient"] += ": " + requestClient
}
diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/client.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/client.go
index 31ec5d4577..4312684a12 100644
--- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/client.go
+++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/client.go
@@ -9038,6 +9038,79 @@ func (c *Client) ModifyHostStatusWithContext(ctx context.Context, request *Modif
return
}
+func NewModifyInstanceAttackLogPostRequest() (request *ModifyInstanceAttackLogPostRequest) {
+ request = &ModifyInstanceAttackLogPostRequest{
+ BaseRequest: &tchttp.BaseRequest{},
+ }
+
+ request.Init().WithApiInfo("waf", APIVersion, "ModifyInstanceAttackLogPost")
+
+
+ return
+}
+
+func NewModifyInstanceAttackLogPostResponse() (response *ModifyInstanceAttackLogPostResponse) {
+ response = &ModifyInstanceAttackLogPostResponse{
+ BaseResponse: &tchttp.BaseResponse{},
+ }
+ return
+
+}
+
+// ModifyInstanceAttackLogPost
+// 修改实例攻击日志投递开关,企业版及以上版本可以开通,否则返回错误
+//
+// 可能返回的错误码:
+// FAILEDOPERATION = "FailedOperation"
+// INTERNALERROR = "InternalError"
+// INVALIDPARAMETER = "InvalidParameter"
+// INVALIDPARAMETERVALUE = "InvalidParameterValue"
+// LIMITEXCEEDED = "LimitExceeded"
+// MISSINGPARAMETER = "MissingParameter"
+// RESOURCEINUSE = "ResourceInUse"
+// RESOURCEINSUFFICIENT = "ResourceInsufficient"
+// RESOURCENOTFOUND = "ResourceNotFound"
+// RESOURCEUNAVAILABLE = "ResourceUnavailable"
+// RESOURCESSOLDOUT = "ResourcesSoldOut"
+// UNAUTHORIZEDOPERATION = "UnauthorizedOperation"
+// UNKNOWNPARAMETER = "UnknownParameter"
+func (c *Client) ModifyInstanceAttackLogPost(request *ModifyInstanceAttackLogPostRequest) (response *ModifyInstanceAttackLogPostResponse, err error) {
+ return c.ModifyInstanceAttackLogPostWithContext(context.Background(), request)
+}
+
+// ModifyInstanceAttackLogPost
+// 修改实例攻击日志投递开关,企业版及以上版本可以开通,否则返回错误
+//
+// 可能返回的错误码:
+// FAILEDOPERATION = "FailedOperation"
+// INTERNALERROR = "InternalError"
+// INVALIDPARAMETER = "InvalidParameter"
+// INVALIDPARAMETERVALUE = "InvalidParameterValue"
+// LIMITEXCEEDED = "LimitExceeded"
+// MISSINGPARAMETER = "MissingParameter"
+// RESOURCEINUSE = "ResourceInUse"
+// RESOURCEINSUFFICIENT = "ResourceInsufficient"
+// RESOURCENOTFOUND = "ResourceNotFound"
+// RESOURCEUNAVAILABLE = "ResourceUnavailable"
+// RESOURCESSOLDOUT = "ResourcesSoldOut"
+// UNAUTHORIZEDOPERATION = "UnauthorizedOperation"
+// UNKNOWNPARAMETER = "UnknownParameter"
+func (c *Client) ModifyInstanceAttackLogPostWithContext(ctx context.Context, request *ModifyInstanceAttackLogPostRequest) (response *ModifyInstanceAttackLogPostResponse, err error) {
+ if request == nil {
+ request = NewModifyInstanceAttackLogPostRequest()
+ }
+
+ if c.GetCredential() == nil {
+ return nil, errors.New("ModifyInstanceAttackLogPost require credential")
+ }
+
+ request.SetContext(ctx)
+
+ response = NewModifyInstanceAttackLogPostResponse()
+ err = c.Send(request, response)
+ return
+}
+
func NewModifyInstanceElasticModeRequest() (request *ModifyInstanceElasticModeRequest) {
request = &ModifyInstanceElasticModeRequest{
BaseRequest: &tchttp.BaseRequest{},
diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/models.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/models.go
index 73004719c9..e8bc0ae860 100644
--- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/models.go
+++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/models.go
@@ -14209,6 +14209,67 @@ func (r *ModifyHostStatusResponse) FromJsonString(s string) error {
return json.Unmarshal([]byte(s), &r)
}
+// Predefined struct for user
+type ModifyInstanceAttackLogPostRequestParams struct {
+ // 实例ID
+ InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
+
+ // 攻击日志投递开关
+ AttackLogPost *int64 `json:"AttackLogPost,omitnil,omitempty" name:"AttackLogPost"`
+}
+
+type ModifyInstanceAttackLogPostRequest struct {
+ *tchttp.BaseRequest
+
+ // 实例ID
+ InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
+
+ // 攻击日志投递开关
+ AttackLogPost *int64 `json:"AttackLogPost,omitnil,omitempty" name:"AttackLogPost"`
+}
+
+func (r *ModifyInstanceAttackLogPostRequest) ToJsonString() string {
+ b, _ := json.Marshal(r)
+ return string(b)
+}
+
+// FromJsonString It is highly **NOT** recommended to use this function
+// because it has no param check, nor strict type check
+func (r *ModifyInstanceAttackLogPostRequest) FromJsonString(s string) error {
+ f := make(map[string]interface{})
+ if err := json.Unmarshal([]byte(s), &f); err != nil {
+ return err
+ }
+ delete(f, "InstanceId")
+ delete(f, "AttackLogPost")
+ if len(f) > 0 {
+ return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyInstanceAttackLogPostRequest has unknown keys!", "")
+ }
+ return json.Unmarshal([]byte(s), &r)
+}
+
+// Predefined struct for user
+type ModifyInstanceAttackLogPostResponseParams struct {
+ // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
+ RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
+}
+
+type ModifyInstanceAttackLogPostResponse struct {
+ *tchttp.BaseResponse
+ Response *ModifyInstanceAttackLogPostResponseParams `json:"Response"`
+}
+
+func (r *ModifyInstanceAttackLogPostResponse) ToJsonString() string {
+ b, _ := json.Marshal(r)
+ return string(b)
+}
+
+// FromJsonString It is highly **NOT** recommended to use this function
+// because it has no param check, nor strict type check
+func (r *ModifyInstanceAttackLogPostResponse) FromJsonString(s string) error {
+ return json.Unmarshal([]byte(s), &r)
+}
+
// Predefined struct for user
type ModifyInstanceElasticModeRequestParams struct {
// 实例ID
diff --git a/vendor/modules.txt b/vendor/modules.txt
index dc3ee3f8ed..1d929942c6 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -1166,7 +1166,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit/v20190319
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.1148
## explicit; go 1.14
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls/v20201016
-# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1161
+# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1162
## explicit; go 1.11
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors
@@ -1352,7 +1352,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod/v20180717
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.1154
## explicit; go 1.14
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312
-# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1149
+# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1162
## explicit; go 1.14
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.0.792
diff --git a/website/docs/r/waf_instance_attack_log_post.html.markdown b/website/docs/r/waf_instance_attack_log_post.html.markdown
new file mode 100644
index 0000000000..fd6a45ac13
--- /dev/null
+++ b/website/docs/r/waf_instance_attack_log_post.html.markdown
@@ -0,0 +1,47 @@
+---
+subcategory: "Web Application Firewall(WAF)"
+layout: "tencentcloud"
+page_title: "TencentCloud: tencentcloud_waf_instance_attack_log_post"
+sidebar_current: "docs-tencentcloud-resource-waf_instance_attack_log_post"
+description: |-
+ Provides a resource to create a WAF instance attack log post
+---
+
+# tencentcloud_waf_instance_attack_log_post
+
+Provides a resource to create a WAF instance attack log post
+
+~> **NOTE:** Only enterprise version and above are supported for activation
+
+## Example Usage
+
+```hcl
+resource "tencentcloud_waf_instance_attack_log_post" "example" {
+ instance_id = "waf_2kxtlbky11b4wcrb"
+ attack_log_post = 1
+}
+```
+
+## Argument Reference
+
+The following arguments are supported:
+
+* `attack_log_post` - (Required, Int) Attack log delivery switch. 0- Disable, 1- Enable.
+* `instance_id` - (Required, String, ForceNew) Waf instance ID.
+
+## Attributes Reference
+
+In addition to all arguments above, the following attributes are exported:
+
+* `id` - ID of the resource.
+
+
+
+## Import
+
+WAF instance attack log post can be imported using the id, e.g.
+
+```
+terraform import tencentcloud_waf_instance_attack_log_post.example waf_2kxtlbky11b4wcrb
+```
+
diff --git a/website/tencentcloud.erb b/website/tencentcloud.erb
index 845d7d8d61..e273c4f190 100644
--- a/website/tencentcloud.erb
+++ b/website/tencentcloud.erb
@@ -6853,6 +6853,9 @@
tencentcloud_waf_domain_post_action
+
+ tencentcloud_waf_instance_attack_log_post
+
tencentcloud_waf_ip_access_control
From 49b68a9c03c1cfce8b0bc435dfb1f42c87aabaf3 Mon Sep 17 00:00:00 2001
From: SevenEarth <391613297@qq.com>
Date: Mon, 12 May 2025 16:09:11 +0800
Subject: [PATCH 3/3] add
---
.changelog/3354.txt | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 .changelog/3354.txt
diff --git a/.changelog/3354.txt b/.changelog/3354.txt
new file mode 100644
index 0000000000..4c7a44512e
--- /dev/null
+++ b/.changelog/3354.txt
@@ -0,0 +1,7 @@
+```release-note:new-resource
+tencentcloud_waf_domain_post_action
+```
+
+```release-note:new-resource
+tencentcloud_waf_instance_attack_log_post
+```