这几天新创建的应用一直报"Error":{"code":"11","Message":"ACL:Key-pair can not be found.",原因是BAE修改了ACL规则。你看看你是不是没有给bcs对象传递ak和sk,或者你的ak和sk是无效的。
我只是试图往BCS里upload一个object而已,每次都是这个error。而前几天的应用却能正常upload,发现原来是BAE做了改动。以前我根本没有配置bcs的AK和SK,只是简单地用BAE的AK和SK代替(注意bcs和BAE使用的是两套AK/SK),奇怪的是使用bcs完全没问题,比如,我以前是这么写的,当然现在看来,这么写是错误的:
define('BAIDU_BCS_AK', getenv('HTTP_BAE_ENV_AK')); define('BAIDU_BCS_SK', getenv('HTTP_BAE_ENV_SK'));
正确的AK和SK应当在http://developer.baidu.com/bae/ref/key/处获取,这里的AK和SK可以删除,但是请注意千万不要删除第一条。这是我的亲身体会,我抱着探索精神删掉了所有的AK和SK之后就发现我无法访问BCS的管理后台了,直接跳转http://developer.baidu.com/bae/ref/resource/global/static/500.html。为此我还专门跑到客服中心提问,折腾了两三天才恢复正常。
就是这个页面http://developer.baidu.com/bae/bcs/bucket/打不开,出错跳转到http://developer.baidu.com/bae/ref/resource/global/static/500.html,如图所示: 。从20号到现在一直如此,出现问题前,曾经删除过bcs的ak和sk,然后就不行了,现在创建了ak和sk,但是后台还是进不去,等于说现在没法使用bcs了,希望得到解答。
可能算是BAE的bug吧。顺便跑个题,BAE上面的开发框架有Yii和ThinkPHP,没有Drupal,可能Drupal并不适合做这样的分布式应用吧。SAE上面倒是有Drupal,不过是个人移植的,不知道效果如何。不过我觉得Drupal太慢了,一个钩子所有的模块都得试着响应一遍,普通PHP服务器倒还好,而像BAE一般的云平台是按CPU时间计费的,Drupal说不定会浪费很多钱。