查询Endpoint信息(PHP SDK V2)

本文介绍如何使用PHP SDK V2查询所有支持地域或者指定地域对应的Endpoint信息,包括外网访问(IPv4)Endpoint、内网访问(经典网络或VPC网络)Endpoint和传输加速域名(全地域上传下载加速)Endpoint。

注意事项

  • 查询所有支持地域或者指定地域对应的Endpoint信息与OSS的地域支持情况相关,与您在该地域是否创建Bucket无关。

  • 本文示例代码以华东1(杭州)的地域IDcn-hangzhou为例,默认使用外网Endpoint,如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的RegionEndpoint的对应关系,请参见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示例