tencent cloud

All product documents
Cloud Object Storage
Pre-Signed URL
Last updated: 2024-02-02 12:12:58
Pre-Signed URL
Last updated: 2024-02-02 12:12:58

Overview

The C++ SDK provides APIs to generate signatures and obtain pre-signed URLs. For detailed directions, see the description and examples below. For details about how to use a pre-signed URL for uploads, see Upload via Pre-Signed URL. For details about how to use a pre-signed URL for downloads, see Download via Pre-Signed URL.
Note:
You are advised to use a temporary key to generate pre-signed URLs for the security of your requests such as uploads and downloads. When you apply for a temporary key, follow the Principle of Least Privilege to avoid leaking resources besides your buckets and objects.
If you need to use a permanent key to generate a pre-signed URL, you are advised to limit the permission of the permanent key to uploads and downloads only to avoid risks.

Generating a Signature

Description

Calculate and generate a signature.

Method prototype 1

static std::string Sign(const std::string& secret_id,
const std::string& secret_key,
const std::string& http_method,
const std::string& in_uri,
const std::map<std::string, std::string>& headers,
const std::map<std::string, std::string>& params);

Parameter description

Parameter
Description
Type
secret_id
ID to verify the developer’s identity for the project
String
secret_key
Key owned by the developer to verify identity for the project
String
http_method
HTTP method, such as POST, GET, HEAD, and PUT; case-insensitive
String
in_uri
HTTP uri
String
headers
HTTP header key-value pair
map<string,string>
params
HTTP params key-value pair
map<string,string>

Response description

A signature string is returned, which can be used during the specified validity period (It is set using CosSysConfig. Default value: 60 sec). If an empty string is returned, the signature fails to be calculated.

Method prototype 2

static std::string Sign(const std::string& secret_id,
const std::string& secret_key,
const std::string& http_method,
const std::string& in_uri,
const std::map<std::string, std::string>& headers,
const std::map<std::string, std::string>& params,
uint64_t start_time_in_s,
uint64_t end_time_in_s);

Parameter description

Parameter
Description
Type
secret_id
ID to verify the developer’s identity for the project
String
secret_key
Key owned by the developer to verify identity for the project
String
http_method
HTTP method, such as POST, GET, HEAD, and PUT; case-insensitive
String
in_uri
HTTP uri
String
headers
HTTP header key-value pair
map <string,string>
params
HTTP params key-value pair
map <string,string>
start_time_in_s
Start time of the signature
uint64_t
end_time_in_s
End time of the signature
uint64_t

Response description

A signature string is returned, which can be used during the specified validity period (It is set using CosSysConfig. Default value: 60 sec). If an empty string is returned, the signature fails to be calculated.

Getting a Pre-signed Request URL

std::string GeneratePresignedUrl(const GeneratePresignedUrlReq& req)

Parameter description

Parameter
Description
req
GeneratePresignedUrlReq, request of the GeneratePresignedUrl operation
The enumerated values of HTTP_METHOD are defined as follows:
typedef enum {
HTTP_HEAD,
HTTP_GET,
HTTP_PUT,
HTTP_POST,
HTTP_DELETE,
HTTP_OPTIONS
} HTTP_METHOD;

Pre-signed Request Samples

You can initiate a pre-signed request by setting a permanent or temporary key using the CosConfig class. For the detailed configuration file, please see Getting Started.
qcloud_cos::CosConfig config("./config.json");
qcloud_cos::CosAPI cos(config);

std::string bucket_name = "examplebucket-1250000000";
std::string object_name = "exampleobject";

// Add the bucket name, object key, and HTTP request method.
// Note: users do not need to encode object_name.
qcloud_cos::GeneratePresignedUrlReq req(bucket_name, object_name, qcloud_cos::HTTP_GET);
std::string presigned_url = cos.GeneratePresignedUrl(req);

Was this page helpful?
You can also Contact Sales or Submit a Ticket for help.
Yes
No

Feedback

Contact Us

Contact our sales team or business advisors to help your business.

Technical Support

Open a ticket if you're looking for further assistance. Our Ticket is 7x24 avaliable.

7x24 Phone Support
Hong Kong, China
+852 800 906 020 (Toll Free)
United States
+1 844 606 0804 (Toll Free)
United Kingdom
+44 808 196 4551 (Toll Free)
Canada
+1 888 605 7930 (Toll Free)
Australia
+61 1300 986 386 (Toll Free)
EdgeOne hotline
+852 300 80699
More local hotlines coming soon