alicloud-compute-fc-serverless-devs

📁 cinience/alicloud-skills 📅 2 days ago
52
总安装量
52
周安装量
#7491
全站排名
安装命令
npx skills add https://github.com/cinience/alicloud-skills --skill alicloud-compute-fc-serverless-devs

Agent 安装分布

qoder 51
github-copilot 51
codex 51
kimi-cli 51
gemini-cli 51
cursor 51

Skill 文档

Category: tool

函数计算(FC 3.0)Serverless Devs

目标

  • 安装并验证 Serverless Devs。
  • 配置凭证、初始化示例、部署、调用与删除。
  • 以 Python 运行时为例提供 CLI 流程。

快速接入流程

  1. 安装 Node.js(14+)与 npm。
  2. 安装并验证 Serverless Devs。
  3. 通过引导完成凭证配置。
  4. 初始化示例项目并进入目录。
  5. 部署、调用与可选删除。

安装 Serverless Devs(npm)

全局安装(需要 sudo 权限):

sudo npm install @serverless-devs/s -g
sudo s -v

无 sudo 的替代方案(推荐在受限环境使用):

npx -y @serverless-devs/s -v

配置凭证(引导式)

sudo s config add

选择 Alibaba Cloud (alibaba),按提示填写 AccountID、AccessKeyID、AccessKeySecret,并设置 alias。

配置凭证(命令式)

使用命令行参数一次性写入密钥别名(无需交互):

s config add -a default --AccessKeyID <AK> --AccessKeySecret <SK> -f

如果使用环境变量,可将其注入命令(示例):

s config add -a default -kl AccessKeyID,AccessKeySecret -il ${ALIBABA_CLOUD_ACCESS_KEY_ID},${ALIBABA_CLOUD_ACCESS_KEY_SECRET} -f

或者使用 Serverless Devs 约定的环境变量 JSON(示例):

export default_serverless_devs_key='{\"AccountID\":\"<AccountID>\",\"AccessKeyID\":\"<AK>\",\"AccessKeySecret\":\"<SK>\"}'

s.yaml 中引用:

access: default_serverless_devs_key

初始化示例(Python)

sudo s init start-fc3-python
cd start-fc3-python

初始化完成后会生成 s.yaml、code/ 与 readme.md,可在 code/index.py 修改函数逻辑。

部署、调用与删除

sudo s deploy
sudo s invoke -e "test"
sudo s remove

自定义域名绑定(避免默认域名强制下载)

说明:FC 默认域名会强制添加 Content-Disposition: attachment,浏览器会触发下载。 需要通过自定义域名访问才能去掉该行为。

步骤 1:为域名配置 CNAME

在 DNS 服务商处把域名解析到 FC 公网 CNAME:

<account_id>.<region_id>.fc.aliyuncs.com

示例(杭州地域):

1629965279769872.cn-hangzhou.fc.aliyuncs.com

注意:如果是根域名(例如 animus.run)且 DNS 不支持根域名 CNAME, 请使用 ALIAS/ANAME 记录,或改用 www.animus.run 子域名。

步骤 2:在 Serverless Devs 中创建自定义域名

方式 A:在 s.yaml 中新增 fc3-domain 资源:

resources:
  newsDomain:
    component: fc3-domain
    props:
      region: cn-hangzhou
      domainName: animus.run
      protocol: HTTP
      routeConfig:
        routes:
          - functionName: honnold-taipei101-news
            qualifier: LATEST
            methods:
              - GET
              - HEAD
            path: /*

region 为示例默认值;若未确定最合适 Region,执行时应询问用户。

然后部署:

printf 'y\n' | npx -y @serverless-devs/s deploy

方式 B:使用控制台(Advanced Features > Custom Domains)创建自定义域名并配置路由。

常见错误

  • DomainNameNotResolved:域名未解析到正确的 FC CNAME。
  • InvalidICPLicense:中国大陆地域需要 ICP 备案且备案需接入阿里云。

参考