@@ -731,6 +731,24 @@ func resourceTencentCloudCosBucket() *schema.Resource {
731731 ForceNew : true ,
732732 Description : "Indicates whether to create a bucket of multi available zone. NOTE: If set to true, the versioning must enable." ,
733733 },
734+ "enable_intelligent_tiering" : {
735+ Type : schema .TypeBool ,
736+ Optional : true ,
737+ Computed : true ,
738+ Description : "Enable intelligent tiering. NOTE: When intelligent tiering configuration is enabled, it cannot be turned off or modified." ,
739+ },
740+ "intelligent_tiering_days" : {
741+ Type : schema .TypeInt ,
742+ Optional : true ,
743+ Computed : true ,
744+ Description : "Specifies the limit of days for standard-tier data to low-frequency data in an intelligent tiered storage configuration, with optional days of 30, 60, 90. Default value is 30." ,
745+ },
746+ "intelligent_tiering_request_frequent" : {
747+ Type : schema .TypeInt ,
748+ Optional : true ,
749+ Computed : true ,
750+ Description : "Specify the access limit for converting standard layer data into low-frequency layer data in the configuration. The default value is once, which can be used in combination with the number of days to achieve the conversion effect. For example, if the parameter is set to 1 and the number of access days is 30, it means that objects with less than one visit in 30 consecutive days will be reduced from the standard layer to the low frequency layer." ,
751+ },
734752 //computed
735753 "cos_bucket_url" : {
736754 Type : schema .TypeString ,
@@ -957,6 +975,22 @@ func resourceTencentCloudCosBucketRead(d *schema.ResourceData, meta interface{})
957975 _ = d .Set ("tags" , tags )
958976 }
959977
978+ //read intelligent tiering
979+ result , err := cosService .BucketGetIntelligentTiering (ctx , bucket )
980+ if err != nil {
981+ return fmt .Errorf ("get intelligent tiering failed: %v" , err )
982+ }
983+ if result != nil {
984+ if result .Status == "Enabled" {
985+ _ = d .Set ("enable_intelligent_tiering" , true )
986+ } else {
987+ _ = d .Set ("enable_intelligent_tiering" , false )
988+ }
989+ }
990+ if result != nil && result .Transition != nil {
991+ _ = d .Set ("intelligent_tiering_days" , result .Transition .Days )
992+ _ = d .Set ("intelligent_tiering_request_frequent" , result .Transition .RequestFrequent )
993+ }
960994 return nil
961995}
962996
@@ -966,14 +1000,41 @@ func resourceTencentCloudCosBucketUpdate(d *schema.ResourceData, meta interface{
9661000 logId := getLogId (contextNil )
9671001 ctx := context .WithValue (context .TODO (), logIdKey , logId )
9681002
969- client := meta .(* TencentCloudClient ).apiV3Conn .UseCosClient ()
970- tcClient := meta .(* TencentCloudClient ).apiV3Conn .UseTencentCosClient (d .Id ())
9711003 cosService := CosService {client : meta .(* TencentCloudClient ).apiV3Conn }
9721004
9731005 d .Partial (true )
9741006
1007+ if d .HasChange ("enable_intelligent_tiering" ) || d .HasChange ("intelligent_tiering_days" ) || d .HasChange ("intelligent_tiering_request_frequent" ) {
1008+ old , new := d .GetChange ("enable_intelligent_tiering" )
1009+ if old .(bool ) && ! new .(bool ) {
1010+ return fmt .Errorf ("enable_intelligent_tiering, intelligent_tiering_days and intelligent_tiering_request_frequent not support change!" )
1011+ }
1012+ var transition cos.BucketIntelligentTieringTransition
1013+ if v , ok := d .GetOk ("intelligent_tiering_days" ); ok {
1014+ transition .Days = v .(int )
1015+ } else {
1016+ transition .Days = 30
1017+ }
1018+ if v , ok := d .GetOk ("intelligent_tiering_request_frequent" ); ok {
1019+ transition .RequestFrequent = v .(int )
1020+ } else {
1021+ transition .RequestFrequent = 1
1022+ }
1023+
1024+ if v , ok := d .GetOk ("enable_intelligent_tiering" ); ok && v .(bool ) {
1025+ opt := & cos.BucketPutIntelligentTieringOptions {
1026+ Status : "Enabled" ,
1027+ Transition : & transition ,
1028+ }
1029+ err := cosService .BucketPutIntelligentTiering (ctx , d .Id (), opt )
1030+ if err != nil {
1031+ return err
1032+ }
1033+ }
1034+ }
1035+
9751036 if d .HasChange ("acl" ) {
976- err := resourceTencentCloudCosBucketAclUpdate (ctx , client , d )
1037+ err := resourceTencentCloudCosBucketAclUpdate (ctx , meta , d )
9771038 if err != nil {
9781039 return err
9791040 }
@@ -989,7 +1050,7 @@ func resourceTencentCloudCosBucketUpdate(d *schema.ResourceData, meta interface{
9891050 }
9901051
9911052 if d .HasChange ("cors_rules" ) {
992- err := resourceTencentCloudCosBucketCorsUpdate (ctx , client , d )
1053+ err := resourceTencentCloudCosBucketCorsUpdate (ctx , meta , d )
9931054 if err != nil {
9941055 return err
9951056 }
@@ -1014,39 +1075,39 @@ func resourceTencentCloudCosBucketUpdate(d *schema.ResourceData, meta interface{
10141075 }
10151076
10161077 if d .HasChange ("lifecycle_rules" ) {
1017- err := resourceTencentCloudCosBucketLifecycleUpdate (ctx , client , d )
1078+ err := resourceTencentCloudCosBucketLifecycleUpdate (ctx , meta , d )
10181079 if err != nil {
10191080 return err
10201081 }
10211082
10221083 }
10231084
10241085 if d .HasChange ("website" ) {
1025- err := resourceTencentCloudCosBucketWebsiteUpdate (ctx , client , d )
1086+ err := resourceTencentCloudCosBucketWebsiteUpdate (ctx , meta , d )
10261087 if err != nil {
10271088 return err
10281089 }
10291090
10301091 }
10311092
10321093 if d .HasChange ("encryption_algorithm" ) {
1033- err := resourceTencentCloudCosBucketEncryptionUpdate (ctx , client , d )
1094+ err := resourceTencentCloudCosBucketEncryptionUpdate (ctx , meta , d )
10341095 if err != nil {
10351096 return err
10361097 }
10371098
10381099 }
10391100
10401101 if d .HasChange ("versioning_enable" ) {
1041- err := resourceTencentCloudCosBucketVersioningUpdate (ctx , client , d )
1102+ err := resourceTencentCloudCosBucketVersioningUpdate (ctx , meta , d )
10421103 if err != nil {
10431104 return err
10441105 }
10451106
10461107 }
10471108
10481109 if d .HasChange ("acceleration_enable" ) {
1049- err := resourceTencentCloudCosBucketAccelerationUpdate (ctx , tcClient , d )
1110+ err := resourceTencentCloudCosBucketAccelerationUpdate (ctx , meta , d )
10501111 if err != nil {
10511112 return err
10521113 }
@@ -1072,7 +1133,7 @@ func resourceTencentCloudCosBucketUpdate(d *schema.ResourceData, meta interface{
10721133 }
10731134
10741135 if d .HasChange ("log_enable" ) || d .HasChange ("log_target_bucket" ) || d .HasChange ("log_prefix" ) {
1075- err := resourceTencentCloudCosBucketLogStatusUpdate (ctx , client , d )
1136+ err := resourceTencentCloudCosBucketLogStatusUpdate (ctx , meta , d )
10761137 if err != nil {
10771138 return err
10781139 }
@@ -1112,7 +1173,7 @@ func resourceTencentCloudCosBucketDelete(d *schema.ResourceData, meta interface{
11121173 return nil
11131174}
11141175
1115- func resourceTencentCloudCosBucketEncryptionUpdate (ctx context.Context , client * s3. S3 , d * schema.ResourceData ) error {
1176+ func resourceTencentCloudCosBucketEncryptionUpdate (ctx context.Context , meta interface {} , d * schema.ResourceData ) error {
11161177 logId := getLogId (ctx )
11171178
11181179 bucket := d .Get ("bucket" ).(string )
@@ -1121,7 +1182,7 @@ func resourceTencentCloudCosBucketEncryptionUpdate(ctx context.Context, client *
11211182 request := s3.DeleteBucketEncryptionInput {
11221183 Bucket : aws .String (bucket ),
11231184 }
1124- response , err := client .DeleteBucketEncryption (& request )
1185+ response , err := meta .( * TencentCloudClient ). apiV3Conn . UseCosClient () .DeleteBucketEncryption (& request )
11251186 if err != nil {
11261187 log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
11271188 logId , "delete bucket encryption" , request .String (), err .Error ())
@@ -1147,7 +1208,7 @@ func resourceTencentCloudCosBucketEncryptionUpdate(ctx context.Context, client *
11471208 rules = append (rules , rule )
11481209 request .ServerSideEncryptionConfiguration .Rules = rules
11491210
1150- response , err := client .PutBucketEncryption (& request )
1211+ response , err := meta .( * TencentCloudClient ). apiV3Conn . UseCosClient () .PutBucketEncryption (& request )
11511212 if err != nil {
11521213 log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
11531214 logId , "put bucket encryption" , request .String (), err .Error ())
@@ -1159,7 +1220,7 @@ func resourceTencentCloudCosBucketEncryptionUpdate(ctx context.Context, client *
11591220 return nil
11601221}
11611222
1162- func resourceTencentCloudCosBucketVersioningUpdate (ctx context.Context , client * s3. S3 , d * schema.ResourceData ) error {
1223+ func resourceTencentCloudCosBucketVersioningUpdate (ctx context.Context , meta interface {} , d * schema.ResourceData ) error {
11631224 logId := getLogId (ctx )
11641225
11651226 bucket := d .Get ("bucket" ).(string )
@@ -1174,7 +1235,7 @@ func resourceTencentCloudCosBucketVersioningUpdate(ctx context.Context, client *
11741235 Status : aws .String (status ),
11751236 },
11761237 }
1177- response , err := client .PutBucketVersioning (& request )
1238+ response , err := meta .( * TencentCloudClient ). apiV3Conn . UseCosClient () .PutBucketVersioning (& request )
11781239 if err != nil {
11791240 log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
11801241 logId , "put bucket encryption" , request .String (), err .Error ())
@@ -1186,7 +1247,7 @@ func resourceTencentCloudCosBucketVersioningUpdate(ctx context.Context, client *
11861247 return nil
11871248}
11881249
1189- func resourceTencentCloudCosBucketAccelerationUpdate (ctx context.Context , client * cos. Client , d * schema.ResourceData ) error {
1250+ func resourceTencentCloudCosBucketAccelerationUpdate (ctx context.Context , meta interface {} , d * schema.ResourceData ) error {
11901251 logId := getLogId (ctx )
11911252
11921253 bucket := d .Get ("bucket" ).(string )
@@ -1199,7 +1260,7 @@ func resourceTencentCloudCosBucketAccelerationUpdate(ctx context.Context, client
11991260 opt := & cos.BucketPutAccelerateOptions {
12001261 Status : status ,
12011262 }
1202- response , err := client .Bucket .PutAccelerate (ctx , opt )
1263+ response , err := meta .( * TencentCloudClient ). apiV3Conn . UseTencentCosClient ( d . Id ()) .Bucket .PutAccelerate (ctx , opt )
12031264 if err != nil {
12041265 log .Printf ("[CRITAL]%s api[%s] fail, status [%s], reason[%s]\n " ,
12051266 logId , "put bucket acceleration" , opt .Status , err .Error ())
@@ -1244,7 +1305,7 @@ func resourceTencentCloudCosBucketReplicaUpdate(ctx context.Context, service Cos
12441305 return nil
12451306}
12461307
1247- func resourceTencentCloudCosBucketAclUpdate (ctx context.Context , client * s3. S3 , d * schema.ResourceData ) error {
1308+ func resourceTencentCloudCosBucketAclUpdate (ctx context.Context , meta interface {} , d * schema.ResourceData ) error {
12481309 logId := getLogId (ctx )
12491310
12501311 bucket := d .Get ("bucket" ).(string )
@@ -1253,7 +1314,7 @@ func resourceTencentCloudCosBucketAclUpdate(ctx context.Context, client *s3.S3,
12531314 Bucket : aws .String (bucket ),
12541315 ACL : aws .String (acl ),
12551316 }
1256- response , err := client .PutBucketAcl (& request )
1317+ response , err := meta .( * TencentCloudClient ). apiV3Conn . UseCosClient () .PutBucketAcl (& request )
12571318 if err != nil {
12581319 log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
12591320 logId , "put bucket acl" , request .String (), err .Error ())
@@ -1265,7 +1326,7 @@ func resourceTencentCloudCosBucketAclUpdate(ctx context.Context, client *s3.S3,
12651326 return nil
12661327}
12671328
1268- func resourceTencentCloudCosBucketCorsUpdate (ctx context.Context , client * s3. S3 , d * schema.ResourceData ) error {
1329+ func resourceTencentCloudCosBucketCorsUpdate (ctx context.Context , meta interface {} , d * schema.ResourceData ) error {
12691330 logId := getLogId (ctx )
12701331
12711332 bucket := d .Get ("bucket" ).(string )
@@ -1275,7 +1336,7 @@ func resourceTencentCloudCosBucketCorsUpdate(ctx context.Context, client *s3.S3,
12751336 request := s3.DeleteBucketCorsInput {
12761337 Bucket : aws .String (bucket ),
12771338 }
1278- response , err := client .DeleteBucketCors (& request )
1339+ response , err := meta .( * TencentCloudClient ). apiV3Conn . UseCosClient () .DeleteBucketCors (& request )
12791340 if err != nil {
12801341 log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
12811342 logId , "delete bucket cors" , request .String (), err .Error ())
@@ -1318,7 +1379,7 @@ func resourceTencentCloudCosBucketCorsUpdate(ctx context.Context, client *s3.S3,
13181379 CORSRules : rules ,
13191380 },
13201381 }
1321- response , err := client .PutBucketCors (& request )
1382+ response , err := meta .( * TencentCloudClient ). apiV3Conn . UseCosClient () .PutBucketCors (& request )
13221383 if err != nil {
13231384 log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
13241385 logId , "put bucket cors" , request .String (), err .Error ())
@@ -1330,7 +1391,7 @@ func resourceTencentCloudCosBucketCorsUpdate(ctx context.Context, client *s3.S3,
13301391 return nil
13311392}
13321393
1333- func resourceTencentCloudCosBucketLifecycleUpdate (ctx context.Context , client * s3. S3 , d * schema.ResourceData ) error {
1394+ func resourceTencentCloudCosBucketLifecycleUpdate (ctx context.Context , meta interface {} , d * schema.ResourceData ) error {
13341395 logId := getLogId (ctx )
13351396
13361397 bucket := d .Get ("bucket" ).(string )
@@ -1339,7 +1400,7 @@ func resourceTencentCloudCosBucketLifecycleUpdate(ctx context.Context, client *s
13391400 request := s3.DeleteBucketLifecycleInput {
13401401 Bucket : aws .String (bucket ),
13411402 }
1342- response , err := client .DeleteBucketLifecycle (& request )
1403+ response , err := meta .( * TencentCloudClient ). apiV3Conn . UseCosClient () .DeleteBucketLifecycle (& request )
13431404 if err != nil {
13441405 log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
13451406 logId , "delete bucket lifecycle" , request .String (), err .Error ())
@@ -1448,7 +1509,7 @@ func resourceTencentCloudCosBucketLifecycleUpdate(ctx context.Context, client *s
14481509 Rules : rules ,
14491510 },
14501511 }
1451- response , err := client .PutBucketLifecycleConfiguration (& request )
1512+ response , err := meta .( * TencentCloudClient ). apiV3Conn . UseCosClient () .PutBucketLifecycleConfiguration (& request )
14521513 if err != nil {
14531514 log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
14541515 logId , "put bucket lifecycle" , request .String (), err .Error ())
@@ -1461,7 +1522,7 @@ func resourceTencentCloudCosBucketLifecycleUpdate(ctx context.Context, client *s
14611522 return nil
14621523}
14631524
1464- func resourceTencentCloudCosBucketWebsiteUpdate (ctx context.Context , client * s3. S3 , d * schema.ResourceData ) error {
1525+ func resourceTencentCloudCosBucketWebsiteUpdate (ctx context.Context , meta interface {} , d * schema.ResourceData ) error {
14651526 logId := getLogId (ctx )
14661527
14671528 bucket := d .Get ("bucket" ).(string )
@@ -1471,7 +1532,7 @@ func resourceTencentCloudCosBucketWebsiteUpdate(ctx context.Context, client *s3.
14711532 request := s3.DeleteBucketWebsiteInput {
14721533 Bucket : aws .String (bucket ),
14731534 }
1474- response , err := client .DeleteBucketWebsite (& request )
1535+ response , err := meta .( * TencentCloudClient ). apiV3Conn . UseCosClient () .DeleteBucketWebsite (& request )
14751536 if err != nil {
14761537 log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
14771538 logId , "delete bucket website" , request .String (), err .Error ())
@@ -1504,7 +1565,7 @@ func resourceTencentCloudCosBucketWebsiteUpdate(ctx context.Context, client *s3.
15041565 },
15051566 },
15061567 }
1507- response , err := client .PutBucketWebsite (& request )
1568+ response , err := meta .( * TencentCloudClient ). apiV3Conn . UseCosClient () .PutBucketWebsite (& request )
15081569 if err != nil {
15091570 log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
15101571 logId , "put bucket website" , request .String (), err .Error ())
@@ -1517,7 +1578,7 @@ func resourceTencentCloudCosBucketWebsiteUpdate(ctx context.Context, client *s3.
15171578 return nil
15181579}
15191580
1520- func resourceTencentCloudCosBucketLogStatusUpdate (ctx context.Context , client * s3. S3 , d * schema.ResourceData ) error {
1581+ func resourceTencentCloudCosBucketLogStatusUpdate (ctx context.Context , meta interface {} , d * schema.ResourceData ) error {
15211582 logId := getLogId (ctx )
15221583
15231584 bucket := d .Id ()
@@ -1544,7 +1605,7 @@ func resourceTencentCloudCosBucketLogStatusUpdate(ctx context.Context, client *s
15441605 },
15451606 }
15461607
1547- resp , err := client .PutBucketLogging (request )
1608+ resp , err := meta .( * TencentCloudClient ). apiV3Conn . UseCosClient () .PutBucketLogging (request )
15481609 if err != nil {
15491610 log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
15501611 logId , "cos enable log error" , request .String (), err .Error ())
@@ -1566,7 +1627,7 @@ func resourceTencentCloudCosBucketLogStatusUpdate(ctx context.Context, client *s
15661627 BucketLoggingStatus : & s3.BucketLoggingStatus {},
15671628 }
15681629
1569- resp , err := client .PutBucketLogging (request )
1630+ resp , err := meta .( * TencentCloudClient ). apiV3Conn . UseCosClient () .PutBucketLogging (request )
15701631 if err != nil {
15711632 return fmt .Errorf ("cos disable log error: %s, bucket: %s" , err .Error (), bucket )
15721633 }
0 commit comments