Skip to content

Commit 3835dab

Browse files
authored
Merge branch 'master' into master
2 parents d99ac2c + 792da66 commit 3835dab

File tree

124 files changed

+13035
-683
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

124 files changed

+13035
-683
lines changed

CHANGELOG.md

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,40 @@
1-
## 1.20.2 (Unreleased)
1+
## 1.22.0 (Unreleased)
2+
## 1.21.0 (October 15, 2019)
3+
4+
FEATURES:
5+
6+
* **New Data Source**: `tencentcloud_cam_users`
7+
* **New Data Source**: `tencentcloud_cam_groups`
8+
* **New Data Source**: `tencentcloud_cam_policies`
9+
* **New Data Source**: `tencentcloud_cam_roles`
10+
* **New Data Source**: `tencentcloud_cam_user_policy_attachments`
11+
* **New Data Source**: `tencentcloud_cam_group_policy_attachments`
12+
* **New Data Source**: `tencentcloud_cam_role_policy_attachments`
13+
* **New Data Source**: `tencentcloud_cam_group_memberships`
14+
* **New Data Source**: `tencentcloud_cam_saml_providers`
15+
* **New Data Source**: `tencentcloud_reserved_instance_configs`
16+
* **New Data Source**: `tencentcloud_reserved_instances`
17+
* **New Resource**: `tencentcloud_cam_user`
18+
* **New Resource**: `tencentcloud_cam_group`
19+
* **New Resource**: `tencentcloud_cam_role`
20+
* **New Resource**: `tencentcloud_cam_policy`
21+
* **New Resource**: `tencentcloud_cam_user_policy_attachment`
22+
* **New Resource**: `tencentcloud_cam_group_policy_attachment`
23+
* **New Resource**: `tencentcloud_cam_role_policy_attachment`
24+
* **New Resource**: `tencentcloud_cam_group_membership`
25+
* **New Resource**: `tencentcloud_cam_saml_provider`
26+
* **New Resource**: `tencentcloud_reserved_instance`
27+
28+
ENHANCEMENTS:
29+
30+
* Resource: `tencentcloud_gaap_http_domain` support import
31+
* Resource: `tencentcloud_gaap_layer7_listener` support import
32+
33+
BUG FIXES:
34+
35+
* Resource: `tencentcloud_gaap_http_domain` fix sometimes can't enable realserver auth
36+
37+
238
## 1.20.1 (October 08, 2019)
339

440
ENHANCEMENTS:

