赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 对象存储
  4. 操作指南
  5. 存储空间(Bucket)
  6. 获取存储空间的地域信息

获取存储空间的地域信息

  • 存储空间(Bucket)
  • 发布于 2025-04-21
  • 0 次阅读
文档编辑
文档编辑

当您在多个地域创建了大量存储空间(Bucket)时,您可以通过指定存储空间名称的方式,快速获取该存储空间所属的地域信息。

使用场景

  • 数据访问优化:了解Bucket所在地域有助于确定最优的数据访问路径。例如,如果您的应用部署在同一地域或附近地域,通过内网访问可以降低网络延迟和传输成本。

  • 合规与数据归属地要求:某些法规可能要求数据必须存储在特定地域,因此需要确保Bucket创建在符合法规要求的地域。

  • 多地域冗余或灾备:若业务有高可用性需求,可能会在多个地域设置Bucket以实现数据冗余,此时获取Bucket的地域信息对于实现数据同步和故障切换至关重要。

注意事项

关于OSS支持的地域信息,请参见OSS地域和访问域名。例如,华东1(杭州)的Location字段信息显示为oss-cn-hangzhou。

操作方式

使用OSS控制台

  1. 登录OSS管理控制台。

  2. 在左侧导航栏,单击Bucket 列表,然后单击目标Bucket名称。

    页面左上角将显示目标Bucket所属的地域信息,例如华东1(杭州)。

使用图形化管理工具ossbrowser

ossbrowser支持的Bucket级别的操作与控制台支持的操作类似,请按照ossbrowser界面指引完成获取存储空间所属地域信息的操作。关于使用ossbrowser的具体操作,请参见常用操作。

使用阿里云SDK

以下仅列举常见SDK的获取存储空间所属地域信息的代码示例。关于其他SDK的获取存储空间所属地域信息的代码示例,请参见SDK简介。

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;

public class Demo {

    public static void main(String[] args) throws Exception {
        // 填写OSS支持的任意Region对应的Endpoint,例如https://oss-cn-hangzhou.aliyuncs.com。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // 填写Bucket名称,例如examplebucket。
        String bucketName = "examplebucket";
        // 填写Bucket所在地域。以华东1(杭州)为例,Region填写为cn-hangzhou。
        String region = "cn-hangzhou";
        
        // 创建OSSClient实例。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            String location = ossClient.getBucketLocation(bucketName);
            System.out.println(location);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}
const OSS = require('ali-oss')
const client = new OSS({  
  // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // yourBucketName填写Bucket名称。
  bucket: 'yourBucketName','
});

async function getLocation() {
  try {
    const result = await client.getBucketInfo();
    console.log(result.bucket.Location);
  } catch (e) {
    console.log(e);
  }
}

getLocation();
using Aliyun.OSS;
using Aliyun.OSS.Common;
// 填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// yourBucketName填写存储空间名称。
var bucketName = "yourBucketName";

// 创建OssClient实例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
    // 获取存储空间所在的地域。
    var result = client.GetBucketLocation(bucketName);
    Console.WriteLine("Get bucket:{0} Info succeeded ", bucketName);
    Console.WriteLine("bucket Location: {0}", result.Location);
   
}
catch (OssException ex)
{
    Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
        ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /*初始化OSS账号信息。*/
    
    /*填写OSS支持的任意Region对应的Endpoint,例如https://oss-cn-hangzhou.aliyuncs.com。*/
    std::string Endpoint = "yourEndpoint";
    
    / *yourRegion填写Bucket所在地域对应的Region。以华东1(杭州)为例,Region填写为cn - hangzhou。 * /
    std::string Region = "yourRegion";
    
    /*yourBucketName填写存储空间名称。*/
    std::string BucketName = "yourBucketName";

    /*初始化网络等资源。*/
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。*/
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /*获取存储空间所在地域。*/
    GetBucketLocationRequest request(BucketName);
    auto outcome = client.GetBucketLocation(request);

    if (outcome.isSuccess()) {    
        std::cout << "getBucketLocation success, location: " << outcome.result().Location() << std::endl;
    }
    else {
        /*异常处理。*/
        std::cout << "getBucketLocation fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        ShutdownSdk();
        return -1;
    }

    /*释放网络等资源。*/
    ShutdownSdk();
    return 0;
}
#include "oss_api.h"
#include "aos_http_io.h"
/* 填写OSS支持的任意Region对应的Endpoint,例如https://oss-cn-hangzhou.aliyuncs.com。*/
const char *endpoint = "yourEndpoint";

