使用七牛自定义数据处理范例

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,选择实例名称,点击发布新版本。
qiniu1
填写版本号,选择镜像,选择配置
展开高级配置,填写健康配置,点击确认创建
qiniu2
最后调整实例:
qiniu3
点击保存。

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).'&notifyURL='.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 (持久化处理)

发表评论

邮箱地址不会被公开。 必填项已用*标注