最全!即学即会 Serverless Devs 基础入门(上)

作者 | 刘宇(花名:江昱)
在上篇《即学即会 Serverless | 如何解决 Serverless 应用开发部署的难题》中,我们阐述了工具链的重要性,那么本文将带领各位快速实现 Serverless Devs 入门。
安装工具
- 第一步:请先安装 Node.js(>=10.8.0) 与 NPM 包管理工具;
- 第二步:安装 Serverless Devs 开发者工具;具体的安装方式参考文档:
https://help.aliyun.com/document_detail/195474.html
$ npminstall @serverless-devs/s -g
- 第三步:可以通过 s -v 判断工具是否安装成功,如果安装成功可以看到相对应的版本信息,例如:
@serverless-devs/s:2.0.89, @serverless-devs/core: 0.1.7, darwinarwin-x64, node-v12.15.0
配置密钥
获取密钥
配置 Serverless Devs 的阿里云密钥,一般需要密钥信息,获取页面为:
https://usercenter.console.aliyun.com/#/manage/ak_
- AccessKeyID:用户的 AK 信息
- AccessKeySecret:用户的 SK 信息
关于密钥信息的获取流程如下:打开获取密钥页面;https://usercenter.console.aliyun.com/#/manage/ak
并获取密钥信息 :
引导式密钥配置
通过引导式进行密钥配置:可以通过 s config add 命令,进行引导式创建:
执行 s config add ,并选择 Alibaba Cloud (alibaba):
$ s config add? Please select a template: Alibaba Cloud(alibaba)Refer to the document for alibaba key: http://config.devsapp.net/account/alibaba? AccountID ()
此时,可以按照引导,进行密钥的配置:
? Please select a template: Alibaba Cloud(alibaba)
Refer to the document for alibaba key: http://config.devsapp.net/account/alibaba
? AccessKeyID 此处填写AccessKeyID
? AccessKeySecret 此处填写AccessKeySecret
? Please create alias for key pair. Ifnot, please enter to skip alibaba-access
Alias: alibaba-access AccountID:此处填写AccountID
AccessKeyID: 此处填写AccessKeyID
AccessKeySecret: 此处填写AccessKeySecret
Configuration successful
致此,通过引导式,我们完成了密钥配置信息。
命令式密钥配置
为了在一些自动化流程中可以更好的使用 Serverless Devs,所以除了通过引导式进行密钥的配置, Serverless Devs 还支持通过命令行非交互式进行密钥的配置。
同样以阿里云密钥配置为例,可以直接通过参数将密钥信息传入:
$ s configadd --AccessKeyID myAccessKeyID --AccessKeySecret myAccessKeySecret -a demoAlias: demoAccountID: myAccountIDAccessKeyID: myAccessKeyIDAccessKeySecret: myAccessKeySecretConfigurationsuccessful
如果需要配置更多格式的密钥信息,可以通过自定义 Key-Value 实现,例如:
$ s config add--AccessKeyID ****** -kl key1,key2,key3 -il info1,info2,info3 -a demo-2Alias: demo-2key1: info1key2: info2key3: info3AccessKeyID: codeConfigurationsuccessful
通过环境变量配置
有相当一部分的开发者会将密钥信息放在环境变量中,这样在使用工具的时候,就需要从环境变量中读取密钥信息,此时,通过环境变量配置密钥的方法就显得尤为重要,为此,Serverless Devs 提供了两种通过环境变量配置密钥的方法:
方法 1: 直接通过 config add 进行配置
这种方法很简单,基本和上面所描述的命令式密钥配置是类似的,只不过传入的不是固定值,而是环境变量,例如在环境变量中有:
ALIBABA_CLOUD_ACCESS_KEY_ID、ALIBABA_CLOUD_ACCESS_KEY_SECRET 等相关内容;
此时可以通过 s configadd 命令进行添加:
$ s config add -adefault-aliyun -kl AccessKeyID,AccessKeySecret -il${ALIBABA_CLOUD_ACCESS_KEY_ID},${ALIBABA_CLOUD_ACCESS_KEY_SECRET}
方法 2: 通过指定名称使用环境变量密钥
通过指定环境变量的名字进行配置:例如当前有阿里云密钥对:
AccountID:temp_accountid
AccessKeyID:temp_accesskeyid
AccessKeySecret:temp_accesskeysecret
此时可以在环境变量中可以命名 key 为*********_serverless_devs_access,
例如 default_serverless_devs_access,value 为 JSON 字符串,如:
Key:default_serverless_devs_access
Value:{\"AccessKeyID\":\"temp_accesskeyid\",\"AccessKeySecret\":\"temp_accesskeysecret\"}
密钥使用的注意事项
安全相关
云账号 AccessKey 是您访问阿里云 API 的密钥,具有该账户完全的权限,请您务必妥善保管!不要通过任何方式(e.g. Github)将 AccessKey 公开到外部渠道,以避免被他人利用而造成安全威胁 。强烈建议开发者遵循阿里云安全最佳实践 ,使用 RAM 子用户 AccessKey 来进行 API 调用。
关于密钥配置中 Alias 的实际思路**
在 Serverless Devs 中,除了配置云厂商所提供的密钥信息之外,还需要额外进行 Alias 的设置,这里所谓的 Alias 是指对密钥进行的别名设置。由于 Serverless Devs 支持多密钥的配置和管理,所以一般情况下,一个别名对应一个密钥对。相关的最佳实践可以是:
有两个账号,分别是阿里云账号和腾讯云账号,那么配置密钥的时候就可以设置别名 alibaba、tencent,在使用的时候,通过引用不同别名使用不同的密钥,以防止每次切换密钥的时候,进行密钥重新配置;
自己拥有两个环境的密钥,一个是测试环境密钥 test,一个是线上环境密钥 release,当开发完成之后需要把业务部署到不同的环境下,可以通过指定密钥的形式,直接进行部署,而无需因为密钥的切换反复进行密钥的重新配置;
密钥使用方法
在 Serverless Devs 中,密钥的使用主要在两个层面:
命令行层面:在命令行中使用的时候,可以直接通过-a/--access 参数进行使用,例如在部署某业务的时候,可以通过 s deploy-a demo 指定使用 demo 密钥对;
Yaml 配置文件层面:可以通过在 Yaml 中进行密钥对的指定,例如:

在 Yaml 的中直接指定 access,表示整个应用都通过当前密钥对进行部署,也可以在某个模块/业务下指定当前模块/业务使用某指定的密钥对进行部署。
密钥使用顺序相关
密钥支持多种形式的使用,也就会出现密钥的使用的顺序问题:
- 通过 -a/--access 参数指定的密钥信息
- 使用已经配置的 default 密钥信息
- 使用通过环境变量配置的 ``default_serverless_devs_access` 密钥信息
- 不使用密钥信息 / 进入密钥信息配置引导
具体的流程图为:

密钥的其他相关操作
在 Serverless Devs 中,除了配置密钥之外还包括密钥的修改、删除和查看,此时可以通过 s config -h 进行相关功能的查看:
- 密钥的查看,可以通过 s config get -h 查看帮助;
- 密钥的修改,可以重新进行指定别名的密钥的创建,并通过-f 参数,强行覆盖;
- 密钥的删除,可以通过 s config delete-h 查看帮助;
结语
Serverless Devs 可以通过指定格式的 Yaml 对 Serverless 应用进行描述,在 Serverless Devs 的规定中,一个 Yaml 可以被认为是一个 Serverless 应用,在下篇文章中我会为大家具体介绍下 Yaml 的使用规范。
更多内容关注 Serverless 微信公众号(ID:serverlessdevs),汇集 Serverless 技术最全内容,定期举办 Serverless 活动、直播,用户最佳实践。
最全!即学即会 Serverless Devs 基础入门(上)的更多相关文章
- 8天学通MongoDB——第一天 基础入门
原文地址:http://www.cnblogs.com/huangxincheng/archive/2012/02/18/2356595.html 关于mongodb的好处,优点之类的这里就不说了,唯 ...
- 8天学通MongoDB——第一天 基础入门(转)
关于mongodb的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中“集合” 就是对应关系数据库中的“表”,“文档”对应“行”. 一: 下载 上Mon ...
- 重磅 | 阿里开源首个 Serverless 开发者平台 Serverless Devs
Serverless 从概念提出到应用,已经走过了 8 个年头,开发者对 Serverless 的使用热情不断高涨.为帮助开发者实现一键体验多云产品,极速部署 Serverless 项目,10 月 2 ...
- 暑期 2021 | Serverless Devs 最全项目申请攻略来啦!
Serverless 是近年来云计算领域热门话题,凭借极致弹性.按量付费.降本提效等众多优势受到很多人的追捧,各云厂商也在不断地布局 Serverless 领域.但是随着时间的发展,Serverles ...
- 3分钟学完Python,直接从入门到精通
作为帅气小编,我已经把python一些模块的甩在这儿了qwq,只要你拿到这些干货,包你玩转python,直接冲向"大佬"的段位,如果已经学了C或者C++或者说如果你需要你的一段关键 ...
- [老老实实学WCF] 第九篇 消息通信模式(上) 请求应答与单向
老老实实学WCF 第九篇 消息通信模式(上) 请求应答与单向 通过前两篇的学习,我们了解了服务模型的一些特性如会话和实例化,今天我们来进一步学习服务模型的另一个重要特性:消息通信模式. WCF的服务端 ...
- 0066 阿里云大学的几道Java基础测试题
阿里云大学的几道Java基础测试题: https://edu.aliyun.com/clouder/exam/intro/15 https://edu.aliyun.com/clouder/exam/ ...
- 零元学Expression Design 4 - Chapter 1 入门界面简介
原文:零元学Expression Design 4 - Chapter 1 入门界面简介 Expression Design 是Expression系列里面的一员,更是Blend跟Web的好帮手 而在 ...
- 零元学Expression Blend 4 - Chapter 2 入门界面简介
原文:零元学Expression Blend 4 - Chapter 2 入门界面简介 在这篇教学我将会介绍Expression Blend 4的基本界面,虽然有些网站已经有做了介绍,为了整个教学的完 ...
- 小白学 Python 爬虫(4):前置准备(三)Docker基础入门
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
随机推荐
- 掌握HarmonyOS框架的ArkTs如何管理和共享状态数据
本文分享自华为云社区<深入理解ArkTs中的AppStorage和LocalStorage>,作者:柠檬味拥抱 . ARKTS(Ark TypeScript)是HarmonyOS应用框架的 ...
- 城院导航小程序软件需求规范(SRS)(三期作业汇总)
城院导航小程序软件需求规范(SRS) 1. 引言 1.1 目的 小帅小美们注意看!! 公主请批阅! 王子请批阅! 本文档描述了城院导航小程序的功能和非功能需求.它旨在为开发团队.导师和利益相关者提供清 ...
- python生成列表的时间复杂度
在刷题的时候,经常碰到需要生成非常大的邻接矩阵,往往我们都是用 list 存储,但是我在最近刷题的过程中就遇上了TLE的情况,原因就是生成邻接矩阵时间太花时间了. 先说结论:[ ]* n 比 [ fo ...
- bash shell笔记整理——head命令
作用 我直接搬运官方英文了,这英文真的简单直白了,我英语辣鸡...毕竟我学历不行,觉得翻译不好就直接自己来吧.. Print the first 10 lines of each FILE to st ...
- 使用RFC跳过权限校验的方法
1.业务背景 由于业务流程的复杂性,用户往往只具备部分功能的权限,导致在操作自开发程序时出现权限问题.例如前台限制了用户对销售订单的修改,而自开发功能中又涉及单据修改,此时一味限制权限,则无法正常使用 ...
- 良心国产工具,比Xshell好用还免费!
使用或维护Linux系统的都知道,我们日常对服务器的操作,一般都会借助SSH工具远程登录到服务器之后进行操作.常用的SSH工具有不少,比如:Xshell.Putty.SSH Secure Shell ...
- Python中numpy出现has no attribute '_no_nep50_warning'错误的一个解决方案
本文介绍在Python中,numpy库出现报错module 'numpy' has no attribute '_no_nep50_warning'的解决方法. 一次,在运行一个Python代 ...
- HTTP安全头部对jsp页面不生效
本文于2016年4月底完成,发布在个人博客网站上. 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来. 诡异的问题 AppScan扫描报告中提示,Web服务器返回js.cs ...
- IPv6通过公网共享文件(Windows)
前言 之前讲了如何使用IPv6进行内网穿透,这种方案实现的穿透是免费且不限速的.那么实现穿透后,我们就可以将原本Windows自带的共享功能的范围从局域网扩大到整个公网,从而实现随时随地都能访问到共享 ...
- CUDA个人入坟笔记
CUDA是建立在NVIDIA的GPUs上的一个通用并行计算平台和编程模型,基于CUDA编程可以利用GPUs的并行计算引擎来更加高效地解决比较复杂的计算难题.近年来,GPU最成功的一个应用就是深度学习领 ...