
lvarin/cwl-wescwl-WES(前称:WES-ELIXIR)是一个基于Flask/Gunicorn的应用,使用Connexion实现GA4GH工作流执行服务(WES)OpenAPI规范。它允许客户端/用户通过兼容GA4GH任务执行服务(TES)的后端(如TESK或Funnel)在云中执行CWL工作流。用户可提交工作流执行请求、列出历史运行记录、查询单个运行的状态和信息。该服务利用cwl-tes解析CWL工作流,将其分解为独立任务,并向配置的TES实例发送GA4GH TES兼容的HTTP请求。可配置端点访问需基于JSON Web Token(JWT)的访问令牌(如ELIXIR AAI签发的令牌),运行信息存储在MongoDB数据库中。
注意:当前开发处于beta阶段。文档顶部的网站徽章可查看公开测试部署,更多测试部署可在ELIXIR Cloud & AAI资源列表中找到。
cwl-WES由ELIXIR Cloud & AAI项目开发维护,该项目是一项跨国努力,旨在建立和实施生命科学领域的FAIR研究原则。
详见单独说明。
确保安装以下软件:
以上为开发/测试使用的版本,其他版本可能适用。如使用新版本遇到问题,请反馈。
设置环境
创建数据目录及子目录:
bashmkdir -p data/cwl_wes/db data/cwl_wes/output data/cwl_wes/tmp
克隆仓库:
bashgit clone https://github.com/elixir-cloud-aai/cwl-WES.git app
进入应用目录:
bashcd app
可选:编辑/覆盖应用配置
通过应用配置文件
bashvi cwl_wes/config/app_config.yaml
通过环境变量
部分配置可通过环境变量覆盖:
bashexport <ENV_VAR_NAME>=<VALUE>
可用环境变量列表:
| 变量名 | 描述 |
|---|---|
| MONGO_HOST | MongoDB主机端点 |
| MONGO_PORT | MongoDB服务端口 |
| MONGO_DBNAME | MongoDB数据库名称 |
| MONGO_USERNAME | MongoDB客户端用户名 |
| MONGO_PASSWORD | MongoDB客户端密码 |
| RABBIT_HOST | RabbitMQ主机端点 |
| RABBIT_PORT | RabbitMQ服务端口 |
构建与部署
以分离/守护进程模式构建并运行服务:
bashdocker-compose up -d --build
复制FTP凭证
创建包含FTP服务器访问凭证的.netrc文件:
bashcat << EOF > .netrc machine <HOST> login <USERNAME> password <PASSWORD> EOF
需将
<HOST>、<USERNAME>和<PASSWORD>替换为实际值。 如不清楚如何设置,可创建空文件:touch .netrc(仅用于测试)。
将文件复制到运行的worker容器中:
bashfor cont in $(docker ps --all | grep cwl-wes_wes-worker | cut -f1 -d" "); do docker cp .netrc "${cont}:/tmp/user" done
使用服务
访问Swagger UI:
bashfirefox http://localhost:7777/ga4gh/wes/v1/ui
通过POST /runs端点启动简单CWL测试工作流的示例值:
consoleworkflow_params: {"input":{"class":"File","path":"ftp://ftp-private.ebi.ac.uk/upload/foivos/test.txt"}} workflow_type: CWL workflow_type_version: v1.0 workflow_url: https://github.com/uniqueg/cwl-example-workflows/blob/master/hashsplitter-workflow.cwl
留空其他值,点击“Try it out!”按钮。
也可通过curl使用服务,例如查询GET /runs端点:
consolecurl -X GET \ --header 'Accept: application/json' \ 'http://localhost:7777/ga4gh/wes/v1/runs'
授权设置
除GET /service-info外的所有端点可配置为要求请求头中包含有效的JWT Bearer令牌。在应用配置文件中设置以下参数为True启用:
yaml# 安全设置 security: authorization_required: True
发送授权请求需持有有效的JWT Bearer令牌。该应用基于ELIXIR AAI签发的JWT开发,其他身份提供商签发的JWT可能适用。
若要在ELIXIR测试部署中使用实际计算资源,必须是特定ELIXIR用户组的成员。可通过此处申请加入(仅ELIXIR AAI用户)。申请时请简要说明使用测试部署的原因,并注意资源仅用于合理测试(不用于生产工作流)。
通过curl访问受保护端点时,需添加Authorization头:
consolecurl -X GET \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <YOUR_TOKEN>' \ 'http://localhost:7777/ga4gh/wes/v1/runs'
使用Swagger UI时,需点击右上角的“Authorize”按钮,在api_key字段中输入JWT令牌(前缀为Bearer)。
本项目是社区努力的成果,依赖您的贡献(错误报告、功能请求、讨论、修复或代码更改)。如有意贡献,请参考组织的贡献指南,并遵守行为准则。
应用目前处于beta开发阶段,版本仅供内部使用。计划很快推出完全符合规范的版本,之后将采用语义化版本控制,与WES规范版本同步,补丁级变更添加日期戳。
本项目采用Apache License 2.0许可,详见仓库中的LICENSE文件。
本项目是ELIXIR Cloud & AAI项目的协作成果。通过ELIXIR Cloud & AAI获取聊天或电子邮件联系方式。任何咨询、建议或问题请提及本服务名称。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务