1.下载自定义处理数据命令行工具:
下载地址:https://developer.qiniu.com/dora/tools/1222/qdoractl
下载linux64位版,因为我们的docker安装在ubuntu 14.04 64位版本下的。
下载后将文件名修改为qdoractl,同时赋予777权限:chmod 777 qdoractl
此时可以通过./qdoractl来执行该工具了,为了简便,将qdoractl复制到/bin目录下,这样就可以直接运行qdoractl来执行,而不用在前面加./
2.上传自定义数据处理程序
qdoractl push <image>
<image>为镜像的名字,可以通过docker images查看
push时,如果出现Error response from daemon: client and server don’t have same version (client : 1.20, server: 1.18)等错误,可以先升级docker
升级方法。运行以下命令:curl -sSL https://get.daocloud.io/docker | sh
升级后再试一般就可以了,如果升级后,输入docker提示no such file,可以通过运行/usr/bin/docker来代替。
push成功后,通过qdoractl image可以查看已上传的镜像列表。
3.创建新版本
此时登录七牛控制台,产品列表,数据处理,选择刚刚创建的自定义数据处理V2,选择实例名称,点击发布新版本。
填写版本号,选择镜像,选择配置
展开高级配置,填写健康配置,点击确认创建
最后调整实例:
点击保存。
4.监控自定义处理数据实例的运行
建议一开始只设置1个实例,这样可以方便我们调试。
4.1 查看运行的实例
qdoractl instance <ufop> --all #<ufop>为自定义数据处理的名称
通过该命令可以查看到当前正在运行的实例的信息,我们主要是为了获取实例的ID:
4.2 登录运行的实例
qdoractl attach <ufop> --region <region> --instance <instanceId> #region为区域名称
运行以上命令即可登录该实例,便于我们在线调试及查看错误日志等信息
5 调用自定义处理实例
5.1 通过在url后加?<ufop>/<版本号>同步调用
如果处理数据量较小,速度快,可以使用该方式。调用时,可以通过网络分析来查看网络返回值,以此来调试。
如果需要以指定文件名另存为到指定空间,可以通过管道处理:
?<ufop>/<版本号>|saveas/<encodedEntryURI>
<encodedEntryURI>获取示例:
需要先安装好七牛的PHP SDK,下载地址:https://github.com/qiniu/php-sdk/releases?ref=developer.qiniu.com
$key = 'convert/201706/14/FhsNLQcihnPcy-VVGfUxX7GL_wPX.zip'; $pathinfo = pathinfo($key); $entry = 'dedemaotest:'.$pathinfo['dirname'].'/c_'.$pathinfo['basename']; $saveas = \Qiniu\base64_urlSafeEncode($entry); //需要先提前下载并安装好七牛的PHP SDK
5.2 通过持久化处理接口异步调用
如果是像音视频转码等需要较长时间来处理的,建议使用该方式来异步调用。
调用示例:
头部需要包含这三个信息:
其中Authorization的值为QBox<空格><AccessToken>
AccessToken的生成算法:
如果你下载了PHP的SDK,可以直接调用\Qiniu\Auth里面的authorization方法。
获取AccessToken示例:
$key = 'convert/201706/14/FhsNLQcihnPcy-VVGfUxX7GL_wPX.zip'; $pathinfo = pathinfo($key); $entry = 'dedemaotest:'.$pathinfo['dirname'].'/c_'.$pathinfo['basename']; $saveas = \Qiniu\base64_urlSafeEncode($entry); $authorization = $auth->authorization('http://api.qiniu.com/pfop/','bucket='.urlencode('dedemaotest').'&key='.urlencode('convert/201706/14/FhsNLQcihnPcy-VVGfUxX7GL_wPX.zip').'&fops='.urlencode('dedemaotest/convert-v3|saveas/'.$saveas).'¬ifyURL='.urlencode('http://www.dedemao.com/jaychou884358/admin.php/Upload/persistent_notify').'&force=&pipeline=','application/x-www-form-urlencoded');
说明:
notifyURL为数据异步处理完成后的回调地址,便于第一时间获取数据处理状态。
POST的body应包含的信息:
post提交后会返回一个<persistentId>,该ID可用于查询处理的状态,通过调用以下接口来获取:
http://api.qiniu.com/status/get/prefop?id=<persistentId>
参考:https://developer.qiniu.com/dora/tools/1222/qdoractl (自定义数据处理命令行工具)
参考:https://developer.qiniu.com/dora/manual/3686/pfop-directions-for-use (持久化处理)