本文介绍如何配置NAS及其依赖资源,以及在配置成功后如何通过fun nas
的相关命令管理NAS文件。
关于如何将函数计算的相关资源从Funcraft迁移到Serverless Devs进行管理的详细操作,请参见从Funcraft迁移到Serverless Devs。
关于Serverless Devs的详细信息,请参见什么是Serverless Devs。
关于如何使用Serverless Devs管理NAS文件,请参见使用s nas的相关命令管理NAS文件。
由此带来的不便,敬请谅解!
背景信息
- 通过
NasConfig: Auto
一键配置NAS及其依赖的VPC资源在使用函数计算过程中,可以通过NAS来存放一些体积较大且不易变动的资源,配置NAS及其资源后,可以让指定服务下的函数访问NAS文件系统时如同访问本地文件系统一样,这使得即使在依赖比较大的场景下,依旧可以借助函数计算来快速开发一个Serverless应用。
但是NAS在帮助函数计算解决大依赖问题的同时,由于其自身的配置比较复杂,也增加了函数计算的使用难度。为了简化NAS的使用体验,Funcraft添加了一个新的配置项
NasConfig: Auto
,通过该属性,您可以一键配置NAS及其依赖的VPC资源。 - 通过
fun nas
管理NAS文件以及上传本地NAS文件即使配置好了NAS服务,仍需面对上传本地资源到NAS文件系统中等问题,上传资源到NAS文件系统中通常有以下几种方案:- 购买一台ECS,然后挂载NAS,通过FTP或者网盘等实现将文件上传到NAS。
- 使用在线迁移服务,将OSS资源迁移到NAS。更多信息,请参见如何将阿里云OSS的资源迁移至阿里云NAS。
- 借助函数计算,开发一个Serverless的NAS文件管理应用。更多信息,请参见开发NAS文件管理应用。
- 通过
fun nas
命令管理NAS文件及上传本地NAS文件。fun nas
本身实现思路是上述借助函数计算,开发一个Serverless的NAS文件管理应用的升级版,解决了以下问题,例如:- 需要手动部署一套服务。
- 不支持目录上传。
- 不支持大于6 MB的文件上传。
fun nas功能介绍
fun nas
的功能介绍。fun nas -h
预期输出:Usage: fun nas [options] [command]
Operate your remote NAS file system locally.
Options:
-h, --help display help for command
Commands:
info Print nas config information, such as local temp directory of NAS.
init For each service with NAS config, create local NAS folder and deploy fun nas server service.
sync Synchronize the local NAS directory with the remote NAS file system.
ls List contents of remote NAS directory
rm Remove remote NAS file.
cp copy local file/folder to remote NAS
help [command] display help for command
配置NAS
本文主要介绍两种方式配置NAS,成功配置后您的函数可以访问指定的NAS资源,建议您使用方式二配置NAS。
方式一
使用控制台配置NAS及其依赖资源。
方式二
使用template.yml文件及fun deploy
命令配置NAS及其依赖资源。
相关操作
您可以通过以下不同的命令,了解fun nas
的相关功能。
NasConfig
服务示例修改文件内容,如下所示。ROSTemplateFormatVersion: '2015-09-01'
Transform: 'Aliyun::Serverless-2018-04-03'
Resources:
nasDemo:
Type: 'Aliyun::Serverless::Service'
Properties:
NasConfig: Auto
- 在根目录中执行以下命令,初始化配置:
fun nas init
预期输出:start fun nas init... Waiting for service fun-nas-NasDemo to be deployed... ... ... using 'VpcConfig: Auto', Fun will try to generate related vpc resources automatically ... ... generated auto VpcConfig done: {"vpcId":"vpc-bp1pcr7o8ksmgojt4****","vswitchIds":["vsw-bp13qdw9qe1i2it4y****"],"securityGroupId":"sg-bp161u0547x0lq5k****"} using 'NasConfig: Auto', Fun will try to generate related nas file system automatically ... ... generated auto NasConfig done: {"UserId":100**,"GroupId":100**,"MountPoints":[{"ServerAddr":"****c4a6d9-gry74.cn-hangzhou.nas.aliyuncs.com:/fun-nas-NasDemo","MountDir":"/mnt/auto"}]} Checking if nas directories /mnt/auto/fun-nas-NasDemo exists, if not, it will be created automatically Checking nas directories done ["/mnt/auto/fun-nas-NasDemo"] ... ... service fun-nas-NasDemo deploy success Fun nas init Success Tips for next step ====================== $ fun nas info # Show NAS info $ fun nas ls # List NAS files $ fun nas sync # Synchronize files to nas $ fun deploy # Deploy Resources
说明 您执行fun nas init
命令后,NAS及VPC相关资源已成功创建,如果您修改了NAS或VPC的相关配置,您只需重新执行fun nas init
或fun vpc init
命令进行一次初始化配置即可。 - 在根目录中执行以下命令查看NAS目录。
fun nas info
预期输出:Local NAS folder of service NasDemo includes: /NasDemo/.fun/nas/auto-default/NasDemo
- 在根目录中执行以下命令同步本地NAS资源信息,如果本地资源有变更,您只需重新执行以下命令即可。
fun nas sync
预期输出:Starting upload /NasDemo/.fun/nas/auto-default/NasDemo to nas://NasDemo:/mnt/auto/ NAS path checking... zipping /NasDemo/.fun/nas/auto-default/NasDemo /NasDemo/.fun/nas/auto-default/.NasDemo.zip - zipped generate tmpDir: /NasDemo/.fun/nas/auto-default/.fun_nas_tmp/42658c92eef63f2b3b13e5f46315ee7d Split zip file to 1 small files Uploading... Upload /NasDemo/.fun/nas/auto-default/NasDemo to /mnt/auto/ done!
- 您可以在根目录中通过以下两种方式命令查看NAS服务中的文件。
- 指定列出某个服务下的NAS路径内容:
fun nas ls nas://ServiceName/Path
。执行以下命令查看NAS服务中的资源。
预期输出:fun nas ls -a nas://NasDemo/mnt/auto
total 10 drwxr-xr-x 4 user10003 10003 4096 Aug 4 11:38 . drwxr-xr-x 1 root root 4096 Aug 4 11:37 .. drwxr-xr-x 4 user10003 10003 4096 Aug 4 11:38 .fun_nas_tmp -rw-r--r-- 1 user10003 10003 19 Aug 4 11:38 test drwxr-xr-x 2 user10003 10003 4096 Aug 4 11:38 testDir
- 如果模板文件template.yml的文件中只包含一个服务,您可以将ServiceName省略掉,即
fun nas ls nas:///Path
,执行以下命令查看NAS服务中的资源。fun nas ls -a nas://mnt/auto
- 指定列出某个服务下的NAS路径内容:
fun nas相关命令的动态演示
