初始化
确认Endpoint
在确认您使用SDK时配置的Endpoint时,可先参考阅读API参考中关于 API服务域名 的部分,理解Endpoint相关的概念。 百度智能云目前开放了多区域支持,请参考区域选择说明。 对应信息为:
访问区域 | 对应Endpoint |
---|---|
北京 | eip.bj.baidubce.com |
广州 | eip.gz.baidubce.com |
苏州 | eip.su.baidubce.com |
香港 | eip.hkg.baidubce.com |
武汉 | eip.fwh.baidubce.com |
保定 | eip.bd.baidubce.com |
获取密钥
要使用百度智能云EIP,您需要拥有一个有效的 AK(Access Key ID)和SK(Secret Access Key)用来进行签名认证。AK/SK是由系统分配给用户的,均为字符串,用于标识用户,为访问EIP做签名验证。 可以通过如下步骤获得并了解您的AK/SK信息: 注册百度智能云账号 创建AK/SK
新建EipClient/EipGroupClient/EipBpClient
EipClient/EipGroupClient是Eip/EipGroup/EipBp服务的PHP客户端,为开发者与Eip/EipGroup/EipBp服务的PHP客户端服务进行交互提供了一系列的方法。
在新建EipClient/EipGroupClient/EipBpClient之前,需要先创建配置文件对EipClient/EipGroupClient/EipBpClient进行配置,以下将此配置文件命名为YourConf.php,具体配置信息如下所示:
// 报告所有 PHP 错误
error_reporting(-1);
define('__EIP_CLIENT_ROOT', dirname(__DIR__));
// 设置EipClient的Access Key ID、Secret Access Key和ENDPOINT
$EIP_TEST_CONFIG =
array(
'credentials' => array(
'accessKeyId' => 'your ak',
'secretAccessKey' => 'your sk',
'sessionToken' => 'your session token'
),
'endpoint' => 'http://eip.bj.baidubce.com',
'stsEndpoint' => 'http://sts.bj.baidubce.com',
);
// 设置log的格式和级别
$__handler = new \Monolog\Handler\StreamHandler(STDERR, \Monolog\Logger::DEBUG);
$__handler->setFormatter(
new \Monolog\Formatter\LineFormatter(null, null, false, true)
);
\BaiduBce\Log\LogFactory::setInstance(
new \BaiduBce\Log\MonoLogFactory(array($__handler))
);
\BaiduBce\Log\LogFactory::setLogLevel(\Psr\Log\LogLevel::DEBUG);
注意:
- 在上面代码中,
accessKeyId
对应控制台中的“Access Key ID”,secretAccessKey
对应控制台中的“Access Key Secret”,获取方式请参考《操作指南 管理ACCESSKEY》。- 如果用户需要自己指定域名,可以通过传入ENDPOINT参数来指定,ENDPOINT参数需要用指定区域的域名来进行定义,如服务所在区域为北京,则为
http://eip.bj.baidubce.com
。- 如果不使用STS验证方式,则
stsEndpoint
和sessionToken
可以为空或者删除。
使用AK/SK新建EipClient/EipGroupClient/EipBpClient
通过AK/SK方式访问EIP,用户可以参考如下代码新建一个EipClient:
// 使用PHP SDK,并且使用自定义配置文件
include 'BaiduBce.phar';
require 'YourConf.php';
use BaiduBce\BceClientConfigOptions;
use BaiduBce\Util\Time;
use BaiduBce\Util\MimeTypes;
use BaiduBce\Http\HttpHeaders;
use BaiduBce\Services\Eip\EipClient;
use BaiduBce\Services\EipGroup\EipGroupClient;
//调用配置文件中的参数
global $EIP_TEST_CONFIG;
//新建EipClient
$eipClient = new EipClient($EIP_TEST_CONFIG);
//新建EipGroupClient
$eipGroupClient = new EipGroupClient($EIP_TEST_CONFIG);
//新建EipBpClient
$eipBpClient = new 新建EipBpClient($EIP_TEST_CONFIG);
使用STS创建EipClient/EipGroupClient/EipBpClient
申请STS token
EIP可以通过STS机制实现第三方的临时授权访问。STS(Security Token Service)是百度智能云提供的临时授权服务。通过STS,您可以为第三方用户颁发一个自定义时效和权限的访问凭证。第三方用户可以使用该访问凭证直接调用百度智能云的API或SDK访问百度智能云资源。
通过STS方式访问EIP,用户需要先通过STS的client申请一个认证字符串,申请方式可参见百度智能云STS使用介绍。
用STS token新建EipClient
申请好STS后,可将STStoken配置到EipClient/EipGroupClient中,用户可以参考如下代码新建一个EipClient/EipGroupClient:
- 首先进行STS的endpoint配置。STS的配置示例如下:
$EIP_TEST_CONFIG =
array(
'credentials' => array(
'accessKeyId' => 'your ak',
'secretAccessKey' => 'your sk',
),
'stsEndpoint' => 'http://sts.bj.baidubce.com',
);
- StsClient的示例代码如下:
//新建StsClient
$client = new StsClient($EIP_TEST_CONFIG);
$request =
array(
'acl' => $aclArray, //用户定义的acl
'durationSeconds' => 43200, //STS凭证有效时间
);
$response = $client->getSessionToken($request);
$accessKeyID= $response->accessKeyId;
$secretAccessKey= $response->secretAccessKey;
$sessionToken = $response->sessionToken;
注意:其中acl指用户定义的acl,语法请参照访问控制。
- 将获取到的accessKeyID/secretAccessKey/sessionToken写入到配置文件
YourConf.php
中并新建EipClient。
$EIP_TEST_CONFIG =
array(
'credentials' => array(
'accessKeyId' => 'your ak',
'secretAccessKey' => 'your sk',
'sessionToken' => 'your session token'
),
'endpoint' => 'http://eip.bj.baidubce.com',
);
//新建EipClient
$eipClient = new EipClient($EIP_TEST_CONFIG);
//新建EipGroupClient
$eipGroupClient = new EipGroupClient($EIP_TEST_CONFIG);
//新建EipBpClient
$eipBpClient = new EipBpClient($EIP_TEST_CONFIG);
注意: 目前使用STS配置client时,无论对应EIP服务的endpoint在哪里,endpoint都需配置为
http://sts.bj.baidubce.com
。
配置HTTPS协议访问EIP/EipGroup/EipBp
EIP支持HTTPS传输协议,您可以通过如下两种方式在EIP PHP SDK中使用HTTPS访问EIP/EipGroup服务:
- 在endpoint中指定HTTPS:
$EIP_CONFIG =
array(
'credentials' => array(
'ak' => 'your-ak',
'sk' => 'your-sk',
),
'endpoint' => 'https://eip.bj.baidubce.com',
);
$eipClient = new EipClient($EIP_CONFIG);
$eipGroupClient = new EipGroupClient($EIP_CONFIG);
$eipBpClient = new EipBpClient($EIP_CONFIG);
- 通过在
protocol
中指定https
来设置HTTPS协议:
$EIP_CONFIG =
array(
'credentials' => array(
'ak' => 'your-ak',
'sk' => 'your-sk',
),
'endpoint' => 'eip.bj.baidubce.com',
'protocol' => 'https',
);
$eipClient = new EipClient($EIP_CONFIG);
$eipGroupClient = new EipGroupClient($EIP_CONFIG);
$eipBpClient = new EipBpClient($EIP_CONFIG);
注意:如果您在指定了endpoint的scheme的同时指定了protocol参数,则以endpoint为准。
$EIP_CONFIG =
array(
'credentials' => array(
'ak' => 'your-ak',
'sk' => 'your-sk',
),
'endpoint' => 'http://eip.bj.baidubce.com',
'protocol' => 'https',
);
$eipClient = new EipClient($EIP_CONFIG); //将以http方式访问eip
$eipGroupClient = new EipGroupClient($EIP_CONFIG); //将以http方式访问eipgroup
$eipBpClient = new EipBpClient($EIP_CONFIG); //将以http方式访问eipBp
使用自定义域名(CNAME)访问EIP/EipGroup/EipBp
您可以通过如下方式在EIP PHP SDK中使用自定义域名访问EIP服务:
在endpoint中指定自定义域名,以及custom字段为true,表示使用自定义域名:
$EIP_CONFIG =
array(
'credentials' => array(
'ak' => 'your-ak',
'sk' => 'your-sk',
),
'endpoint' => 'http://custom-domain.com',
'custom' => true,
);
$eipClient = new EipClient($EIP_CONFIG);
$eipGroupClient = new EipGroupClient($EIP_CONFIG);
$eipBpClient = new EipBpClient($EIP_CONFIG);
配置EipClient/EipGroupClient/EipBpClient
设置自定义参数
PHP SDK在\BaiduBce\Bce.php中默认设置了一些基本参数,若用户想要对参数的值进行修改,可以参考此文件来创建自身的参数配置函数,并在构造EipClient的时候传入,传入代码参考如下:
public function CustomizedConfig() {
$customizedConfig = array(
BceClientConfigOptions::PROTOCOL => 'http',
BceClientConfigOptions::REGION => 'bj',
BceClientConfigOptions::CONNECTION_TIMEOUT_IN_MILLIS => 120 * 1000,
BceClientConfigOptions::SOCKET_TIMEOUT_IN_MILLIS => 300 * 1000,
BceClientConfigOptions::SEND_BUF_SIZE => 5 * 1024 * 1024,
BceClientConfigOptions::RECV_BUF_SIZE => 5 * 1024 * 1024,
BceClientConfigOptions::CREDENTIALS => array(
'ak' => 'your-access-key-id',
'sk' => 'your-secret-access-key',
),
'endpoint' => 'your-endpoint',
);
//利用自定义配置创建EipClient
$customizedEipClient = new EipClient($customizedConfig);
//利用自定义配置创建EipGroupClient
$customizedEipGroupClient = new EipGroupClient($customizedConfig);
//利用自定义配置创建EipGroupClient
$customizedEipBpClient = new EipBpClient($customizedConfig);
}
参数说明如下:
参数 | 说明 | 默认值 |
---|---|---|
PROTOCOL | 协议 | http |
REGION | 区域 | bj |
CONNECTION_TIMEOUT_IN_MILLIS | 请求超时时间(单位:毫秒) | 50 * 1000 |
SOCKET_TIMEOUT_IN_MILLIS | 通过打开的连接传输数据的超时时间(单位:毫秒) | 0(指的是无限等待,若设置非0数值需要对文件大小和网速进行评估,否则上传大文件时会产生超时) |
SEND_BUF_SIZE | 发送缓冲区大小 | 1024 * 1024 |
RECV_BUF_SIZE | 接收缓冲区大小 | 10 1024 1024 |