From a4b34c3693abd28754d73a398b3bab546f6890c0 Mon Sep 17 00:00:00 2001 From: arunma Date: Tue, 24 Sep 2024 19:52:21 +0800 Subject: [PATCH 1/9] fix: support cos cdc --- tencentcloud/connectivity/client.go | 23 ++++++++++++++++--- tencentcloud/provider.go | 19 ++++++++++++--- .../services/cos/resource_tc_cos_batch.md | 2 ++ .../cos/resource_tc_cos_bucket_test.go | 2 +- 4 files changed, 39 insertions(+), 7 deletions(-) diff --git a/tencentcloud/connectivity/client.go b/tencentcloud/connectivity/client.go index d94fda3808..2cf72c4197 100644 --- a/tencentcloud/connectivity/client.go +++ b/tencentcloud/connectivity/client.go @@ -118,6 +118,7 @@ type TencentCloudClient struct { Region string Protocol string Domain string + CosDomain string cosConn *s3.S3 tencentCosConn *cos.Client @@ -266,8 +267,12 @@ func (me *TencentCloudClient) UseCosClient() *s3.S3 { resolver := func(service, region string, optFns ...func(*endpoints.Options)) (endpoints.ResolvedEndpoint, error) { if service == endpoints.S3ServiceID { + cosUrl := fmt.Sprintf("https://cos.%s.myqcloud.com", region) + if me.CosDomain != "" { + cosUrl = me.CosDomain + } return endpoints.ResolvedEndpoint{ - URL: fmt.Sprintf("https://cos.%s.myqcloud.com", region), + URL: cosUrl, SigningRegion: region, }, nil } @@ -317,7 +322,14 @@ func (me *TencentCloudClient) UseTencentCosClientNew(bucket string, cdcId ...str // UseTencentCosClient tencent cloud own client for service instead of aws func (me *TencentCloudClient) UseTencentCosClient(bucket string) *cos.Client { - u, _ := url.Parse(fmt.Sprintf("https://%s.cos.%s.myqcloud.com", bucket, me.Region)) + cosUrl := fmt.Sprintf("https://%s.cos.%s.myqcloud.com", bucket, me.Region) + if me.CosDomain != "" { + parsedURL, _ := url.Parse(me.CosDomain) + parsedURL.Host = bucket + "." + parsedURL.Host + cosUrl = parsedURL.String() + } + + u, _ := url.Parse(cosUrl) if me.tencentCosConn != nil && me.tencentCosConn.BaseURL.BucketURL == u { return me.tencentCosConn @@ -1319,7 +1331,12 @@ func (me *TencentCloudClient) UseDtsClient() *dts.Client { // UseCosBatchClient returns ci client for service func (me *TencentCloudClient) UseCosBatchClient(uin string) *cos.Client { - u, _ := url.Parse(fmt.Sprintf("https://%s.cos-control.%s.myqcloud.com", uin, me.Region)) + cosUrl := fmt.Sprintf("https://%s.cos-control.%s.myqcloud.com", uin, me.Region) + if me.CosDomain != "" { + cosUrl = me.CosDomain + } + + u, _ := url.Parse(cosUrl) if me.cosBatchConn != nil && me.cosBatchConn.BaseURL.BatchURL == u { return me.cosBatchConn diff --git a/tencentcloud/provider.go b/tencentcloud/provider.go index 5277804e85..5532ff8c35 100644 --- a/tencentcloud/provider.go +++ b/tencentcloud/provider.go @@ -125,6 +125,7 @@ const ( PROVIDER_REGION = "TENCENTCLOUD_REGION" PROVIDER_PROTOCOL = "TENCENTCLOUD_PROTOCOL" PROVIDER_DOMAIN = "TENCENTCLOUD_DOMAIN" + PROVIDER_COS_DOMAIN = "TENCENTCLOUD_COS_DOMAIN" //internal version: replace envYunti begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. //internal version: replace envYunti end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. PROVIDER_ASSUME_ROLE_ARN = "TENCENTCLOUD_ASSUME_ROLE_ARN" @@ -204,6 +205,12 @@ func Provider() *schema.Provider { DefaultFunc: schema.EnvDefaultFunc(PROVIDER_DOMAIN, nil), Description: "The root domain of the API request, Default is `tencentcloudapi.com`.", }, + "cos_domain": { + Type: schema.TypeString, + Optional: true, + DefaultFunc: schema.EnvDefaultFunc(PROVIDER_COS_DOMAIN, nil), + Description: "The cos domain of the API request, Default is `https://cos.{region}.myqcloud.com`, Other Examples: `https://cluster-123456.cos-cdc.ap-guangzhou.myqcloud.com`.", + }, //internal version: replace enableBpass begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. //internal version: replace enableBpass end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. "assume_role": { @@ -2155,6 +2162,7 @@ func providerConfigure(d *schema.ResourceData) (interface{}, error) { region string protocol string domain string + cosDomain string camRoleName string ) @@ -2194,6 +2202,10 @@ func providerConfigure(d *schema.ResourceData) (interface{}, error) { domain = v.(string) } + if v, ok := d.GetOk("cos_domain"); ok { + cosDomain = v.(string) + } + if v, ok := d.GetOk("cam_role_name"); ok { camRoleName = v.(string) } @@ -2206,9 +2218,10 @@ func providerConfigure(d *schema.ResourceData) (interface{}, error) { secretKey, securityToken, ), - Region: region, - Protocol: protocol, - Domain: domain, + Region: region, + Protocol: protocol, + Domain: domain, + CosDomain: cosDomain, } // get auth from CAM role name diff --git a/tencentcloud/services/cos/resource_tc_cos_batch.md b/tencentcloud/services/cos/resource_tc_cos_batch.md index 5b0fe77528..9c3974fbe2 100644 --- a/tencentcloud/services/cos/resource_tc_cos_batch.md +++ b/tencentcloud/services/cos/resource_tc_cos_batch.md @@ -1,5 +1,7 @@ Provides a resource to create a cos bucket batch. +~> **NOTE:** The current resource does not support `cos_domain`. + Example Usage ```hcl diff --git a/tencentcloud/services/cos/resource_tc_cos_bucket_test.go b/tencentcloud/services/cos/resource_tc_cos_bucket_test.go index 269e48c97b..c194fdcffd 100644 --- a/tencentcloud/services/cos/resource_tc_cos_bucket_test.go +++ b/tencentcloud/services/cos/resource_tc_cos_bucket_test.go @@ -74,7 +74,7 @@ func testSweepCosBuckets(region string) error { } log.Printf("[INFO] deleting cos bucket: %s", bucket) - if err = cosService.DeleteBucket(ctx, bucket, true, true); err != nil { + if err = cosService.DeleteBucket(ctx, bucket, true, true, ""); err != nil { log.Printf("[ERROR] delete bucket %s error: %s", bucket, err.Error()) } } From ad2ab17412c5907cf232a3c45f9dd86969775efd Mon Sep 17 00:00:00 2001 From: arunma Date: Tue, 24 Sep 2024 21:03:51 +0800 Subject: [PATCH 2/9] =?UTF-8?q?fix:=20=E8=BF=87=E6=BB=A4=E4=B8=8D=E6=94=AF?= =?UTF-8?q?=E6=8C=81cdc=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tencentcloud/services/cos/resource_tc_cos_bucket.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tencentcloud/services/cos/resource_tc_cos_bucket.go b/tencentcloud/services/cos/resource_tc_cos_bucket.go index 35df43081a..fa220ab08f 100644 --- a/tencentcloud/services/cos/resource_tc_cos_bucket.go +++ b/tencentcloud/services/cos/resource_tc_cos_bucket.go @@ -656,7 +656,7 @@ func resourceTencentCloudCosBucketRead(d *schema.ResourceData, meta interface{}) return fmt.Errorf("setting cors_rules error: %v", err) } - if cdcId == "" { + if cdcId == "" || cosService.client.CosDomain == "" { originPullRules, err := cosService.GetBucketPullOrigin(ctx, bucket) if err != nil { return err From de94e5c1bbf385342ac4704987e26359a204e9da Mon Sep 17 00:00:00 2001 From: arunma Date: Tue, 24 Sep 2024 21:15:50 +0800 Subject: [PATCH 3/9] =?UTF-8?q?fix:=20=E8=BF=87=E6=BB=A4=E4=B8=8D=E6=94=AF?= =?UTF-8?q?=E6=8C=81cdc=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tencentcloud/services/cos/resource_tc_cos_bucket.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tencentcloud/services/cos/resource_tc_cos_bucket.go b/tencentcloud/services/cos/resource_tc_cos_bucket.go index fa220ab08f..628f04b893 100644 --- a/tencentcloud/services/cos/resource_tc_cos_bucket.go +++ b/tencentcloud/services/cos/resource_tc_cos_bucket.go @@ -656,7 +656,8 @@ func resourceTencentCloudCosBucketRead(d *schema.ResourceData, meta interface{}) return fmt.Errorf("setting cors_rules error: %v", err) } - if cdcId == "" || cosService.client.CosDomain == "" { + cosDomain := meta.(tccommon.ProviderMeta).GetAPIV3Conn().CosDomain + if cdcId == "" || cosDomain == "" { originPullRules, err := cosService.GetBucketPullOrigin(ctx, bucket) if err != nil { return err From bcf63b81ac087ea6343cae162e71d28c3b5bb03a Mon Sep 17 00:00:00 2001 From: arunma Date: Tue, 24 Sep 2024 21:21:16 +0800 Subject: [PATCH 4/9] =?UTF-8?q?fix:=20=E8=BF=87=E6=BB=A4=E4=B8=8D=E6=94=AF?= =?UTF-8?q?=E6=8C=81cdc=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tencentcloud/services/cos/resource_tc_cos_bucket.go | 1 + 1 file changed, 1 insertion(+) diff --git a/tencentcloud/services/cos/resource_tc_cos_bucket.go b/tencentcloud/services/cos/resource_tc_cos_bucket.go index 628f04b893..9654725513 100644 --- a/tencentcloud/services/cos/resource_tc_cos_bucket.go +++ b/tencentcloud/services/cos/resource_tc_cos_bucket.go @@ -657,6 +657,7 @@ func resourceTencentCloudCosBucketRead(d *schema.ResourceData, meta interface{}) } cosDomain := meta.(tccommon.ProviderMeta).GetAPIV3Conn().CosDomain + log.Printf("[DEBUG] cos_domain: %s", cosDomain) if cdcId == "" || cosDomain == "" { originPullRules, err := cosService.GetBucketPullOrigin(ctx, bucket) if err != nil { From 0cb1e5e3e536646865fe8ba3fac05a2a6aabe585 Mon Sep 17 00:00:00 2001 From: arunma Date: Tue, 24 Sep 2024 21:27:36 +0800 Subject: [PATCH 5/9] =?UTF-8?q?fix:=20=E8=BF=87=E6=BB=A4=E4=B8=8D=E6=94=AF?= =?UTF-8?q?=E6=8C=81cdc=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tencentcloud/services/cos/resource_tc_cos_bucket.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tencentcloud/services/cos/resource_tc_cos_bucket.go b/tencentcloud/services/cos/resource_tc_cos_bucket.go index 9654725513..e9a99d9f5d 100644 --- a/tencentcloud/services/cos/resource_tc_cos_bucket.go +++ b/tencentcloud/services/cos/resource_tc_cos_bucket.go @@ -657,8 +657,7 @@ func resourceTencentCloudCosBucketRead(d *schema.ResourceData, meta interface{}) } cosDomain := meta.(tccommon.ProviderMeta).GetAPIV3Conn().CosDomain - log.Printf("[DEBUG] cos_domain: %s", cosDomain) - if cdcId == "" || cosDomain == "" { + if cdcId == "" && cosDomain == "" { originPullRules, err := cosService.GetBucketPullOrigin(ctx, bucket) if err != nil { return err From 09da1f59dfc6e68723bed4e1e2bc494902c10213 Mon Sep 17 00:00:00 2001 From: arunma Date: Wed, 25 Sep 2024 15:46:23 +0800 Subject: [PATCH 6/9] =?UTF-8?q?fix:=20=E8=BF=87=E6=BB=A4=E4=B8=8D=E6=94=AF?= =?UTF-8?q?=E6=8C=81cdc=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../services/cos/data_source_tc_cos_batchs.md | 2 ++ .../data_source_tc_cos_bucket_inventorys.md | 2 ++ .../cos/data_source_tc_cos_buckets.go | 19 +++++++++++-------- ...os_bucket_domain_certificate_attachment.md | 2 ++ ...enerate_inventory_immediately_operation.md | 2 ++ .../cos/resource_tc_cos_bucket_referer.md | 2 ++ 6 files changed, 21 insertions(+), 8 deletions(-) diff --git a/tencentcloud/services/cos/data_source_tc_cos_batchs.md b/tencentcloud/services/cos/data_source_tc_cos_batchs.md index b70a6f7f3a..9c78258d27 100644 --- a/tencentcloud/services/cos/data_source_tc_cos_batchs.md +++ b/tencentcloud/services/cos/data_source_tc_cos_batchs.md @@ -1,5 +1,7 @@ Use this data source to query the COS batch. +~> **NOTE:** The current resource does not support `cos_domain`. + Example Usage ```hcl diff --git a/tencentcloud/services/cos/data_source_tc_cos_bucket_inventorys.md b/tencentcloud/services/cos/data_source_tc_cos_bucket_inventorys.md index 96b16bddf9..2ac986e62d 100644 --- a/tencentcloud/services/cos/data_source_tc_cos_bucket_inventorys.md +++ b/tencentcloud/services/cos/data_source_tc_cos_bucket_inventorys.md @@ -1,5 +1,7 @@ Use this data source to query the COS bucket inventorys. +~> **NOTE:** The current resource does not support `cos_domain`. + Example Usage ```hcl diff --git a/tencentcloud/services/cos/data_source_tc_cos_buckets.go b/tencentcloud/services/cos/data_source_tc_cos_buckets.go index 99a9d8a024..859fac50b2 100644 --- a/tencentcloud/services/cos/data_source_tc_cos_buckets.go +++ b/tencentcloud/services/cos/data_source_tc_cos_buckets.go @@ -400,15 +400,18 @@ func dataSourceTencentCloudCosBucketsRead(d *schema.ResourceData, meta interface } bucket["website"] = website - originRules, err := cosService.GetBucketPullOrigin(ctx, *v.Name) - if err != nil { - return err - } - bucket["origin_pull_rules"] = originRules + cosDomain := meta.(tccommon.ProviderMeta).GetAPIV3Conn().CosDomain + if cosDomain == "" { + originRules, err := cosService.GetBucketPullOrigin(ctx, *v.Name) + if err != nil { + return err + } + bucket["origin_pull_rules"] = originRules - domainRules, err := cosService.GetBucketOriginDomain(ctx, *v.Name) - if err == nil { - bucket["origin_domain_rules"] = domainRules + domainRules, err := cosService.GetBucketOriginDomain(ctx, *v.Name) + if err == nil { + bucket["origin_domain_rules"] = domainRules + } } aclBody, err := cosService.GetBucketACL(ctx, *v.Name, "") diff --git a/tencentcloud/services/cos/resource_tc_cos_bucket_domain_certificate_attachment.md b/tencentcloud/services/cos/resource_tc_cos_bucket_domain_certificate_attachment.md index 6e8c97669e..c845bd57dc 100644 --- a/tencentcloud/services/cos/resource_tc_cos_bucket_domain_certificate_attachment.md +++ b/tencentcloud/services/cos/resource_tc_cos_bucket_domain_certificate_attachment.md @@ -1,5 +1,7 @@ Provides a resource to attach/detach the corresponding certificate for the domain name in specified cos bucket. +~> **NOTE:** The current resource does not support `cos_domain`. + Example Usage ```hcl diff --git a/tencentcloud/services/cos/resource_tc_cos_bucket_generate_inventory_immediately_operation.md b/tencentcloud/services/cos/resource_tc_cos_bucket_generate_inventory_immediately_operation.md index 6eae0ffc48..e527aadbdc 100644 --- a/tencentcloud/services/cos/resource_tc_cos_bucket_generate_inventory_immediately_operation.md +++ b/tencentcloud/services/cos/resource_tc_cos_bucket_generate_inventory_immediately_operation.md @@ -1,5 +1,7 @@ Provides a resource to generate a cos bucket inventory immediately +~> **NOTE:** The current resource does not support `cos_domain`. + Example Usage ```hcl diff --git a/tencentcloud/services/cos/resource_tc_cos_bucket_referer.md b/tencentcloud/services/cos/resource_tc_cos_bucket_referer.md index 0f774ae8a7..704f2543db 100644 --- a/tencentcloud/services/cos/resource_tc_cos_bucket_referer.md +++ b/tencentcloud/services/cos/resource_tc_cos_bucket_referer.md @@ -1,5 +1,7 @@ Provides a resource to create a cos bucket_referer +~> **NOTE:** The current resource does not support `cos_domain`. + Example Usage ```hcl From 622a9020d28bd079c1d1df79314c07044c3d363d Mon Sep 17 00:00:00 2001 From: arunma Date: Wed, 25 Sep 2024 16:21:39 +0800 Subject: [PATCH 7/9] fix: Added cdc cos example --- .../data_source_tc_cos_bucket_inventorys.md | 2 +- ...os_bucket_domain_certificate_attachment.md | 2 +- ...enerate_inventory_immediately_operation.md | 2 +- .../cos/resource_tc_cos_bucket_inventory.md | 2 ++ .../cos/resource_tc_cos_bucket_referer.md | 2 +- ...esource_tc_cos_object_restore_operation.md | 2 ++ website/docs/d/cos_batchs.html.markdown | 2 ++ .../d/cos_bucket_inventorys.html.markdown | 2 ++ website/docs/index.html.markdown | 27 +++++++++++++++++++ website/docs/r/cos_batch.html.markdown | 2 ++ ...omain_certificate_attachment.html.markdown | 2 ++ ...entory_immediately_operation.html.markdown | 2 ++ .../docs/r/cos_bucket_inventory.html.markdown | 2 ++ .../docs/r/cos_bucket_referer.html.markdown | 2 ++ ...cos_object_restore_operation.html.markdown | 2 ++ 15 files changed, 51 insertions(+), 4 deletions(-) diff --git a/tencentcloud/services/cos/data_source_tc_cos_bucket_inventorys.md b/tencentcloud/services/cos/data_source_tc_cos_bucket_inventorys.md index 2ac986e62d..25992679f5 100644 --- a/tencentcloud/services/cos/data_source_tc_cos_bucket_inventorys.md +++ b/tencentcloud/services/cos/data_source_tc_cos_bucket_inventorys.md @@ -1,6 +1,6 @@ Use this data source to query the COS bucket inventorys. -~> **NOTE:** The current resource does not support `cos_domain`. +~> **NOTE:** The current resource does not support cdc. Example Usage diff --git a/tencentcloud/services/cos/resource_tc_cos_bucket_domain_certificate_attachment.md b/tencentcloud/services/cos/resource_tc_cos_bucket_domain_certificate_attachment.md index c845bd57dc..f7ca0909fa 100644 --- a/tencentcloud/services/cos/resource_tc_cos_bucket_domain_certificate_attachment.md +++ b/tencentcloud/services/cos/resource_tc_cos_bucket_domain_certificate_attachment.md @@ -1,6 +1,6 @@ Provides a resource to attach/detach the corresponding certificate for the domain name in specified cos bucket. -~> **NOTE:** The current resource does not support `cos_domain`. +~> **NOTE:** The current resource does not support cdc. Example Usage diff --git a/tencentcloud/services/cos/resource_tc_cos_bucket_generate_inventory_immediately_operation.md b/tencentcloud/services/cos/resource_tc_cos_bucket_generate_inventory_immediately_operation.md index e527aadbdc..64e08a8b50 100644 --- a/tencentcloud/services/cos/resource_tc_cos_bucket_generate_inventory_immediately_operation.md +++ b/tencentcloud/services/cos/resource_tc_cos_bucket_generate_inventory_immediately_operation.md @@ -1,6 +1,6 @@ Provides a resource to generate a cos bucket inventory immediately -~> **NOTE:** The current resource does not support `cos_domain`. +~> **NOTE:** The current resource does not support cdc. Example Usage diff --git a/tencentcloud/services/cos/resource_tc_cos_bucket_inventory.md b/tencentcloud/services/cos/resource_tc_cos_bucket_inventory.md index 2a59846633..43e8b75d8e 100644 --- a/tencentcloud/services/cos/resource_tc_cos_bucket_inventory.md +++ b/tencentcloud/services/cos/resource_tc_cos_bucket_inventory.md @@ -1,5 +1,7 @@ Provides a resource to create a cos bucket inventory +~> **NOTE:** The current resource does not support cdc. + Example Usage ```hcl diff --git a/tencentcloud/services/cos/resource_tc_cos_bucket_referer.md b/tencentcloud/services/cos/resource_tc_cos_bucket_referer.md index 704f2543db..d3908ed76f 100644 --- a/tencentcloud/services/cos/resource_tc_cos_bucket_referer.md +++ b/tencentcloud/services/cos/resource_tc_cos_bucket_referer.md @@ -1,6 +1,6 @@ Provides a resource to create a cos bucket_referer -~> **NOTE:** The current resource does not support `cos_domain`. +~> **NOTE:** The current resource does not support cdc. Example Usage diff --git a/tencentcloud/services/cos/resource_tc_cos_object_restore_operation.md b/tencentcloud/services/cos/resource_tc_cos_object_restore_operation.md index 68dbbc980a..9572ad6050 100644 --- a/tencentcloud/services/cos/resource_tc_cos_object_restore_operation.md +++ b/tencentcloud/services/cos/resource_tc_cos_object_restore_operation.md @@ -1,5 +1,7 @@ Provides a resource to restore object +~> **NOTE:** The current resource does not support cdc. + Example Usage ```hcl diff --git a/website/docs/d/cos_batchs.html.markdown b/website/docs/d/cos_batchs.html.markdown index 105429a704..19f1d05762 100644 --- a/website/docs/d/cos_batchs.html.markdown +++ b/website/docs/d/cos_batchs.html.markdown @@ -11,6 +11,8 @@ description: |- Use this data source to query the COS batch. +~> **NOTE:** The current resource does not support `cos_domain`. + ## Example Usage ```hcl diff --git a/website/docs/d/cos_bucket_inventorys.html.markdown b/website/docs/d/cos_bucket_inventorys.html.markdown index 03b1ae19cd..85debc4656 100644 --- a/website/docs/d/cos_bucket_inventorys.html.markdown +++ b/website/docs/d/cos_bucket_inventorys.html.markdown @@ -11,6 +11,8 @@ description: |- Use this data source to query the COS bucket inventorys. +~> **NOTE:** The current resource does not support cdc. + ## Example Usage ```hcl diff --git a/website/docs/index.html.markdown b/website/docs/index.html.markdown index e02c131bd2..6323b27378 100644 --- a/website/docs/index.html.markdown +++ b/website/docs/index.html.markdown @@ -236,6 +236,33 @@ $ export TENCENTCLOUD_ASSUME_ROLE_WEB_IDENTITY_TOKEN="my-web-identity-token" $ terraform plan ``` +### CDC cos usage + +You can set the cos domain by setting the environment variable `TENCENTCLOUD_COS_DOMAIN`, and configure the cdc scenario as follows: + +-> **Note:** Please note that not all cos resources are supported. Please pay attention to the prompts for each resource. + +```hcl +provider "tencentcloud" { + secret_id = "my-secret-id" + secret_key = "my-secret-key" + region = "ap-guangzhou" + cos_domain = "https://cluster-xxxxxx.cos-cdc.ap-guangzhou.myqcloud.com/" +} +``` + +The `cos_domain` can also provided via `TENCENTCLOUD_COS_DOMAIN` environment variables. + +Usage: + +```shell +$ export TENCENTCLOUD_SECRET_ID="my-secret-id" +$ export TENCENTCLOUD_SECRET_KEY="my-secret-key" +$ export TENCENTCLOUD_REGION="ap-guangzhou" +$ export TENCENTCLOUD_COS_DOMAIN="https://cluster-xxxxxx.cos-cdc.ap-guangzhou.myqcloud.com/" +$ terraform plan +``` + ### Shared credentials You can use [Tencent Cloud credentials](https://www.tencentcloud.com/document/product/1013/33464) to specify your credentials. The default location is `$HOME/.tccli` on Linux and macOS, And `"%USERPROFILE%\.tccli"` on Windows. You can optionally specify a different location in the Terraform configuration by providing the `shared_credentials_dir` argument or using the `TENCENTCLOUD_SHARED_CREDENTIALS_DIR` environment variable. This method also supports a `profile` configuration and matching `TENCENTCLOUD_PROFILE` environment variable: diff --git a/website/docs/r/cos_batch.html.markdown b/website/docs/r/cos_batch.html.markdown index b8571a2f34..d05e76e539 100644 --- a/website/docs/r/cos_batch.html.markdown +++ b/website/docs/r/cos_batch.html.markdown @@ -11,6 +11,8 @@ description: |- Provides a resource to create a cos bucket batch. +~> **NOTE:** The current resource does not support `cos_domain`. + ## Example Usage ```hcl diff --git a/website/docs/r/cos_bucket_domain_certificate_attachment.html.markdown b/website/docs/r/cos_bucket_domain_certificate_attachment.html.markdown index 5e0ac6438a..748dd9cb64 100644 --- a/website/docs/r/cos_bucket_domain_certificate_attachment.html.markdown +++ b/website/docs/r/cos_bucket_domain_certificate_attachment.html.markdown @@ -11,6 +11,8 @@ description: |- Provides a resource to attach/detach the corresponding certificate for the domain name in specified cos bucket. +~> **NOTE:** The current resource does not support cdc. + ## Example Usage ```hcl diff --git a/website/docs/r/cos_bucket_generate_inventory_immediately_operation.html.markdown b/website/docs/r/cos_bucket_generate_inventory_immediately_operation.html.markdown index 26f2a76157..177a254356 100644 --- a/website/docs/r/cos_bucket_generate_inventory_immediately_operation.html.markdown +++ b/website/docs/r/cos_bucket_generate_inventory_immediately_operation.html.markdown @@ -11,6 +11,8 @@ description: |- Provides a resource to generate a cos bucket inventory immediately +~> **NOTE:** The current resource does not support cdc. + ## Example Usage ```hcl diff --git a/website/docs/r/cos_bucket_inventory.html.markdown b/website/docs/r/cos_bucket_inventory.html.markdown index fe42498d67..026c72246d 100644 --- a/website/docs/r/cos_bucket_inventory.html.markdown +++ b/website/docs/r/cos_bucket_inventory.html.markdown @@ -11,6 +11,8 @@ description: |- Provides a resource to create a cos bucket inventory +~> **NOTE:** The current resource does not support cdc. + ## Example Usage ```hcl diff --git a/website/docs/r/cos_bucket_referer.html.markdown b/website/docs/r/cos_bucket_referer.html.markdown index 304a5020a5..919e7c5efa 100644 --- a/website/docs/r/cos_bucket_referer.html.markdown +++ b/website/docs/r/cos_bucket_referer.html.markdown @@ -11,6 +11,8 @@ description: |- Provides a resource to create a cos bucket_referer +~> **NOTE:** The current resource does not support cdc. + ## Example Usage ```hcl diff --git a/website/docs/r/cos_object_restore_operation.html.markdown b/website/docs/r/cos_object_restore_operation.html.markdown index bec0a9c538..8802c0c60a 100644 --- a/website/docs/r/cos_object_restore_operation.html.markdown +++ b/website/docs/r/cos_object_restore_operation.html.markdown @@ -11,6 +11,8 @@ description: |- Provides a resource to restore object +~> **NOTE:** The current resource does not support cdc. + ## Example Usage ```hcl From f801d80929b6e957352f4e490bb7850eb18220c2 Mon Sep 17 00:00:00 2001 From: arunma Date: Wed, 25 Sep 2024 16:43:22 +0800 Subject: [PATCH 8/9] fix: optimize cos url --- tencentcloud/services/cos/resource_tc_cos_bucket.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tencentcloud/services/cos/resource_tc_cos_bucket.go b/tencentcloud/services/cos/resource_tc_cos_bucket.go index e9a99d9f5d..ffddcc31d3 100644 --- a/tencentcloud/services/cos/resource_tc_cos_bucket.go +++ b/tencentcloud/services/cos/resource_tc_cos_bucket.go @@ -8,6 +8,7 @@ import ( "fmt" "io/ioutil" "log" + "net/url" "strings" "time" @@ -616,9 +617,14 @@ func resourceTencentCloudCosBucketRead(d *schema.ResourceData, meta interface{}) _ = d.Set("multi_az", true) } + cosDomain := meta.(tccommon.ProviderMeta).GetAPIV3Conn().CosDomain var cosBucketUrl string - if cdcId == "" { + if cdcId == "" && cosDomain == "" { cosBucketUrl = fmt.Sprintf("%s.cos.%s.myqcloud.com", d.Id(), meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region) + } else if cosDomain != "" { + parsedURL, _ := url.Parse(cosDomain) + parsedURL.Host = bucket + "." + parsedURL.Host + cosBucketUrl = parsedURL.String() } else { cosBucketUrl = fmt.Sprintf("https://%s.%s.cos-cdc.%s.myqcloud.com", bucket, cdcId, meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region) } @@ -656,7 +662,6 @@ func resourceTencentCloudCosBucketRead(d *schema.ResourceData, meta interface{}) return fmt.Errorf("setting cors_rules error: %v", err) } - cosDomain := meta.(tccommon.ProviderMeta).GetAPIV3Conn().CosDomain if cdcId == "" && cosDomain == "" { originPullRules, err := cosService.GetBucketPullOrigin(ctx, bucket) if err != nil { @@ -703,7 +708,7 @@ func resourceTencentCloudCosBucketRead(d *schema.ResourceData, meta interface{}) if err != nil { return err } - if len(website) > 0 { + if len(website) > 0 && cosDomain == "" { // {bucket}.cos-website.{region}.myqcloud.com endPointUrl := fmt.Sprintf("%s.cos-website.%s.myqcloud.com", d.Id(), meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region) website[0]["endpoint"] = endPointUrl From ee3d403c4ce38576ec8e99c1350fb7531f07cf57 Mon Sep 17 00:00:00 2001 From: arunma Date: Wed, 25 Sep 2024 20:07:08 +0800 Subject: [PATCH 9/9] fix: modify cdc cos doc --- website/docs/index.html.markdown | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/website/docs/index.html.markdown b/website/docs/index.html.markdown index 6323b27378..1d5bd69c73 100644 --- a/website/docs/index.html.markdown +++ b/website/docs/index.html.markdown @@ -243,11 +243,16 @@ You can set the cos domain by setting the environment variable `TENCENTCLOUD_COS -> **Note:** Please note that not all cos resources are supported. Please pay attention to the prompts for each resource. ```hcl +locals { + region = "ap-guangzhou" + cdc_id = "cluster_xxx" +} + provider "tencentcloud" { - secret_id = "my-secret-id" - secret_key = "my-secret-key" - region = "ap-guangzhou" - cos_domain = "https://cluster-xxxxxx.cos-cdc.ap-guangzhou.myqcloud.com/" + region = local.region + secret_id = "xxxxxx" + secret_key = "xxxxxx" + cos_domain = "https://${local.cdc_id}.cos-cdc.${local.region}.myqcloud.com/" } ```