You need to enable JavaScript to run this app.
文档中心
函数服务

函数服务

复制全文
下载 pdf
Native 运行时
开发方法(任务)
复制全文
下载 pdf
开发方法(任务)
任务 在函数服务中特指通过异步模式响应请求,基于 非 WebServer 模式 执行的一次性脚本任务。本文为您介绍开发任务需要遵循的规范和方法。​
服务规范​
开发任务时需要遵循以下规范:​
  • 启动命令​
  • 任务默认通过 函数配置 中的启动命令执行,允许在提交任务时自定义启动命令。​
  • 本地开发完成后,在控制台 创建任务 时配置默认启动命令。​
  • 服务发布成功后,在 提交任务 时支持自定义启动命令。​
  • 如果启动过程比较复杂,建议在项目中提供启动脚本。​
  • 监听端口​
  • 任务通过非 WebServer 模式执行,无需在服务中监听端口,通过启动命令指定任务需要执行的命令或任务脚本即可。​
  • 数据库/存储挂载​
  • 函数服务本身是无状态的,服务启动不依赖本地内存 Cache 或落盘的数据。如需状态可将其存储至远端 Redis 或 MySQL 数据库,或者挂载 NAS、 TOS 等远端存储(详情请参见 挂载 NAS 文件存储、 挂载 TOS 对象存储)。​
  • 磁盘限制​
  • 任务实例可写的最大临时存储空间(/tmp目录)为 512 MiB,如果超过该限制可能引发实例驱逐,如需使用请注意限制使用大小,或者自行实现文件的清理或 rotate 逻辑。​
任务脚本示例​
对于复杂的任务,您可以在项目中提供一个启动脚本,后续配置启动命令时指定该启动脚本即可。以下是一个简单的任务脚本示例:​
​
#!/bin/bash # 指定脚本使用 bash 解释器(用户可按需自行指定)​
​
# 设置严格的错误处理选项(用户可按需自行指定):​
# -E:使 ERR trap 在函数和子 shell 中生效​
# -e:当命令返回非零状态时退出脚本​
# -u:使用未定义的变量时视为错误​
# -o pipefail:管道中任何命令失败时,整个管道返回非零状态​
set -Eeuo pipefail​
​
# 将工作目录切换至当前脚本所在的目录​
cd "$(dirname "$0")"​
​
# 日志打印任务开始时间​
echo "Script started at $(date)"​
​
# 打印当前目录内容​
ls​
​
# 此处模拟一个简单的任务:sleep 10s​
echo "Simulating task: Sleeping for 10 seconds"​
sleep 10​
​
# 日志打印任务结束时间​
echo "Script done at $(date)"​
​
注意​
启动脚本必须具有相应的可执行权限。否则任务会失败,出现 permission denied 报错。可参考以下命令给 Linux 系统所有的用户组添加脚本的执行权限。​
​
# 需要在本地打包代码或制作自定义镜像时执行该命令(函数服务提供的默认模板中,对应的 run.sh 脚本已添加可执行权限,无需用户额外操作)​
# 假设启动脚本为 run.sh​
chmod a+x run.sh​
​
注意​
使用自定义镜像方式部署时,请确保所提供的镜像内置了对应的 Shell。代码包方式部署可忽略,函数服务平台提供的镜像默认包含 sh 和 bash shell 解释器。​
​
# 在自定镜像容器中执行如下指令,可以查看当前系统支持的 shell​
cat /etc/shells​
​
# 执行上述命令后,终端会显示类似以下内容,即您的镜像可用的 shell 列表:​
/bin/sh​
/bin/bash​
/bin/rbash​
/bin/dash​
​
​
最近更新时间:2025.03.11 17:02:16
这个页面对您有帮助吗?
有用
有用
无用
无用