Code Examples (SDK for Node.js)
If you have any questions during development, post them on the Issues page of GitHub.
Object Encryption and Upload
This example uploads object example/objectname to bucket examplebucket and encrypts it using SSE-C.
// Import the OBS library.
// Use npm to install the client.
const ObsClient = require("esdk-obs-nodejs");
// Use the source code to install the client.
// var ObsClient = require('./lib/obs');
// Create an instance of ObsClient.
const obsClient = new ObsClient({
// Obtain an AK/SK pair using environment variables or import an AK/SK pair in other ways. Using hard coding may result in leakage.
// Obtain an AK/SK pair on the management console. For details, see https://support.huaweicloud.com/eu/usermanual-ca/ca_01_0003.html.
access_key_id: process.env.ACCESS_KEY_ID,
secret_access_key: process.env.SECRET_ACCESS_KEY,
// (Optional) If you use a temporary AK/SK pair and a security token to access OBS, you are advised not to use hard coding, which may result in information leakage. You can obtain an AK/SK pair using environment variables or import an AK/SK pair in other ways.
// security_token: process.env.SECURITY_TOKEN,
// Enter the endpoint corresponding to the region where the bucket is located. EU-Dublin is used here in this example. Replace it with the one currently in use.
server: "https://obs.eu-west-101.myhuaweicloud.eu"
});
async function putObject() {
try {
const params = {
// Specify the bucket name.
Bucket: "examplebucket",
// Specify an object. example/objectname is used in this example.
Key: "example/objectname",
// Specify a text object.
Body : 'Hello OBS',
// Specify SSE-C as the encryption algorithm.
SseC: 'AES256',
SseCKey: 'your sse-c key generated by AES-256 algorithm'
};
// Upload and encrypt the object.
const result = await obsClient.putObject(params);
if (result.CommonMsg.Status <= 300) {
console.log("Put object(%s) under the bucket(%s) successful!", params.Bucket);
console.log("RequestId: %s", result.CommonMsg.RequestId);
return;
};
console.log("An ObsError was found, which means your request sent to OBS was rejected with an error response.");
console.log("Status: %d", result.CommonMsg.Status);
console.log("Code: %s", result.CommonMsg.Code);
console.log("Message: %s", result.CommonMsg.Message);
console.log("RequestId: %s", result.CommonMsg.RequestId);
} catch (error) {
console.log("An Exception was found, which means the client encountered an internal problem when attempting to communicate with OBS, for example, the client was unable to access the network.");
console.log(error);
};
};
putObject();
Object Decryption and Download
This example downloads the encrypted object example/objectname using a stream.
// Import the OBS library.
// Use npm to install the client.
const ObsClient = require("esdk-obs-nodejs");
// Use the source code to install the client.
// var ObsClient = require('./lib/obs');
// Create an instance of ObsClient.
const obsClient = new ObsClient({
// Obtain an AK/SK pair using environment variables or import an AK/SK pair in other ways. Using hard coding may result in leakage.
// Obtain an AK/SK pair on the management console. For details, see https://support.huaweicloud.com/eu/usermanual-ca/ca_01_0003.html.
access_key_id: process.env.ACCESS_KEY_ID,
secret_access_key: process.env.SECRET_ACCESS_KEY,
// (Optional) If you use a temporary AK/SK pair and a security token to access OBS, you are advised not to use hard coding, which may result in information leakage. You can obtain an AK/SK pair using environment variables or import an AK/SK pair in other ways.
// security_token: process.env.SECURITY_TOKEN,
// Enter the endpoint corresponding to the region where the bucket is located. EU-Dublin is used here in this example. Replace it with the one currently in use.
server: "https://obs.eu-west-101.myhuaweicloud.eu"
});
async function getObject() {
try {
const params = {
// Specify the bucket name.
Bucket: "examplebucket",
// Specify the object (example/objectname in this example).
Key: 'example/objectname',
// Specify SSE-C as the algorithm.
SseC: 'AES256',
// Specify the same key you used for encrypting the object during the upload.
SseCKey: 'your sse-c key generated by AES-256 algorithm'
};
// Download the encrypted object.
const result = await obsClient.getObject(params);
if (result.CommonMsg.Status <= 300) {
console.log("Get object(%s) under the bucket(%s) successful!", params.Key, params.Bucket);
console.log("RequestId: %s", result.CommonMsg.RequestId);
console.log('Object Content: %s', result.InterfaceResult.Content);
return;
};
console.log("An ObsError was found, which means your request sent to OBS was rejected with an error response.");
console.log("Status: %d", result.CommonMsg.Status);
console.log("Code: %s", result.CommonMsg.Code);
console.log("Message: %s", result.CommonMsg.Message);
console.log("RequestId: %s", result.CommonMsg.RequestId);
} catch (error) {
console.log("An Exception was found, which means the client encountered an internal problem when attempting to communicate with OBS, for example, the client was unable to access the network.");
console.log(error);
};
};
getObject();
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.