基于CCE的GATK4最佳实践流程
本节通过示例流程调用GCS的API启动示例流程的基因测序,介绍使用GCS API的基本流程。
启动完成的基因测序结果如下所示。
通过GCS执行基因测序流程的步骤如下:
- 参照3.1-构造请求中的调用方式获取用户Token,因为在后续的请求中需要将Token放到请求消息头中作为认证。
- 调用5.1.1-部署environment接口创建环境,为后续启动示例流程提供集群计算资源。
- 登录GCS控制台,下载示例流程gatk4-best-practices.yaml,并调用5.2.1-创建workflow接口,上传示例流程作为自己的流程。
- 调用5.3.1-创建execution接口执行计算流程,运行示例流程的基因测序。
- 调用5.3.3-删除execution接口,删除测序流程,清理资源。
- 如果后续不再需要此计算流程,调用5.2.2-删除workflow接口,删除workflow,清理资源。
- 如果后续不再需要执行计算任务,可以调用5.1.2-删除environment接口,删除环境,清理资源。
前提条件
- 根据选择区域,获取对应的区域名称。当前GCS仅支持如表1所示区域。
- 根据选择的区域,获取对应的IAM(请参见地区和终端节点)、GCS的Endpoint(请参见终端节点)。
- 若您第一次使用GCS,请先访问GCS控制台,授权GCS服务使用其它相关服务。
- 已获取项目ID,具体请参见获取项目ID。
- 已创建至少一个可用密钥对,具体请参见创建密钥对。
- 已创建OBS桶,桶的创建方法参见添加OBS桶。
- 已创建的可用文件存储卷名称,CCE的文件存储卷的创建和导入参见文件存储卷。
- 已创建的集群,集群创建方法参见CCE的集群管理部分,创建好集群后,请设置弹性伸缩策略,可以参见CCE插件管理的autoscaler。
创建Environment
假设区域选择为华北北京四区,则前提条件中的信息为如下值(实际操作中您需要根据实际情况替换):
- IAM的Endpoint为:iam.cn-north-4.myhuaweicloud.com
- GCS的Endpoint为:gcs.cn-north-4.myhuaweicloud.com
- 区域名称:"cn-north-4"
- 秘钥对名称:"KeyPair-3587"
- 项目ID:10556c21********8bf10512591189e
- OBS桶:gene-container-bucket
- 集群ID:d9d8912d-a6cb-11e8-bc20-0255ac105709
- 调用其他接口前,需要参见3.1-构造请求中的调用方式获取token,并设置成环境变量。
- 获取token。
- iam_endpoint:IAM的Endpoint,以cn-north-4的Endpoint为例则应该为iam.cn-north-4.myhuaweicloud.com。
- username:华为云的用户账号,必填项。
- password:华为云的用户密码,必填项。
- domainname:若是子账号,请填写对应的主账号名称。若不是子账号,请与username保持一致,必填项。
- cn-north-4:此处以中国华北区4为例,必填项。
curl -H "Content-Type:application/json" https://{iam_endpoint}/v3/auth/tokens -X POST -d '{"auth": {"identity":{"methods":["password"],"password":{"user":{"name":"username","password":"password","domain":{"name":"domainname"}}}},"scope":{"project":{"name":"cn-north-4"}}}}' -v -k
响应Header中“X-Subject-Token”的值即为Token:
X-Subject-Token: MIIDkgYJKoZIhvcNAQcCoIIDgzCCA38CAQExDTALBglghkgBZQMEAgEwgXXXXX...
- 使用如下命令将token设置为环境变量,方便后续使用。
export Token={X-Subject-Token}
X-Subject-Token即为上一步骤获取到的token,如下所示。
export Token=MIIDkgYJKoZIhvcNAQcCoIIDgzCCA38CAQExDTALBglghkgBZQMEAgEwgXXXXX...
- 将API的入口地址设置为环境变量,方便后续事使用,入口地址为“https://GCS_ENDPOINT”。
export GCS_Endpoint="https://gcs.cn-north-4.myhuaweicloud.com"
- 获取token。
- 创建环境。
调用5.1.1-部署Environment接口,利用前提条件中已创建的集群创建GCS环境。
curl -i -k -X POST -H "X-Auth-Token: $Token" ${GCS_ENDPOINT}/v1/environments -d '{"source":"cce","project_id":"10556c21********8bf10512591189e","cluster_id":"d9d8912d-a6cb-11e8-bc20-0255ac105709","bucket_name":"gene-container-bucket","env_name":"gcs-env-cce-new"}'
命令中主要参数说明如下:
- project_id: 前提条件中获取到的项目ID
- source: 创建环境的来源 cce表示,创建cce环境
- bucket_name: 前提条件中已创建的OBS桶名称
- cluster_id:前提条件中已创建的集群ID
- env_name:要创建的环境的名称
创建成功的时候会返回环境的ID,为了后续操作,需要记录下环境的ID。
{ "id": "6e03f731-9c31-569a-4121-6a10b6996458" }
- 将环境ID设置为环境变量。
export ENVIRONMENT_ID=6e03f731-9c31-569a-4121-6a10b6996458
- 查看环境。
调用5.1.4-查询Environment接口,查询GCS环境。
curl -i -k -X GET -H "X-Auth-Token: $Token" ${GCS_ENDPOINT}/v1/environments/${ENVIRONMENT_ID}
查询成功的时候会返回环境的详情。
{ "guid": "bcdd92fd-0380-e114-5dbe-38dac77857e9", "project_id": "10556c21********8bf10512591189e", "domain_id": "b0148a2cb********477bab429e48e7", "name": "gcs-env-cce-new", "description": "Gene container environment form cce", "status": "Running", "create_at": "2018-08-13T03:50:30Z", "update_at": "2018-08-13T07:27:02Z", "cluster_id": "d9d8912d-a6cb-11e8-bc20-0255ac105709", "cluster_name": "gcs-cluster", "cpu": 8, "memory": 16, "source": "cce", "stack_id": "10185add-acde-cc18-b8dd-b3a87a1f484c" "is_gene_cluster": false, "bucket_name": "gene-container-bucket", "default_env": false, "order_id": "" }
- 将集群的ID设置为环境变量。
export CLUSTER_ID=d9d8912d-a6cb-11e8-bc20-0255ac105709
创建Workflow
- 登录GCS控制台,下载示例流程。
- 上传示例流程gcs-grammar.yaml到执行curl命令的服务器的任一路径,例如/home/gcs-user。
- 进入服务器中流程文件所在路径,调用创建workflow接口,上传gatk4-best-practices.yaml作为自己的流程。
curl -k -X POST -H "X-Auth-Token: ${Token}" -F 'resource={"name":"gcs-demo-workflow", "description":"gcs demo workflow", "filename":"gatk4-best-prectices.yaml" }' -F 'archive_content=@gatk4-best-prectices.yaml' ${GCS_Endpoint}/v1/workflows
命令中参数说明如下:
- name:流程名字。
- description:流程描述。
- filename:要上传的workflow文件的文件名
- archive_content:要上传的workflow文件。如果执行curl命令时,未进入到模板文件所在路径,可以在此处加上路径,例如模板文件gcs-grammar.yaml在/home/gcs-user路径下,则命令为archive_content=@/home/gcs-user/gcs-grammar.yaml
创建成功的时候会返回流程的ID,为了后续操作,需要记录下此流程的ID。
{ "id": "f2637630-5d83-11e8-a6de-0255ac101a0c" }
- 将workflow ID设置为环境变量。
export WORKFLOW_ID=d9d8912d-a6cb-11e8-bc20-0255ac105709
创建Execution
假设已获取前提条件中的信息为如下值(实际操作中您需要根据实际情况替换):
- 集群下文件存储卷名称:"gcs-sfs-358712"
- 项目ID:10556c2112784111b8bf10512591189e
- 调用5.3.1-创建execution接口,创建execution。
curl -k -X POST -H "X-Auth-Token: $Token" ${GCS_Endpoint}/v1/executions -d '{"name":"gcs-demo-execution", "workflow_id": ${WORKFLOW_ID}, "cluster_id": ${CLUSTER_ID}, "sfs_pvc_name": "gcs-sfs-358712", "data_bucket_name": "gene-container-bucket", "target": "cce"}'
命令中参数说明如下
- name:自定义execution名称,例如gcs-demo-execution
- workflow_id:创建流程过程中创建的流程ID
- sfs_pvc_name:文件存储卷名称
- cluster_id:创建环境过程中创建的集群ID
- data_bucket_name:前提条件中的OBS桶
- target:执行execution的环境类型,cce表示使用的是cce环境
{ "id": "10185add-acde-cc18-b8dd-b3a87a1f484c" }
- 将execution id设置为环境变量。
export EXECUTION_ID=10185add-acde-cc18-b8dd-b3a87a1f484c
- 调用查询execution接口,查询execution。
curl -k -X GET -H "X-Auth-Token: $Token" ${GCS_Endpoint}/v1/executions/${EXECUTION_ID}
GCS界面可以查看运行成功的execution
清理资源
假设已获取前提条件中的信息为如下值(实际操作中您需要根据实际情况替换):
- 项目ID:10556c2112784111b8bf10512591189e
OBS、SFS等资源如果不再需要,请至对应该服务的控制台手动删除。
- 调用删除execution接口,删除创建的execution。
curl -k -X DELETE -H "X-Auth-Token: $Token" ${GCS_Endpoint}/v1/executions/${EXECUTION_ID}
如果使用的集群是创建环境时一并创建的,可以设置delete_cluster参数,将集群一并删除。
curl -k -X DELETE -H "X-Auth-Token: $Token" ${GCS_Endpoint}/v1/executions/${EXECUTION_ID}?delete_cluster=true
- 如果后续不再需要执行计算任务,调用删除environment接口,删除创建的environment。
curl -k -X DELETE -H "X-Auth-Token: $Token" ${GCS_Endpoint}/v1/environments/${ENVIRONMENT_ID}
- 如果后续不再需要此计算流程,调用删除workflow接口,删除创建的workflow。
curl -k -X DELETE -H "X-Auth-Token: $Token" ${GCS_Endpoint}/v1/workflow/${WORKFLOW_ID}