本文介绍如何使用PHP SDK V2查询所有支持地域或者指定地域对应的Endpoint信息,包括外网访问(IPv4)Endpoint、内网访问(经典网络或VPC网络)Endpoint和传输加速域名(全地域上传下载加速)Endpoint。
注意事项
查询所有支持地域或者指定地域对应的Endpoint信息与OSS的地域支持情况相关,与您在该地域是否创建Bucket无关。
本文示例代码以华东1(杭州)的地域ID
cn-hangzhou
为例,默认使用外网Endpoint,如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见OSS地域和访问域名。
查询所有支持地域对应的Endpoint信息
<?php
// 引入 Composer 自动加载器,用于加载依赖包
require_once __DIR__ . '/../vendor/autoload.php';
// 导入阿里云 OSS SDK V2 版本的命名空间
use AlibabaCloud\Oss\V2 as Oss;
// 定义命令行参数的描述信息
$optsdesc = [
// region 参数:指定 bucket 所在的地域,必填
"region" => ['help' => 'The region in which the bucket is located.', 'required' => True],
// endpoint 参数:指定访问 OSS 的域名,选填
"endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False],
];
// 将参数名转换为 getopt 函数需要的格式(添加冒号表示需要值)
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// 解析命令行参数
$options = getopt("", $longopts);
// 检查必填参数是否提供
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help'];
echo "Error: the following arguments are required: --$key, $help";
exit(1);
}
}
// 获取 region 参数值
$region = $options["region"];
// 创建环境变量凭证提供者,从环境变量中获取访问凭证
// 需要设置环境变量:OSS_ACCESS_KEY_ID 和 OSS_ACCESS_KEY_SECRET
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// 加载 SDK 默认配置
$cfg = Oss\Config::loadDefault();
// 设置凭证提供者
$cfg->setCredentialsProvider($credentialsProvider);
// 设置区域
$cfg->setRegion($region);
// 如果提供了 endpoint 参数,则设置 endpoint
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]);
}
// 创建 OSS 客户端实例
$client = new Oss\Client($cfg);
// 创建描述地域的请求对象
$request = new Oss\Models\DescribeRegionsRequest();
// 发送请求获取地域信息
$result = $client->describeRegions($request);
// 打印响应结果,包括:
// - HTTP 状态码
// - 请求 ID
// - 完整的响应结果
printf(
'status code:' . $result->statusCode . PHP_EOL .
'request id:' . $result->requestId . PHP_EOL .
'result:' . var_export($result, true)
);
查询指定地域对应的Endpoint信息
<?php
// 引入 Composer 自动加载器,用于加载依赖包
require_once __DIR__ . '/../vendor/autoload.php';
// 导入阿里云 OSS SDK V2 版本的命名空间
use AlibabaCloud\Oss\V2 as Oss;
// 定义命令行参数的描述信息
$optsdesc = [
// region 参数:指定 bucket 所在的地域,必填
"region" => ['help' => 'The region in which the bucket is located.', 'required' => True],
// endpoint 参数:指定访问 OSS 的域名,选填
"endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False],
];
// 将参数名转换为 getopt 函数需要的格式(添加冒号表示需要值)
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// 解析命令行参数
$options = getopt("", $longopts);
// 检查必填参数是否提供
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help'];
echo "Error: the following arguments are required: --$key, $help";
exit(1);
}
}
// 获取 region 参数值
$region = $options["region"];
// 创建环境变量凭证提供者,从环境变量中获取访问凭证
// 需要设置环境变量:OSS_ACCESS_KEY_ID 和 OSS_ACCESS_KEY_SECRET
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// 加载 SDK 默认配置
$cfg = Oss\Config::loadDefault();
// 设置凭证提供者
$cfg->setCredentialsProvider($credentialsProvider);
// 设置区域
$cfg->setRegion($region);
// 如果提供了 endpoint 参数,则设置 endpoint
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]);
}
// 创建 OSS 客户端实例
$client = new Oss\Client($cfg);
// 创建描述地域的请求对象
$request = new Oss\Models\DescribeRegionsRequest(regions: "oss-cn-hangzhou");// 以华东1(杭州)为例,填写为oss-cn-hangzhou。其它Region请按实际情况填写
// 发送请求获取地域信息
$result = $client->describeRegions($request);
// 打印响应结果,包括:
// - HTTP 状态码
// - 请求 ID
// - 完整的响应结果
printf(
'status code:' . $result->statusCode . PHP_EOL .
'request id:' . $result->requestId . PHP_EOL .
'result:' . var_export($result, true)
);
相关文档
关于查询地域对应Endpoint信息的API接口描述,请参见DescribeRegions。
关于查询地域对应Endpoint信息的完整示例代码,请参见GitHub示例。
该文章对您有帮助吗?