/* 填写Bucket名称。*/
const char *bucket_name = "yourBucket";
/* yourRegion填写Bucket所在地域对应的Region。以华东1(杭州)为例,Region填写为cn-hangzhou。*/
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* 用char*类型的字符串初始化aos_string_t类型。*/
    aos_str_set(&options->config->endpoint, endpoint);
    /* 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。*/    
    aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
    aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
    //需要额外配置以下两个参数
    aos_str_set(&options->config->region, region);
    options->config->signature_version = 4;
    /* 是否使用CNAME域名访问OSS服务。0表示不使用。*/
    options->config->is_cname = 0;
    /* 设置网络相关参数,比如超时时间等*/
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
    /* 在程序入口调用aos_http_io_initialize方法来初始化网络、内存等全局资源。*/
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        exit(1);
    }
    /* 用于内存管理的内存池(pool),等价于apr_pool_t。其实现代码在apr库中。*/
    aos_pool_t *pool;
    /* 重新创建一个内存池,第二个参数是NULL,表示没有继承其它内存池。*/
    aos_pool_create(&pool, NULL);
    /* 创建并初始化options,该参数包括endpoint、access_key_id、acces_key_secret、is_cname、curl等全局配置信息。*/
    oss_request_options_t *oss_client_options;
    /* 在内存池中分配内存给options。*/
    oss_client_options = oss_request_options_create(pool);
    /* 初始化Client的选项oss_client_options。*/
    init_options(oss_client_options);
    /* 初始化参数。*/
    aos_string_t bucket;
    aos_string_t oss_location;
    aos_table_t *resp_headers = NULL; 
    aos_status_t *resp_status = NULL; 
    /* 将char*类型数据赋值给aos_string_t类型的存储空间。*/
    aos_str_set(&bucket, bucket_name);
    /* 获取存储空间的地域。*/
    resp_status = oss_get_bucket_location(oss_client_options, &bucket, &oss_location, &resp_headers);
    if (aos_status_is_ok(resp_status)) {
        printf("get bucket location succeeded : %s \n", oss_location.data);
    } else {
        printf("get bucket location failed\n");
    }
    /* 释放内存池,相当于释放了请求过程中各资源分配的内存。*/
    aos_pool_destroy(pool);
    /* 释放之前分配的全局资源。*/
    aos_http_io_deinitialize();
    return 0;
}
package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// 定义全局变量
var (
	region     string // 存储区域
	bucketName string // 存储空间名称
)

// init函数用于初始化命令行参数
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The `name` of the bucket.")
}

func main() {
	// 解析命令行参数
	flag.Parse()

	// 检查bucket名称是否为空
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// 检查region是否为空
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// 加载默认配置并设置凭证提供者和区域
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// 创建OSS客户端
	client := oss.NewClient(cfg)

	// 创建获取存储空间所在地域的请求
	request := &oss.GetBucketLocationRequest{
		Bucket: oss.Ptr(bucketName), // 存储空间名称
	}

	// 执行获取存储空间所在地域的操作并处理结果
	result, err := client.GetBucketLocation(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to get bucket location %v", err)
	}

	// 打印存储空间所在地域
	log.Printf("get bucket location:%#v\n", *result.LocationConstraint)
}
import argparse
import alibabacloud_oss_v2 as oss

# 创建命令行参数解析器,描述此脚本用于获取指定Bucket的位置信息。
parser = argparse.ArgumentParser(description="Get the location of a specified OSS bucket.")

# 添加命令行参数 --region,表示存储空间所在的区域,必需参数
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)

# 添加命令行参数 --bucket,表示存储空间的名称,必需参数
parser.add_argument('--bucket', help='The name of the bucket to get the location for.', required=True)

# 添加命令行参数 --endpoint,表示其他服务可用来访问OSS的域名,非必需参数
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS.')

def main():
    """
    主函数,用于解析命令行参数并获取指定Bucket的位置信息。
    """

    args = parser.parse_args()  # 解析命令行参数

    # 从环境变量中加载凭证信息,用于身份验证
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # 使用SDK的默认配置,并设置凭证提供者和区域信息
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region

    # 如果提供了endpoint参数,则设置配置中的endpoint
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # 使用配置好的信息创建OSS客户端
    client = oss.Client(cfg)

    # 构造请求以获取指定Bucket的位置信息
    request = oss.GetBucketLocationRequest(bucket=args.bucket)

    # 执行请求并获取响应结果
    result = client.get_bucket_location(request)

    # 打印响应结果的状态码、请求ID和位置信息
    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
          f' location: {result.location}'
    )

