有时候在Akamai上提交应用修改后,因为配置的问题,可能出现错误,像下面这样:
1
|
|
通过日志查找的方式去发现具体的问题可能会很耗时,因为需要等待akamai把日志上传。Akamai自己提供了解码错误代码的工具和API,具体的用法如下:
Lunar Control Centre 的 Diagnostic Tools
这个比较容易,从Luna Control Center
选择Resolve
=> Diagnostic Tools
。在Service Debugging Tools
部分选择Error Translator (Reference#)
,然后在Error String:
的input中输入错误码的字符串,点击Analyze
,等待一会就可以看到详细的错误信息以及原因。
使用Akamai Diagnostic API
- Akamai提供了Sample Client去调用API,除了clone client的repo,还可以直接使用docker,直接运行
docker run -it akamaiopen/api-kickstart /bin/bash
既可。 - 生成新的client请求的token。首先在
Luna Control Center
选择CONFIGURE
=>Manage APIs
进入Open API 管理页面。在Luna APIs
下面添加新的collection,然后在该collection添加新的client,就可以拿到新的tokens,点击右上角的导出按钮,就可以将其导出到一个文本文件中,如名为api-kickstart.txt
的文件。 - 在client端设置token。在client的目录下运行
python gen_edgerc.py -s default -f api-kickstart.txt
, 它会在用户根目录生成~/.edgerc
的credential文件。通过python verify_creds.py
可以验证credential的有效性。.edgerc
文件中的token其实也就是api请求时authorization的headers。 - 测试请求。
.edgerc
文件设置验证完成后,可以使用python diagnostic_tools.py
来测试,它实际请求的API endpoint是/diagnostic-tools/v1/locations
和/diagnostic-tools/v1/dig
,返回如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
Akamai的diagnostic API的列表在这里。ErrorCode解释的endpoint是/diagnostic-tools/v1/errortranslator{?errorCode}
,通过重用例子中的python代码即可发起这样的请求,比如把diagnostic_tools.py
修改如下(我就是这么懒):
1 2 3 |
|
之后就可以看到错误的原因是ERR_FWD_SSL_HANDSHAKE|err_conn_strict_cert
,也就是说我没有在CDN设置正确的certificate,导致它和origin的ssl handshake失败了。
如果没有什么特殊的需求,akamai web console中的diagnostic tool就可以满足需求,逼格较高或者有自动化需求的可以从命令行调用API输出错误原因。