examples/tencentcloud-cam/main.tf

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
resource "tencentcloud_cam_group" "example" {
2+
name = "example"
3+
remark = "example"
4+
}
5+
6+
resource "tencentcloud_cam_user" "example" {
7+
name = "example"
8+
remark = "example"
9+
console_login = true
10+
use_api = true
11+
need_reset_password = true
12+
password = "${var.password}"
13+
phone_num = "${var.phone_num}"
14+
country_code = "${var.country_code}"
15+
email = "${var.email}"
16+
}
17+
18+
resource "tencentcloud_cam_policy" "example" {
19+
name = "example"
20+
document = "${var.policy_document}"
21+
}
22+
23+
resource "tencentcloud_cam_role" "example" {
24+
name = "example"
25+
document = "${var.role_document}"
26+
description = "test"
27+
console_login = true
28+
}
29+
30+
resource "tencentcloud_cam_group_membership" "example" {
31+
group_id = "${tencentcloud_cam_group.example.id}"
32+
user_ids = ["${tencentcloud_cam_user.example.id}"]
33+
}
34+
35+
resource "tencentcloud_cam_role_policy_attachment" "example" {
36+
role_id = "${tencentcloud_cam_role.example.id}"
37+
policy_id = "${tencentcloud_cam_policy.example.id}"
38+
}
39+
40+
resource "tencentcloud_cam_user_policy_attachment" "example" {
41+
user_id = "${tencentcloud_cam_user.example.id}"
42+
policy_id = "${tencentcloud_cam_policy.example.id}"
43+
}
44+
45+
resource "tencentcloud_cam_group_policy_attachment" "example" {
46+
group_id = "${tencentcloud_cam_group.example.id}"
47+
policy_id = "${tencentcloud_cam_policy.example.id}"
48+
}
49+
50+
resource "tencentcloud_cam_saml_provider" "example" {
51+
name = "example"
52+
meta_data = "${var.meta_data}"
53+
description = "test"
54+
}
55+
56+
data "tencentcloud_cam_users" "users" {
57+
name = "${tencentcloud_cam_user.example.id}"
58+
}
59+
60+
data "tencentcloud_cam_roles" "roles" {
61+
role_id = "${tencentcloud_cam_role.example.id}"
62+
}
63+
64+
data "tencentcloud_cam_policies" "policies" {
65+
policy_id = "${tencentcloud_cam_policy.example.id}"
66+
}
67+
68+
data "tencentcloud_cam_groups" "groups" {
69+
group_id = "${tencentcloud_cam_group.example.id}"
70+
}
71+
72+
data "tencentcloud_cam_group_memberships" "memberships" {
73+
group_id = "${tencentcloud_cam_group_membership.example.id}"
74+
}
75+
76+
data "tencentcloud_cam_user_policy_attachments" "user_policy_attachments" {
77+
user_id = "${tencentcloud_cam_user_policy_attachment.example.user_id}"
78+
}
79+
80+
data "tencentcloud_cam_role_policy_attachments" "role_policy_attachments" {
81+
role_id = "${tencentcloud_cam_role_policy_attachment.example.role_id}"
82+
}
83+
84+
data "tencentcloud_cam_group_policy_attachments" "group_policy_attachments" {
85+
group_id = "${tencentcloud_cam_group_policy_attachment.example.group_id}"
86+
}
87+
88+
data "tencentcloud_cam_saml_providers" "saml_providers" {
89+
name = "${tencentcloud_cam_saml_provider.example.id}"
90+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
variable "password" {
2+
default = "Gail@1234"
3+
}
4+
5+
variable "phone_num" {
6+
default = "13631555963"
7+
}
8+
9+
variable "country_code" {
10+
default = "86"
11+
}
12+
13+
variable "email" {
14+
default = "[email protected]"
15+
}
16+
17+
variable "policy_document" {
18+
default = "{\"version\":\"2.0\",\"statement\":[{\"action\":[\"name/sts:AssumeRole\"],\"effect\":\"allow\",\"resource\":[\"*\"]},{\"action\":[\"name/cos:PutObject\"],\"effect\":\"allow\",\"resource\":[\"*\"]}]}"
19+
}
20+
21+
variable "role_document" {
22+
default = "{\"version\":\"2.0\",\"statement\":[{\"action\":[\"name/sts:AssumeRole\"],\"effect\":\"allow\",\"principal\":{\"qcs\":[\"qcs::cam::uin/100009461222:uin/100009461222\"]}}]}"
23+
}
24+
25+
variable "meta_data" {
26+
default = "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48bWQ6RW50aXR5RGVzY3JpcHRvciBlbnRpdHlJRD0iaHR0cDovL3d3dy5va3RhLmNvbS9leGsxa3F4bWNqUW1HQURNeTM1NyIgeG1sbnM6bWQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDptZXRhZGF0YSI+PG1kOklEUFNTT0Rlc2NyaXB0b3IgV2FudEF1dGhuUmVxdWVzdHNTaWduZWQ9ImZhbHNlIiBwcm90b2NvbFN1cHBvcnRFbnVtZXJhdGlvbj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj48bWQ6S2V5RGVzY3JpcHRvciB1c2U9InNpZ25pbmciPjxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEb0RDQ0FvaWdBd0lCQWdJR0FXM0lTcExvTUEwR0NTcUdTSWIzRFFFQkN3VUFNSUdRTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHDQpBMVVFQ0F3S1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ3d05VMkZ1SUVaeVlXNWphWE5qYnpFTk1Bc0dBMVVFQ2d3RVQydDBZVEVVDQpNQklHQTFVRUN3d0xVMU5QVUhKdmRtbGtaWEl4RVRBUEJnTlZCQU1NQ0dsa2VIVmxkblJoTVJ3d0dnWUpLb1pJaHZjTkFRa0JGZzFwDQpibVp2UUc5cmRHRXVZMjl0TUI0WERURTVNVEF4TkRBek1qSXhNMW9YRFRJNU1UQXhOREF6TWpNeE0xb3dnWkF4Q3pBSkJnTlZCQVlUDQpBbFZUTVJNd0VRWURWUVFJREFwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSERBMVRZVzRnUm5KaGJtTnBjMk52TVEwd0N3WURWUVFLDQpEQVJQYTNSaE1SUXdFZ1lEVlFRTERBdFRVMDlRY205MmFXUmxjakVSTUE4R0ExVUVBd3dJYVdSNGRXVjJkR0V4SERBYUJna3Foa2lHDQo5dzBCQ1FFV0RXbHVabTlBYjJ0MFlTNWpiMjB3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2g4b3dqDQpZK2dQSUM3blQvNTduLzdmeXJzcDlHMXdxa2UxdXhjMHVrTndnQXozOVNpelY3QVhLMWRReTFLaThXWjJJMzFEczJkT0FNQ1FKR2pWDQpUWWNNbnA3KzhqUzNLdmxNUkRJamk5cmxuUi9vcnBvMll1RHVWby9jVzdidlRIS2h2REo1QWZRaWxzYlNPTXdUOWM2TVlYZGhBNVBwDQpzelFsK1UrdHJmcXUrdUorSER4SVQxdlhWaVI5YlY2SUFRSzZpbWZoc2wxWmVSUytjbVFVNEpjQWlYT0xtTnFVVWM2UkpxUzhrMW1mDQpBLzhmb2VyMGc3SG4xZDVXclpCc2gyUlR2Vzh1ZVdadHQ3dmh4QTlGdE5kSVlEcXJ0eElmMlZXcXhrSHM3WFZDSm5wTnJITVovT1BRDQpGY21YSGVxNlJJMlB3Q1RlOW8zZHZpM0hqeXBaOEl4dkFnTUJBQUV3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUFHaHk1bG9nbGtTDQoyVHg2YS90MnF5VEx0YVV5cEwrNGhySGJoMVAweVVMc0NrSnFsM2wrWG9VZDZCY2FJaFNSVGFPQk95ODViL0UzelJ4K3JzQXJwTjVVDQp5ZThuUEM4a05PYW5vTk9wWnZvYmhpTzFlMFIvYmxEcnRBL0o5UlBwMWtmdlhmS2NSTTU3TlRCWXppTURlbnFQUTRFOWN1U2lGdFFxDQpJYmpIbThaM1B1YXgwRitldkZ3U1pJMDNCWXNISGw1d1EraEJBS3hTdTJINEZRdU93Zmpnb2EveEN6Z1NKYjJ2UXdEc1MxMk9mSkNiDQpSRm1ZL1VYZXQramFhdEVORktLZStZSUJpU0J2WG1adTN0MHN5NDZTNzlPVzBacXJ0NUh2bElsT2lpTFpaN1FZamxjM1kxeG1LZ1luDQpXM2M2WGZkdmhGWHo0ZDdkbWYvTUdpNGY0enM9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9tZDpLZXlEZXNjcmlwdG9yPjxtZDpOYW1lSURGb3JtYXQ+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6dW5zcGVjaWZpZWQ8L21kOk5hbWVJREZvcm1hdD48bWQ6TmFtZUlERm9ybWF0PnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzczwvbWQ6TmFtZUlERm9ybWF0PjxtZDpTaW5nbGVTaWduT25TZXJ2aWNlIEJpbmRpbmc9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpiaW5kaW5nczpIVFRQLVBPU1QiIExvY2F0aW9uPSJodHRwczovL2lkeHVldnRhLm9rdGEuY29tL2FwcC9pZHh1ZW9yZzYzNzM1OF90ZXN0XzEvZXhrMWtxeG1jalFtR0FETXkzNTcvc3NvL3NhbWwiLz48bWQ6U2luZ2xlU2lnbk9uU2VydmljZSBCaW5kaW5nPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YmluZGluZ3M6SFRUUC1SZWRpcmVjdCIgTG9jYXRpb249Imh0dHBzOi8vaWR4dWV2dGEub2t0YS5jb20vYXBwL2lkeHVlb3JnNjM3MzU4X3Rlc3RfMS9leGsxa3F4bWNqUW1HQURNeTM1Ny9zc28vc2FtbCIvPjwvbWQ6SURQU1NPRGVzY3JpcHRvcj48L21kOkVudGl0eURlc2NyaXB0b3I+"
27+
}
28+

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -501,8 +501,8 @@ github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJy
501501
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
502502
github.com/svanharmelen/jsonapi v0.0.0-20180618144545-0c0828c3f16d/go.mod h1:BSTlc8jOjh0niykqEGVXOLXdi9o0r0kR8tCYiMvjFgw=
503503
github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA=
504-
github.com/tencentcloud/tencentcloud-sdk-go v3.0.87-0.20190912121957-c0615982c83b+incompatible h1:sDNLz6GOccksu6f0BQGCvIrgVNVEsEMPWlavN/OOwRc=
505-
github.com/tencentcloud/tencentcloud-sdk-go v3.0.87-0.20190912121957-c0615982c83b+incompatible/go.mod h1:0PfYow01SHPMhKY31xa+EFz2RStxIqj6JFAJS+IkCi4=
504+
github.com/tencentcloud/tencentcloud-sdk-go v3.0.89-0.20191011161912-cf7a17a053dc+incompatible h1:h17QeWh1jk/uNz+ITJYiIzoSnOsMBH8Y81a+u28xwRc=
505+
github.com/tencentcloud/tencentcloud-sdk-go v3.0.89-0.20191011161912-cf7a17a053dc+incompatible/go.mod h1:0PfYow01SHPMhKY31xa+EFz2RStxIqj6JFAJS+IkCi4=
506506
github.com/terraform-providers/terraform-provider-openstack v1.15.0/go.mod h1:2aQ6n/BtChAl1y2S60vebhyJyZXBsuAI5G4+lHrT1Ew=
507507
github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e h1:RumXZ56IrCj4CL+g1b9OL/oH0QnsF976bC8xQFYUD5Q=
508508
github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk=

tencentcloud/connectivity/client.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"github.com/aws/aws-sdk-go/aws/session"
1111
"github.com/aws/aws-sdk-go/service/s3"
1212
as "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/as/v20180419"
13+
cam "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cam/v20190116"
1314
cbs "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cbs/v20170312"
1415
cdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdb/v20170320"
1516
clb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317"
@@ -43,6 +44,7 @@ type TencentCloudClient struct {
4344
tagConn *tag.Client
4445
mongodbConn *mongodb.Client
4546
tkeConn *tke.Client
47+
camConn *cam.Client
4648
gaapCoon *gaap.Client
4749
sslCoon *ssl.Client
4850
}
@@ -401,3 +403,27 @@ func (me *TencentCloudClient) UseSslClient() *ssl.Client {
401403

402404
return me.sslCoon
403405
}
406+
407+
func (me *TencentCloudClient) UseCamClient() *cam.Client {
408+
if me.camConn != nil {
409+
return me.camConn
410+
}
411+
412+
credential := common.NewCredential(
413+
me.SecretId,
414+
me.SecretKey,
415+
)
416+
417+
cpf := profile.NewClientProfile()
418+
cpf.HttpProfile.ReqMethod = "POST"
419+
cpf.HttpProfile.ReqTimeout = 300
420+
cpf.Language = "en-US"
421+
422+
camConn, _ := cam.NewClient(credential, me.Region, cpf)
423+
var round LogRoundTripper
424+
425+
camConn.WithHttpTransport(&round)
426+
me.camConn = camConn
427+
428+
return me.camConn
429+
}
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
/*
2+
Use this data source to query detailed information of CAM groups
3+
4+
Example Usage
5+
6+
```hcl
7+
data "tencentcloud_cam_group_memberships" "foo" {
8+
group_id = "12515263"
9+
}
10+
```
11+
*/
12+
package tencentcloud
13+
14+
import (
15+
"context"
16+
"log"
17+
18+
"github.com/hashicorp/terraform/helper/resource"
19+
"github.com/hashicorp/terraform/helper/schema"
20+
)
21+
22+
func dataSourceTencentCloudCamGroupMemberships() *schema.Resource {
23+
return &schema.Resource{
24+
Read: dataSourceTencentCloudCamGroupMembershipsRead,
25+
26+
Schema: map[string]*schema.Schema{
27+
"group_id": {
28+
Type: schema.TypeString,
29+
Optional: true,
30+
Description: "Id of CAM group to be queried.",
31+
},
32+
"result_output_file": {
33+
Type: schema.TypeString,
34+
Optional: true,
35+
Description: "Used to save results.",
36+
},
37+
"membership_list": {
38+
Type: schema.TypeList,
39+
Computed: true,
40+
Description: "A list of CAM group membership. Each element contains the following attributes:",
41+
Elem: &schema.Resource{
42+
Schema: map[string]*schema.Schema{
43+
"group_id": {
44+
Type: schema.TypeString,
45+
Computed: true,
46+
Description: "Id of CAM group.",
47+
},
48+
"user_ids": {
49+
Type: schema.TypeSet,
50+
Computed: true,
51+
Elem: &schema.Schema{
52+
Type: schema.TypeString,
53+
},
54+
Description: "Id set of the CAM group members.",
55+
},
56+
},
57+
},
58+
},
59+
},
60+
}
61+
}
62+
63+
func dataSourceTencentCloudCamGroupMembershipsRead(d *schema.ResourceData, meta interface{}) error {
64+
defer logElapsed("data_source.tencentcloud_cam_group_memberships.read")()
65+
66+
logId := getLogId(contextNil)
67+
ctx := context.WithValue(context.TODO(), "logId", logId)
68+
69+
groupId := d.Get("group_id").(string)
70+
camService := CamService{
71+
client: meta.(*TencentCloudClient).apiV3Conn,
72+
}
73+
var memberships []*string
74+
err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
75+
results, e := camService.DescribeGroupMembershipById(ctx, groupId)
76+
if e != nil {
77+
return retryError(e)
78+
}
79+
memberships = results
80+
return nil
81+
})
82+
if err != nil {
83+
log.Printf("[CRITAL]%s read CAM group memberships failed, reason:%s\n", logId, err.Error())
84+
return err
85+
}
86+
groupList := make([]map[string]interface{}, 0, 1)
87+
ids := make([]string, 0, 1)
88+
mapping := map[string]interface{}{
89+
"group_id": groupId,
90+
"user_ids": memberships,
91+
}
92+
groupList = append(groupList, mapping)
93+
ids = append(ids, groupId)
94+
95+
d.SetId(dataResourceIdsHash(ids))
96+
if e := d.Set("membership_list", groupList); e != nil {
97+
log.Printf("[CRITAL]%s provider set membershiplist fail, reason:%s\n", logId, e.Error())
98+
return e
99+
}
100+
101+
output, ok := d.GetOk("result_output_file")
102+
if ok && output.(string) != "" {
103+
if e := writeToFile(output.(string), groupList); e != nil {
104+
return e
105+
}
106+
}
107+
108+
return nil
109+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package tencentcloud
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform/helper/resource"
7+
)
8+
9+
func TestAccTencentCloudCamGroupMembershipsDataSource_basic(t *testing.T) {
10+
resource.Test(t, resource.TestCase{
11+
PreCheck: func() { testAccPreCheck(t) },
12+
Providers: testAccProviders,
13+
CheckDestroy: testAccCheckCamGroupMembershipDestroy,
14+
Steps: []resource.TestStep{
15+
{
16+
Config: testAccCamGroupMembershipsDataSource_basic,
17+
Check: resource.ComposeAggregateTestCheckFunc(
18+
testAccCheckCamGroupExists("tencentcloud_cam_group_membership.membership"),
19+
resource.TestCheckResourceAttr("data.tencentcloud_cam_group_memberships.memberships", "membership_list.#", "1"),
20+
resource.TestCheckResourceAttrSet("data.tencentcloud_cam_group_memberships.memberships", "membership_list.0.group_id"),
21+
resource.TestCheckResourceAttr("data.tencentcloud_cam_group_memberships.memberships", "membership_list.0.user_ids.#", "1"),
22+
),
23+
},
24+
},
25+
})
26+
}
27+
28+
const testAccCamGroupMembershipsDataSource_basic = `
29+
resource "tencentcloud_cam_group" "group_basic" {
30+
name = "cam-group-membership-test"
31+
remark = "test"
32+
}
33+
34+
resource "tencentcloud_cam_user" "user_basic" {
35+
name = "cam-user-testj"
36+
remark = "test"
37+
console_login = true
38+
use_api = true
39+
need_reset_password = true
40+
password = "Gail@1234"
41+
phone_num = "13631555963"
42+
country_code = "86"
43+
44+
}
45+
46+
resource "tencentcloud_cam_group_membership" "membership" {
47+
group_id = "${tencentcloud_cam_group.group_basic.id}"
48+
user_ids = ["${tencentcloud_cam_user.user_basic.id}"]
49+
}
50+
51+
data "tencentcloud_cam_group_memberships" "memberships" {
52+
group_id = "${tencentcloud_cam_group_membership.membership.id}"
53+
}
54+
`

0 commit comments

Comments
 (0)