前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云函数挂载CFS文件系统的实践

腾讯云函数挂载CFS文件系统的实践

原创
作者头像
buzzfrog
发布2023-03-28 09:39:49
1.6K0
发布2023-03-28 09:39:49
举报
文章被收录于专栏:云上修行

背景

在云函数开发的过程中,我们难免碰到需要访问本地文件的需求(例如:为了通过ip地址获得城市名称,云函数需要检索近一百MB的ip地址库文件),由于云函数无状态的特性,自身并不与特定服务器和本地硬盘关联,而远程访问COS对象存储等方式,则面临将大文件下载到本地缓存中仅获取寥寥数行信息。这时,挂载CFS文件系统是一个较佳的选择。

下面以Node.js 12.16的云函数环境描述如何使用serverless.yml来配置CFS文件系统。

前置操作

serverless.yml 文件中设置如下配置:

代码语言:txt
复制
memorySize: 1024 # 由于ip地址库文件较大,提升内存的大小
代码语言:txt
复制
cfs:
    - cfsId: cfs-xxxxxxxx # 文件系统实例 id
      mountInsId: cfs-xxxxxxxx # 文件系统挂载点 id
      localMountDir: /mnt/ # 本地挂载点,云函数目录
      remoteMountDir: / # 远程挂载点,CFS 目录

向CFS中写入文件

代码语言:txt
复制
'use strict';
const fs = require('fs');

exports.main_handler = async (event, context) => {
  await fs.promises.writeFile('/mnt/myfolder/myfile.txt', JSON.stringify(event));
  return event;
};

node.js代码片段,将COS中的文件写入到CFS中

腾讯云APPID请在这里查看
腾讯云APPID请在这里查看
腾讯云SecretId和SecretKey请在这里查看
腾讯云SecretId和SecretKey请在这里查看
代码语言:txt
复制
'use strict';

const COS = require('cos-nodejs-sdk-v5')

const APPID = '130*******' // 请替换为您使用的腾讯云APPID
const SECRET_ID = '******' // 请替换为您的 SecretId
const SECRET_KEY = '******' // 请替换为您的 SecretKey
const REGION = 'ap-shanghai' // 我目前使用的都是ap-shanghai,如果后续有变化,请替换为您bucket所在的地域

const cosInst = new COS({
  SecretId: SECRET_ID,
  SecretKey: SECRET_KEY
});

exports.main_handler = async (event, context) => {
    const bucketName = 'kanas';
    const bucket = `${key}-${APPID}`;
    const downloadPath = `/mnt/ipv4.ipdb`;

    cosInst.getObject({
      Bucket: bucket, /* 填入您自己的存储桶,必须字段 */
      Region: REGION,  /* 存储桶所在地域,例如ap-shanghai,必须字段 */
      Key: 'ipv4.ipdb',  /* 存储在桶里的对象键(例如1.jpg,a/b/test.txt),必须字段 */
      Output: downloadPath,
    }, function(err, data) {
      console.log(err || data);
    });

    return event
};

参考文档:

云函数挂载 CFS 文件系统: https://cloud.tencent.com/document/product/583/46199

创建文件系统及挂载点: https://cloud.tencent.com/document/product/582/9132

在 Linux 客户端上使用 CFS 文件系统: https://cloud.tencent.com/document/product/582/11523

在云函数 SCF上使用 CFS: https://cloud.tencent.com/document/product/582/47148

云函数tencent-multi-scf配置:

https://github.com/serverless-components/tencent-multi-scf/blob/master/docs/configure.md

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 前置操作
  • 向CFS中写入文件
  • 参考文档:
相关产品与服务
云函数
云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。云函数是实时文件处理和数据处理等场景下理想的计算平台。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档