Skip to content

Commit 568447d

Browse files
committed
feat(cos): [119848799] support SSE-KMS encryption
1 parent 2c322fe commit 568447d

File tree

3 files changed

+50
-6
lines changed

3 files changed

+50
-6
lines changed

tencentcloud/services/cos/resource_tc_cos_bucket.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,12 @@ func ResourceTencentCloudCosBucket() *schema.Resource {
188188
"encryption_algorithm": {
189189
Type: schema.TypeString,
190190
Optional: true,
191-
Description: "The server-side encryption algorithm to use. Valid value is `AES256`.",
191+
Description: "The server-side encryption algorithm to use. Valid value is `AES256` or `KMS`.",
192+
},
193+
"kms_id": {
194+
Type: schema.TypeString,
195+
Optional: true,
196+
Description: "The KMS Master Key ID. When `encryption_algorithm` is set to `KMS`, please provide it.",
192197
},
193198
"versioning_enable": {
194199
Type: schema.TypeBool,
@@ -718,13 +723,16 @@ func resourceTencentCloudCosBucketRead(d *schema.ResourceData, meta interface{})
718723
}
719724

720725
// read the encryption algorithm
721-
encryption, err := cosService.GetBucketEncryption(ctx, bucket, cdcId)
726+
encryption, kmsId, err := cosService.GetBucketEncryption(ctx, bucket, cdcId)
722727
if err != nil {
723728
return err
724729
}
725730
if err = d.Set("encryption_algorithm", encryption); err != nil {
726731
return fmt.Errorf("setting encryption error: %v", err)
727732
}
733+
if err = d.Set("kms_id", kmsId); err != nil {
734+
return fmt.Errorf("setting kms_id error: %v", err)
735+
}
728736

729737
// read the versioning
730738
versioning, err := cosService.GetBucketVersioning(ctx, bucket, cdcId)
@@ -894,12 +902,11 @@ func resourceTencentCloudCosBucketUpdate(d *schema.ResourceData, meta interface{
894902

895903
}
896904

897-
if d.HasChange("encryption_algorithm") {
905+
if d.HasChange("encryption_algorithm") || d.HasChange("kms_id") {
898906
err := resourceTencentCloudCosBucketEncryptionUpdate(ctx, meta, d)
899907
if err != nil {
900908
return err
901909
}
902-
903910
}
904911

905912
if d.HasChange("versioning_enable") {
@@ -1005,6 +1012,7 @@ func resourceTencentCloudCosBucketEncryptionUpdate(ctx context.Context, meta int
10051012

10061013
bucket := d.Get("bucket").(string)
10071014
encryption := d.Get("encryption_algorithm").(string)
1015+
kmsId := d.Get("kms_id").(string)
10081016
cdcId := d.Get("cdc_id").(string)
10091017
if encryption == "" {
10101018
request := s3.DeleteBucketEncryptionInput{
@@ -1029,7 +1037,8 @@ func resourceTencentCloudCosBucketEncryptionUpdate(ctx context.Context, meta int
10291037
request.ServerSideEncryptionConfiguration = &s3.ServerSideEncryptionConfiguration{}
10301038
rules := make([]*s3.ServerSideEncryptionRule, 0)
10311039
defaultRule := &s3.ServerSideEncryptionByDefault{
1032-
SSEAlgorithm: aws.String(encryption),
1040+
SSEAlgorithm: aws.String(encryption),
1041+
KMSMasterKeyID: aws.String(kmsId),
10331042
}
10341043
rule := &s3.ServerSideEncryptionRule{
10351044
ApplyServerSideEncryptionByDefault: defaultRule,

tencentcloud/services/cos/resource_tc_cos_bucket.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,37 @@ resource "tencentcloud_cos_bucket" "private_bucket" {
3535
}
3636
```
3737

38+
Enable SSE-KMS encryption
39+
40+
```hcl
41+
data "tencentcloud_user_info" "info" {}
42+
43+
locals {
44+
app_id = data.tencentcloud_user_info.info.app_id
45+
}
46+
47+
resource "tencentcloud_kms_key" "example" {
48+
alias = "tf-example-kms-key"
49+
description = "example of kms key"
50+
key_rotation_enabled = false
51+
is_enabled = true
52+
53+
tags = {
54+
"createdBy" = "terraform"
55+
}
56+
}
57+
58+
resource "tencentcloud_cos_bucket" "bucket_basic" {
59+
bucket = "tf-bucket-cdc-${local.app_id}"
60+
acl = "private"
61+
encryption_algorithm = "KMS"
62+
kms_id = tencentcloud_kms_key.example.id
63+
versioning_enable = true
64+
acceleration_enable = true
65+
force_clean = true
66+
}
67+
```
68+
3869
Creation of multiple available zone bucket
3970

4071
```hcl

tencentcloud/services/cos/service_tencentcloud_cos.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -732,7 +732,7 @@ func (me *CosService) GetBucketWebsite(ctx context.Context, bucket string, cdcId
732732
return
733733
}
734734

735-
func (me *CosService) GetBucketEncryption(ctx context.Context, bucket string, cdcId string) (encryption string, errRet error) {
735+
func (me *CosService) GetBucketEncryption(ctx context.Context, bucket string, cdcId string) (encryption string, kmsId string, errRet error) {
736736
logId := tccommon.GetLogId(ctx)
737737

738738
request := s3.GetBucketEncryptionInput{
@@ -757,6 +757,10 @@ func (me *CosService) GetBucketEncryption(ctx context.Context, bucket string, cd
757757

758758
if len(response.ServerSideEncryptionConfiguration.Rules) > 0 {
759759
encryption = *response.ServerSideEncryptionConfiguration.Rules[0].ApplyServerSideEncryptionByDefault.SSEAlgorithm
760+
kMSMasterKeyID := response.ServerSideEncryptionConfiguration.Rules[0].ApplyServerSideEncryptionByDefault.KMSMasterKeyID
761+
if kMSMasterKeyID != nil {
762+
kmsId = *kMSMasterKeyID
763+
}
760764
}
761765
return
762766
}

0 commit comments

Comments
 (0)