if __name__ == "__main__":
    main()  # 脚本入口,当文件被直接运行时调用main函数
<?php

require_once __DIR__ . '/../vendor/autoload.php'; // 引入自动加载文件,加载依赖库

use AlibabaCloud\Oss\V2 as Oss;

// 定义命令行参数描述
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // 区域是必填项,存储空间所在的区域,例如 oss-cn-hangzhou。
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // 终端节点是可选项,其他服务可以用来访问OSS的域名。
    "bucket" => ['help' => 'The name of the bucket', 'required' => True], // 存储空间名称是必填项。
];
$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 = $options["region"]; // 存储空间所在区域。
$bucket = $options["bucket"]; // 存储空间名称。

// 使用环境变量加载凭证信息(AccessKeyId 和 AccessKeySecret)
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); // 从环境变量中加载凭证信息。

// 使用SDK的默认配置
$cfg = Oss\Config::loadDefault(); // 加载SDK的默认配置。
$cfg->setCredentialsProvider($credentialsProvider); // 设置凭证提供者。
$cfg->setRegion($region); // 设置区域。
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // 如果提供了终端节点,则设置终端节点。
}

// 创建OSS客户端实例
$client = new Oss\Client($cfg); // 创建OSS客户端实例。

// 创建获取存储空间位置的请求对象
$request = new Oss\Models\GetBucketLocationRequest($bucket); // 创建请求对象,用于获取指定存储空间的位置。

// 调用getBucketLocation方法获取存储空间位置
$result = $client->getBucketLocation($request); // 调用getBucketLocation方法获取存储空间的位置信息。

// 打印返回结果
printf(
    'status code:' . $result->statusCode . PHP_EOL . // HTTP响应状态码。
    'request id:' . $result->requestId . PHP_EOL . // 请求的唯一标识。
    'bucket location:' . var_export($result->location, true) // 存储空间所在的区域位置。
);

使用命令行工具ossutil

您可以使用命令行工具ossutil来获取存储空间的地域信息,ossutil的安装请参见安装ossutil。

以下示例展示了如何获取存储空间examplebucket 的地域信息。

ossutil api get-bucket-location --bucket examplebucket

如果您想了解该命令的更多信息,请参见get-bucket-location。

相关API

以上操作方式底层基于API实现,如果您的程序自定义要求较高,您可以直接发起REST API请求。直接发起REST API请求需要手动编写代码计算签名。更多信息,请参见GetBucketLocation。

相关文章

创建存储空间 2025-04-21 18:17

在上传文件(Object)到OSS之前,您需要创建一个用于存储文件的存储空间(Bucket)。存储空间具有各种配置属性,包括访问权限、存储类型等。您可以根据实际需求,创建不同类型的存储空间来存储不同的数据。 注意事项

列举存储空间 2025-04-21 18:17

存储空间(Bucket)按字母序排列。您可以结合实际场景列举当前账号下的所有存储空间、指定前缀的存储空间、指定个数的存储空间等。 列举条件

删除存储空间 2025-04-21 18:17

如果您希望某个存储空间(Bucket)停止计费,需要删除该Bucket。如果您希望OSS服务停止计费,以达到关闭OSS服务的效果,需要删除当前账号下的所有Bucket。

存储空间地域属性 2025-04-21 18:17

OSS存储空间(Bucket)地域属性分为有地域属性和无地域属性。 有地域属性Bucket 有地域属性Bucket适用于OSS通用场景。您在创建Bucket时需选择有地域属性,并指定Bucket所在的具体Region,例如华东1(杭州)。更多信息,请参见访问域名和数据中心。 无地域属性Bucket

获取存储空间的地域信息 2025-04-21 18:17

当您在多个地域创建了大量存储空间(Bucket)时,您可以通过指定存储空间名称的方式,快速获取该存储空间所属的地域信息。 使用场景 数据访问优化:了解Bucket所在地域有助于确定最优的数据访问路径。例如,如果您的应用部署在

存储空间命名 2025-04-21 18:17

存储空间(Bucket)是用于存储对象(Object)的容器,所有的Object都必须隶属于某个Bucket。Bucket具有各种配置属性,包括地域、访问权限、存储类型等。您可以根据实际需求,创建不同类型的Bucket来存储不同的数据。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号