Feature Overview
This document provides SDK code samples for modifying object metadata.
Modifying object metadata
If the source and destination objects are the same and
CopyStatus is set to Replaced, you can modify the object metadata via the header.Sample Request
# -*- coding=utf-8from qcloud_cos import CosConfigfrom qcloud_cos import CosS3Clientimport sysimport osimport logging# Under normal circumstances, use the INFO log level. To locate issues, change it to DEBUG, and the SDK will print communication information with the server.logging.basicConfig(level=logging.INFO, stream=sys.stdout)# 1. Set user properties, including secret_id, secret_key, region, etc. Appid has been removed from CosConfig, please include Appid in the Bucket parameter. Bucket is composed of BucketName-Appid.secret_id = os.environ['COS_SECRET_ID'] # User <1>SecretId</1>. We recommend that you use a sub-account key and follow the principle of least privilege to reduce risks. For more information on how to obtain a sub-account key, visit https://cloud.tencent.com/document/product/598/37140.secret_key = os.environ['COS_SECRET_KEY'] # User <1>SecretKey</1>. We recommend that you use a sub-account key and follow the principle of least privilege to reduce risks. For more information on how to obtain a sub-account key, visit https://cloud.tencent.com/document/product/598/37140.region = 'ap-beijing' # Replace it with the actual region, which can be viewed in the console at https://console.cloud.tencent.com/cos5/bucket.For a list of all regions supported by COS, visit https://cloud.tencent.com/document/product/436/6224token = None # Token is required for temporary keys but not permanent keys. For more information about how to generate and use a temporary key, see https://cloud.tencent.com/document/product/436/14048.scheme = 'https' # Specify whether to use HTTP or HTTPS protocol to access COS. This is optional and is https by default.config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=scheme)client = CosS3Client(config)response = client.copy_object(Bucket='examplebucket-1250000000',Key='exampleobject',CopySource={'Bucket': 'sourcebucket-1250000000','Key': 'exampleobject','Region': 'ap-guangzhou'},CopyStatus='Replaced',ContentType='text/plain', # Modify object ContentTypeMetadata={'x-cos-meta-key1': 'value1', 'x-cos-meta-key2': 'value2'} # Modify custom metadata)
Description
Parameter name | ParameterDescription | Local Disk Types | Required |
Bucket | Bucket name in the format of BucketName-APPID | String | Required |
Key | ObjectKey is the unique identifier of the object in the bucket. For example, in the object's access domain name examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg, the ObjectKey is doc/pic.jpg | String | Required |
CopySource | Path of the source object to be copied, including Bucket, Key, Region, VersionId | Dict | Required |
CopyStatus | Valid values: Copy: ignores the configured metadata and copy the file directly. Replaced: modifies the metadata according to the configured metadata. If the destination path and source path are the same, this parameter must be set to Replaced | String | Required |
ACL | Sets the object ACL, such as private or public-read | String | Not required |
GrantFullControl | Grants full permission in the format: id="OwnerUin" | String | Not required |
GrantRead | Grants read permission in the format: id="OwnerUin" | String | Not required |
Expires | Sets Expires. | String | Not required |
CacheControl | Cache policy. Sets Cache-Control. | String | Not required |
ContentType | Content type. Sets Content-Type | String | Not required |
ContentDisposition | Filename | String | Not required |
ContentEncoding | Encoding format. Sets Content-Encoding | String | Not required |
ContentLanguage | Language type. Sets Content-Language | String | Not required |
Metadata | User-defined object metadata | Dict | Not required |
Modifying the storage class of an object
If the source and destination objects are the same and
CopyStatus is set to Replaced, you can use StorageClass to modify the storage class.Sample Request
# -*- coding=utf-8from qcloud_cos import CosConfigfrom qcloud_cos import CosS3Clientimport sysimport osimport logging# Under normal circumstances, use the INFO log level. To locate issues, change it to DEBUG, and the SDK will print communication information with the server.logging.basicConfig(level=logging.INFO, stream=sys.stdout)# 1. Set user properties, including secret_id, secret_key, region, etc. Appid has been removed from CosConfig, please include Appid in the Bucket parameter. Bucket is composed of BucketName-Appid.secret_id = os.environ['COS_SECRET_ID'] # User <1>SecretId</1>. We recommend that you use a sub-account key and follow the principle of least privilege to reduce risks. For more information on how to obtain a sub-account key, visit https://cloud.tencent.com/document/product/598/37140.secret_key = os.environ['COS_SECRET_KEY'] # User <1>SecretKey</1>. We recommend that you use a sub-account key and follow the principle of least privilege to reduce risks. For more information on how to obtain a sub-account key, visit https://cloud.tencent.com/document/product/598/37140.region = 'ap-beijing' # Replace it with the actual region, which can be viewed in the console at https://console.cloud.tencent.com/cos5/bucket.For a list of all regions supported by COS, visit https://cloud.tencent.com/document/product/436/6224token = None # Token is required for temporary keys but not permanent keys. For more information about how to generate and use a temporary key, see https://cloud.tencent.com/document/product/436/14048.scheme = 'https' # Specify whether to use HTTP or HTTPS protocol to access COS. This is optional and is https by default.config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=scheme)client = CosS3Client(config)response = client.copy_object(Bucket='examplebucket-1250000000',Key='exampleobject',CopySource={'Bucket': 'examplebucket-1250000000','Key': 'exampleobject','Region': 'ap-guangzhou'},CopyStatus='Replaced',StorageClass='STANDARD_IA' # Change to infrequent access storage)
Sample request with all parameters
response = client.copy_object(Bucket='examplebucket-1250000000',Key='exampleobject',CopySource={'Bucket': 'sourcebucket-1250000000','Key': 'exampleobject','Region': 'ap-guangzhou','VersionId': 'string'},CopyStatus='Copy'|'Replaced',ACL='private'|'public-read',GrantFullControl='string',GrantRead='string',StorageClass='STANDARD'|'STANDARD_IA',Expires='string',CacheControl='string',ContentType='string',ContentDisposition='string',ContentEncoding='string',ContentLanguage='string',Metadata={'x-cos-meta-key1': 'value1','x-cos-meta-key2': 'value2'})
Description
Parameter name | ParameterDescription | Local Disk Types | Required |
Bucket | Bucket name in the format of BucketName-APPID | String | Required |
Key | ObjectKey is the unique identifier of the object in the bucket. For example, in the object's access domain name examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg, the ObjectKey is doc/pic.jpg | String | Required |
CopySource | Path of the source object to be copied, including Bucket, Key, Region, VersionId | Dict | Required |
CopyStatus | Valid values: Copy: ignores the configured metadata and copy the file directly. Replaced: modifies the metadata according to the configured metadata. If the destination path and source path are the same, this parameter must be set to Replaced | String | Required |
StorageClass | Sets the object storage class. Enumerated values: STANDARD (default) or STANDARD_IA. | String | Not required |