Category: tool
Function Compute (FC 3.0) Serverless Devs
Goals
- Install and validate Serverless Devs.
- Configure credentials, initialize example project, deploy, invoke, and remove.
- Provide CLI flow with Python runtime example.
Quick Start Flow
- Install Node.js (14+) and npm.
- Install and validate Serverless Devs.
- Configure credentials via guided setup.
- Initialize example project and enter directory.
- Deploy, invoke, and optionally remove.
Install Serverless Devs (npm)
Global install (requires sudo):
sudo npm install @serverless-devs/s -g
sudo s -v
No-sudo alternative (recommended in restricted environments):
npx -y @serverless-devs/s -v
Configure Credentials (guided)
sudo s config add
Choose Alibaba Cloud (alibaba), provide AccountID, AccessKeyID, AccessKeySecret, and set alias.
Configure Credentials (command)
Use CLI args to configure credential alias in one command (non-interactive):
s config add -a default --AccessKeyID <AK> --AccessKeySecret <SK> -f
If using environment variables, inject them into the command (example):
s config add -a default -kl AccessKeyID,AccessKeySecret -il ${ALIBABA_CLOUD_ACCESS_KEY_ID},${ALIBABA_CLOUD_ACCESS_KEY_SECRET} -f
Or use Serverless Devs convention JSON environment variable (example):
export default_serverless_devs_key='{\"AccountID\":\"<AccountID>\",\"AccessKeyID\":\"<AK>\",\"AccessKeySecret\":\"<SK>\"}'
Reference in s.yaml:
access: default_serverless_devs_key
Initialize Example (Python)
sudo s init start-fc3-python
cd start-fc3-python
Initialization creates s.yaml, code/, and readme.md; edit code/index.py for function logic.
Deploy, Invoke, and Remove
sudo s deploy
sudo s invoke -e "test"
sudo s remove
Custom Domain Binding (Avoid Default Domain Forced Download)
Note: FC default domain adds
Content-Disposition: attachment, causing browser downloads. Use a custom domain to avoid this behavior.
Step 1: Configure CNAME for your domain
Configure DNS CNAME to FC public CNAME:
<account_id>.<region_id>.fc.aliyuncs.com
Example (Hangzhou region):
1629965279769872.cn-hangzhou.fc.aliyuncs.com
Note: if using apex domain (e.g. animus.run) and DNS provider does not support CNAME at apex,
use ALIAS/ANAME records, or switch to a subdomain such as www.animus.run.
Step 2: Create custom domain in Serverless Devs
Option A: add fc3-domain resource in s.yaml:
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 is example default; ask user when the best region is unclear.
Then deploy:
printf 'y\n' | npx -y @serverless-devs/s deploy
Option B: use Console (Advanced Features > Custom Domains) to create and route custom domain.
Common Errors
DomainNameNotResolved: domain not resolved to correct FC CNAME.InvalidICPLicense: mainland China regions require ICP filing associated with Alibaba Cloud.
References
-
See
references/install_serverless_devs_and_docker.mdfor detailed official steps. -
HTTP trigger limitations and response header behavior (default domain enforces Content-Disposition: attachment)
-
Custom domain binding and CNAME guidance
-
Official source list:
references/sources.md
Validation
mkdir -p output/alicloud-compute-fc-serverless-devs
echo "validation_placeholder" > output/alicloud-compute-fc-serverless-devs/validate.txt
Pass criteria: command exits 0 and output/alicloud-compute-fc-serverless-devs/validate.txt is generated.
Output And Evidence
- Save artifacts, command outputs, and API response summaries under
output/alicloud-compute-fc-serverless-devs/. - Include key parameters (region/resource id/time range) in evidence files for reproducibility.
Prerequisites
- Configure least-privilege Alibaba Cloud credentials before execution.
- Prefer environment variables:
ALICLOUD_ACCESS_KEY_ID,ALICLOUD_ACCESS_KEY_SECRET, optionalALICLOUD_REGION_ID. - If region is unclear, ask the user before running mutating operations.
Workflow
- Confirm user intent, region, identifiers, and whether the operation is read-only or mutating.
- Run one minimal read-only query first to verify connectivity and permissions.
- Execute the target operation with explicit parameters and bounded scope.
- Verify results and save output/evidence files.