提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
华为OBS存储使用Nodejs版本
前言
最近在一个新的项目上使用了nodejs,使用的框架是Fastify,其中需要上传附件到华为的OBS中,按照官方文档开发也是遇到了一些问题。
一、 获取AK和SK
购买后从官网获取
略
具体过程可以参考官方文档(https://support.huaweicloud.com/sdk-nodejs-devg-obs/obs_29_0102.html)
二、过程
1 引入和注册插件
1.1 安装插件
npm install esdk-obs-nodejs
1.2 新建obs.js文件
// 引入obs库
// 使用npm安装
var ObsClient = require('esdk-obs-nodejs');
// 如果需要代理可以安装使用
// var ProxyAgent = require('proxy-agent');
// 使用源码安装(乳鸽)
// var ObsClient = require('./lib/obs');
const config = require('../config/config');
// 创建ObsClient实例
const obsClient = new ObsClient({
//推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。
//您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
access_key_id: `${
config.huaweiObs['AccessKeyId']}`,
secret_access_key: `${
config.huaweiObs['SecretAccessKey']}`,
//这里以华北-北京四为例,其他地区请按实际情况填写
// 写你自己的地址
server: 'https://obs.cn-north-4.myhuaweicloud.com',
max_retry_count : 1,
timeout : 200,
ssl_verify : false,
long_conn_param : 0,
// http_agent : new ProxyAgent('*** Provide your Network proxy ***') // 配置网络代理
});
module.exports = obsClient;
注:这里的server地址不需要加上桶名,和调用华为OBS的API的方式不同,调API需要在使用的地址上拼接上桶名,但是nodejs使用的sdk的方式,桶名作为参数进行使用。
其中的配置config,我写在了config.js中
'use strict'
const dotenv = require('dotenv');
const path = require('path');
const envFile = process.env.NODE_ENV ? `.env.${
process.env.NODE_ENV}` : '.env';
dotenv.config({
path: path.resolve(process.cwd(), envFile) });
const config = {
huaweiObs: {
BucketName: "your BucketName",
AccessKeyId: "your AccessKeyId",
SecretAccessKey: "your SecretAccessKey",
},
}
module.exports = config;
1.3 注册插件
由于的目录结构如图所示
因此在注册插件时使用的的方式时
在app.js文件中
'use strict'
const path = require('node:path')
const AutoLoad = require('@fastify/autoload')
const yourPlugin = require('/your_path/yourPlugin');
module.exports = async function (fastify, opts) {
fastify.register(AutoLoad, {
dir: path.join(__dirname, 'plugins'),
options: Object.assign({
}, opts)
})
fastify.register(AutoLoad, {
dir: path.join(__dirname, 'routes'),
options: Object.assign({
}, opts)
})