构建 AI 动画故事创作应用 —— 自动部署
自动部署阿里云"构建 AI 动画故事创作应用"解决方案。应用可访问后部署即停止——动手体验留给用户。
架构: OSS Bucket + DashScope(百炼 API Key)+ FC 应用(ComfyUI + WebUI —— 通过 Devs 模板部署两个函数)
安装
前置条件(scripts/ 运行时依赖):
| 依赖 | 最低版本 | 检查命令 | 用途 |
|-----------|-------------|---------------|---------|
|bash| 4.0+ |bash --version| 脚本运行时 |
|aliyunCLI | >= 3.3.7 |aliyun version| 阿里云资源操作(ai-mode子命令需要 3.3.7+) |
|python3| 3.6+ |python3 --version| JSON 解析 |
|curl| 任意 |curl --version| HTTP API 调用 |
若 Aliyun CLI 未安装或版本过低,见references/cli-installation-guide.md获取安装说明。
然后 [必须] 运行aliyun configure set --auto-plugin-install true启用插件自动安装。
CLI 初始化(核心工作流前必须运行)
启用 AI-Mode,设置专用 User-Agent,并更新插件,使后续所有 CLI 调用被正确标记并运行在最新插件版本上:
aliyun configure ai-mode enable
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-tech-solution-animation-creation-auto-deploy"
aliyun plugin update
鉴权
前置检查:需要阿里云凭证
安全规则:
- 绝不读取、回显或打印 AK/SK 值
- 绝不要求用户在对话或命令行中直接输入 AK/SK
- 绝不使用字面凭证值运行aliyun configure set
- 只使用aliyun configure list检查凭证状态
```bash
aliyun configure list
```
检查输出中是否有有效 profile(AK、STS 或 OAuth 身份)。
如果不存在有效 profile,就此停止。
1. 从阿里云控制台获取凭证
2. 在本会话之外配置凭证
3. 待aliyun configure list显示有效 profile 后再返回并重试
RAM 策略
完整权限列表见 references/ram-policies.md。
所需系统策略: AliyunFCFullAccess、AliyunOSSFullAccess
额外权限: Devs 相关权限(devs:CreateProject、devs:RenderServicesByTemplate、devs:UpdateEnvironment、devs:DeployEnvironment、devs:ListEnvironments、devs:GetEnvironment)
核心工作流之前,自动检查并附加所需策略:
bash scripts/attach-policies.sh
[必须] 权限失败处理: 当任何命令或 API 调用在执行过程中因权限错误失败时,遵循以下流程:
1. 阅读references/ram-policies.md获取本 Skill 所需的完整权限列表
2. 使用ram-permission-diagnoseskill 引导用户申请必要权限
3. 暂停并等待用户确认所需权限已授予
参数确认
重要:参数确认 —— 执行任何命令或 API 调用前,
所有参数要么是固定值,要么是自动生成 / 创建的——无需用户手动输入。
| 参数 | 必填 | 说明 | 值 |
|---|---|---|---|
RegionId | 是 | 部署地域(FC 和 OSS 在同一地域) | 固定 cn-hangzhou |
BUCKET_NAME | 是 | OSS Bucket 名称 | 自动生成 animation-story-<6 个随机小写字母> |
API_KEY | 是 | 百炼(DashScope)API Key | 通过 aliyun modelstudio create-api-key 自动创建 |
PROJECT_NAME | 是 | Devs 项目名称 | 自动生成 animation-creation-<6 个随机小写字母> |
开始核心工作流之前,在 shell 中设置以下变量(后续所有命令直接引用它们):
生成随机名称
BUCKET_NAME="animation-story-$(cat /dev/urandom | LC_ALL=C tr -dc 'a-z' | head -c 6)"
PROJECT_NAME="animation-creation-$(cat /dev/urandom | LC_ALL=C tr -dc 'a-z' | head -c 6)"
echo "BUCKET_NAME=$BUCKET_NAME, PROJECT_NAME=$PROJECT_NAME"
---
核心工作流
步骤 1:创建百炼 API Key(CLI)
通过 aliyun modelstudio CLI 自动获取工作空间并创建 API Key:
source scripts/create-api-key.sh
注意: 使用source确保API_KEY变量导出到当前 shell。脚本自动获取默认工作空间(若无则创建一个),创建 API Key,并打印完整值。
步骤 2:开通 OSS 服务并创建 Bucket(CLI)
注意: OSS CLI 插件使用--ua标志(不是--user-agent)设置 User-Agent。
先开通 OSS 服务(若已开通返回 ORDER.OPEND——可忽略):
aliyun ossadmin open-oss-service --endpoint oss-admin.aliyuncs.com --force --user-agent AlibabaCloud-Agent-Skills/alibabacloud-tech-solution-animation-creation-auto-deploy 2>&1 || true
创建 Bucket:
aliyun oss mb "oss://$BUCKET_NAME" --region cn-hangzhou --ua AlibabaCloud-Agent-Skills/alibabacloud-tech-solution-animation-creation-auto-deploy
验证:
aliyun oss stat "oss://$BUCKET_NAME" --ua AlibabaCloud-Agent-Skills/alibabacloud-tech-solution-animation-creation-auto-deploy
步骤 3:创建 Devs 项目(CLI)
用 CreateProject API 创建项目。通过 templateConfig 指定模板名和参数——Devs 会自动创建一个 production 环境。
注意: CreateProject 只创建项目和空环境——它不自动触发部署。你必须随后用 RenderServicesByTemplate + UpdateEnvironment + DeployEnvironment 完成部署。
aliyun devs create-project --body "{
\"name\": \"$PROJECT_NAME\",
\"spec\": {
\"templateConfig\": {
\"templateName\": \"animation-creation\",
\"parameters\": {
\"region\": \"cn-hangzhou\",
\"bailian_api_key\": \"$API_KEY\",
\"ossBucket\": \"$BUCKET_NAME\"
}
}
}
}" --user-agent AlibabaCloud-Agent-Skills/alibabacloud-tech-solution-animation-creation-auto-deploy
模板参数说明(已确认——不要修改):
-region:固定cn-hangzhou
-bailian_api_key:步骤 1 自动创建的百炼 API Key
-ossBucket:步骤 2 创建的 OSS Bucket 名称(不含oss://前缀)
- 所有参数通过parameters传入,不是variableValues
步骤 4:渲染模板并配置环境(CLI)
本步骤所有命令都使用 shell 变量MY_UID、PROJECT_NAME、BUCKET_NAME、API_KEY——确保步骤 1 和参数确认已执行。
先获取当前用户 UID 并检查角色信任策略:
source scripts/setup-role.sh
注意: 使用source确保MY_UID变量导出到当前 shell。脚本自动检查角色是否存在,若不存在则创建。该角色是标准 Devs 角色,通常在首次使用 FC 控制台的应用功能时自动创建。
#### 4a. 渲染模板 → 构建 JSON → 更新环境(一体化脚本)
以下脚本自动:渲染模板 → 过滤自定义域名 → 添加 roleArn → 调用 UpdateEnvironment。 Agent 无需手动处理 JSON。
bash scripts/render-and-update.sh
关键说明(已内置于脚本——无需手动处理):
-custom-domain服务自动过滤(会导致"Unknown service type"错误)
-roleArn自动添加
- 用--body传数据(--spec无法正确传递深层嵌套 JSON)
#### 4b. 触发部署
内置限流保护: 脚本最多重试 3 次,间隔 60 秒,遇 404 立即停止。直接运行脚本——不要手动调用 deploy-environment。
bash scripts/deploy-environment.sh
步骤 5:轮询部署状态
部署是异步的——轮询直到完成(通常 5–15 分钟)。直接运行以下脚本:
bash scripts/poll-deploy-status.sh
步骤 6:创建自定义域名
为什么需要自定义域名? FC 触发 URL(*.fcapp.run)强制Content-Disposition: attachment响应头,导致浏览器下载 HTML 而非渲染它。应用要正常工作需要自定义域名(*.devsapp.net)。
必须使用 FC 2.0 API(aliyun fc-open) 创建辅助函数:FC 3.0 不支持函数名中的$。fc-open插件将通过--auto-plugin-install true配置自动安装。
直接运行以下完整脚本(只需设置 MY_UID 和 PROJECT_NAME 变量):
bash scripts/create-custom-domain.sh
步骤 7:获取访问 URL(在此停止)
访问 URL 在步骤 6 脚本末尾自动打印。格式:
http://${PROJECT_NAME}-web.fcv3.${MY_UID}.cn-hangzhou.fc.devsapp.net/
在此停止。将步骤 6 输出中的访问 URL 提供给用户,让他们自行体验应用。不要代替用户操作应用。
⚠️ 安全提醒 —— 展示访问 URL 时必须告知用户:
该 URL 可通过公网直接访问,请勿随意分享给不信任的人。未经授权的访问可能导致:
- 云资源被消耗: 每次访问都会消耗函数计算资源和百炼 API 调用额度,可能产生额外费用。
- 隐私信息泄露: 生成的动画故事、上传的图片等内容可能包含个人或敏感信息。
清理
要清理已部署资源,按以下顺序删除(需要 PROJECT_NAME、MY_UID、BUCKET_NAME、API_KEY_ID 变量):
1. 删除 FC 自定义域名
aliyun fc delete-custom-domain --domain-name "${PROJECT_NAME}-web.fcv3.${MY_UID}.cn-hangzhou.fc.devsapp.net" --region cn-hangzhou --user-agent AlibabaCloud-Agent-Skills/alibabacloud-tech-solution-animation-creation-auto-deploy
2. 删除 Devs 项目(同时删除关联的 FC 函数;--force true 跳过环境资源检查)
aliyun devs delete-project --name "$PROJECT_NAME" --force true --user-agent AlibabaCloud-Agent-Skills/alibabacloud-tech-solution-animation-creation-auto-deploy
3. 删除 OSS Bucket(先递归删除所有对象,再删除 Bucket)
aliyun oss rm "oss://$BUCKET_NAME" -r -f --region cn-hangzhou --ua AlibabaCloud-Agent-Skills/alibabacloud-tech-solution-animation-creation-auto-deploy
aliyun oss rm "oss://$BUCKET_NAME" -b -f --region cn-hangzhou --ua AlibabaCloud-Agent-Skills/alibabacloud-tech-solution-animation-creation-auto-deploy
4. 删除百炼 API Key(API_KEY_ID 在 create-api-key.sh 执行期间输出)
aliyun modelstudio delete-api-key --api-key-id "$API_KEY_ID" --user-agent AlibabaCloud-Agent-Skills/alibabacloud-tech-solution-animation-creation-auto-deploy
---
工作流拆除
工作流完成后(或清理后),禁用 AI-Mode:
aliyun configure ai-mode disable
无法通过 CLI/SDK 完成的汇总
完整 CLI 命令参考见 references/related-commands.md。
关键限制: FC 首次开通无 CLI/API 支持——用户必须在控制台手动开通。
自动开通: OSS 服务通过aliyun ossadmin open-oss-service(内置于步骤 2)。百炼工作空间通过aliyun modelstudio create-workspace(内置于步骤 1)。
最佳实践
- 地域固定为
cn-hangzhou(FC 和 OSS 在同一地域) - DashScope API Key 通过 Devs 模板参数传递——不硬编码
- OSS Bucket 名称含随机后缀以避免冲突
- 部署完成后记录访问 URL 和已创建资源
参考链接
| 参考 | 说明 |
|---|---|
| references/ram-policies.md | RAM 权限策略 |
| references/related-commands.md | CLI/SDK 命令参考 |
| references/verification-method.md | 部署验证步骤 |
| references/acceptance-criteria.md | 验收标准 |
| references/cli-installation-guide.md | CLI 安装指南 |
阿里云skills
◯ 评论 0