通过Bucket域名访问OSS

OSS为每个存储空间(Bucket)分配一系列默认访问域名,支持根据不同业务需求和网络环境(公网、内网、传输加速网络)灵活访问OSS资源。

核心概念

标准的OSS访问地址由多个层级组合构成。准确理解以下四个核心概念,对于正确访问OSS至关重要:

概念

说明

示例

用途

Region ID

通用地域标识

cn-hangzhou

用于SDK、ossutil进行V4签名等场景

专用Region ID

OSS专用地域标识

oss-cn-hangzhou

用于构成Endpoint、API入参、返回参数等场景

Endpoint

服务访问地址

oss-cn-hangzhou.aliyuncs.com

SDK、ossutil中配置,用于建立与OSS服务的网络连接等场景

Bucket域名

具体Bucket的访问地址

bucket-name.oss-cn-hangzhou.aliyuncs.com

用于浏览器直接访问、生成签名URL或托管静态网站等场景。

这四个概念存在层级关系:Region ID 标识一个地理位置,OSS为其分配对应的专用Region ID,专用Region ID与域名后缀组合构成Endpoint(服务访问地址)。访问具体Bucket时,使用Bucket名称与Endpoint组合形成的Bucket域名(资源访问地址)。

域名类型

OSS根据网络环境和性能需求提供不同类型的访问域名。

外网访问域名

专为互联网访问设计,适用于Web应用、移动客户端、跨地域访问等场景。

域名格式

  • Endpointoss-[RegionID].aliyuncs.com

  • Bucket域名[BucketName].oss-[RegionID].aliyuncs.com

访问示例

文件URL

以下示例演示通过控制台获取私有Bucket的文件签名URL,更多获取签名URL的方式请参见使用预签名URL下载或预览文件

  1. 前往Bucket列表,单击目标Bucket。

  2. 单击目标访问文件的文件名或操作列的详情

  3. 域名选择外网域名,单击复制文件URL

  4. 在浏览器中访问URL。

通过OSS Bucket域名访问HTML、图片等文件时,浏览器会强制下载而非在线预览。如需实现文件预览功能,请通过自定义域名访问OSS

ossutil

以下示例演示使用命令行工具ossutil 2.0下载文件。使用前需要安装并配置ossutil 2.0,工具默认使用外网访问Endpoint,也可通过-e参数显式指定外网访问Endpoint。

ossutil cp oss://example-bucket/dest.jpg dest.jpg -e oss-cn-hangzhou.aliyuncs.com

SDK

以下展示常见语言的SDK集成示例,更多语言的集成示例请参见SDK参考中对应语言的初始化方法。

Java SDK V2

SDK初始化客户端时默认使用外网访问域名,只需填写地域(Region)ID即可完成配置,无需额外指定Endpoint。完整的初始化代码示例请参见OSS Java SDK V2(预览版)

Java SDK V1

初始化OSS客户端实例时指定外网访问域名,完整的初始化代码请参见OSS Java SDK V1

// 以华东1(杭州)的外网访问Endpoint为例
String endpoint = "oss-cn-hangzhou.aliyuncs.com";
// 初始化OSS客户端
OSS ossClient = OSSClientBuilder.create()
        .credentialsProvider(provider)
        .clientConfiguration(clientBuilderConfiguration)
        .region("cn-hangzhou")
        .endpoint(endpoint)
        .build();

Python SDK V2

SDK初始化客户端时默认使用外网访问域名,只需填写地域(Region)ID即可完成配置,无需额外指定Endpoint。完整的初始化代码示例请参见OSS Python SDK V2

Python SDK V1

初始化OSS客户端实例时指定外网访问域名,完整的初始化代码请参见初始化(Python SDK V1)

# 以华东1(杭州)的外网访问Endpoint为例
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# 初始化OSS客户端实例
bucket = oss.Bucket(auth, endpoint, bucket, region="cn-hangzhou")

Go SDK V2

SDK初始化客户端时默认使用外网访问域名,只需填写地域(Region)ID即可完成配置,无需额外指定Endpoint。完整的初始化代码示例请参见OSS Go SDK V2

Go SDK V1

初始化OSS客户端实例时指定外网访问域名,完整的初始化代码请参见配置客户端

// 创建OSS客户端实例
client, _ := oss.New(
        "oss-cn-hangzhou.aliyuncs.com",	// 以华东1(杭州)的外网访问Endpoint为例
        "",
        "",
        oss.SetCredentialsProvider(&provider),
        oss.AuthVersion(oss.AuthV4),
        oss.Region("cn-hangzhou"),
)

内网访问域名

专为阿里云内网环境设计,适用于同地域的ECS实例访问OSS等场景。通过内网访问可避免产生外网流量费用,同时获得更稳定的网络连接和更低的访问延迟。

域名格式

  • Endpointoss-[RegionID]-internal.aliyuncs.com

  • Bucket域名[BucketName].oss-[RegionID]-internal.aliyuncs.com

使用建议

  • DNS配置优化

    使用内网Endpoint时,强烈建议配置阿里云的云上私网DNS地址(100.100.2.136100.100.2.138),确保获取正确的VIP地址,避免因DNS解析问题导致OSS访问异常。

  • VIP网段路由配置完整性

    OSS为每个Region内网VIP网段划分了固定地址段,系统会在指定VIP网段内动态切换IP地址。本地设备和数据中心通过内网访问OSS时,路由配置必须涵盖完整的VIP网段,否则可能因网络路由不完整导致连接中断。各地域的内网VIP网段信息请参见地域和Endpoint

    重要

    请确保路由配置涵盖完整的VIP网段,避免因配置不完整导致网络连通性问题。若因VIP网段配置缺失影响OSS服务可用性,相关损失需由配置方承担。

  • 安全组规则配置

    使用ECS实例通过内网访问OSS时,安全组规则不能禁止访问任何一个VIP网段,确保网络连通性。

访问示例

ossutil

以下示例演示在同地域的ECS中使用命令行工具ossutil 2.0下载文件。使用前需要安装并配置ossutil 2.0,可在配置时使用内网访问Endpoint,也可在下载时通过-e参数指定内网访问Endpoint。

ossutil cp oss://example-bucket/dest.jpg dest.jpg -e oss-cn-hangzhou-internal.aliyuncs.com

SDK

以下展示常见语言的SDK集成示例,更多语言的集成示例请参见SDK参考中对应语言的初始化方法。

Java SDK V2

初始化OSS客户端实例时通过指定EndpointuseInternalEndpoint(true)设置使用内网访问域名,完整的初始化代码请参见OSS Java SDK V2(预览版)

  • 方式一:指定内网访问Endpoint

    // 以华东1(杭州)的内网访问Endpoint为例
    String endpoint = "oss-cn-hangzhou-internal.aliyuncs.com";
    // 初始化OSS客户端
    OSSClient client = OSSClient.newBuilder()
            .credentialsProvider(provider)
            .region("cn-hangzhou")
            .endpoint(endpoint)
            .build();
  • 方式二:通过useInternalEndpoint(true)设置

    // 初始化OSS客户端
    OSSClient client = OSSClient.newBuilder()
            .credentialsProvider(provider)
            .region("cn-hangzhou")
            .useInternalEndpoint(true)
            .build();

Java SDK V1

初始化OSS客户端实例时指定内网访问域名,完整的初始化代码请参见OSS Java SDK V1

// 以华东1(杭州)的内网访问Endpoint为例
String endpoint = "oss-cn-hangzhou-internal.aliyuncs.com";
// 初始化OSS客户端
OSS ossClient = OSSClientBuilder.create()
        .credentialsProvider(provider)
        .clientConfiguration(clientBuilderConfiguration)
        .region("cn-hangzhou")
        .endpoint(endpoint)
        .build();

Python SDK V2

初始化OSS客户端实例时通过指定Endpointuse_internal_endpoint = True设置使用内网访问域名,完整的初始化代码请参见OSS Python SDK V2

  • 方式一:指定内网访问Endpoint

    # 以华东1(杭州)的内网访问Endpoint为例
    config.endpoint = "https://oss-cn-hangzhou-internal.aliyuncs.com"
    # 初始化OSS客户端
    client = oss.Client(config)
  • 方式二:通过use_internal_endpoint = True设置

    config.use_internal_endpoint = True
    # 初始化OSS客户端
    client = oss.Client(config)

Python SDK V1

初始化OSS客户端实例时指定内网访问域名,完整的初始化代码请参见初始化(Python SDK V1)

# 以华东1(杭州)的内网访问Endpoint为例
endpoint = "oss-cn-hangzhou-internal.aliyuncs.com"
# 初始化OSS客户端实例
bucket = oss.Bucket(auth, endpoint, bucket, region="cn-hangzhou")

Go SDK V2

初始化OSS客户端实例时通过指定EndpointWithUseInternalEndpoint(true)设置使用内网访问域名,完整的初始化代码请参见OSS Go SDK V2

  • 方式一:指定内网访问Endpoint

    // 配置OSS客户端,设置凭证提供者和服务地域
    config := oss.LoadDefaultConfig().
            WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
            WithRegion("cn-hangzhou").
            WithEndpoint("oss-cn-hangzhou-internal.aliyuncs.com") // 以华东1(杭州)的内网访问Endpoint为例
    
    // 初始化OSS客户端实例
    client := oss.NewClient(config)
  • 方式二:通过WithUseInternalEndpoint(true)设置

    // 配置OSS客户端,设置凭证提供者和服务地域
    config := oss.LoadDefaultConfig().
            WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
            WithRegion("cn-hangzhou").
            WithUseInternalEndpoint(true)
    
    // 初始化OSS客户端实例
    client := oss.NewClient(config)

Go SDK V1

初始化OSS客户端实例时指定内网访问域名,完整的初始化代码请参见配置客户端

// 创建OSS客户端实例
client, _ := oss.New(
        "oss-cn-hangzhou-internal.aliyuncs.com", // 以华东1(杭州)的内网访问Endpoint为例
        "",
        "",
        oss.SetCredentialsProvider(&provider),
        oss.AuthVersion(oss.AuthV4),
        oss.Region("cn-hangzhou"),
)

传输加速域名

启用传输加速功能后可使用的专用域名,通过全球加速节点优化数据传输路径,适用于跨地域、跨国际的高速上传/下载场景,显著改善远距离访问的网络质量。

域名格式

  • Endpointoss-accelerate.aliyuncs.com

  • Bucket域名[BucketName].oss-accelerate.aliyuncs.com

访问示例

ossutil

以下示例演示在杭州地域的ECS中使用命令行工具ossutil 2.0下载跨国地域的文件。使用前需要安装并配置ossutil 2.0,可在配置时使用传输加速Endpoint,也可在下载时通过-e参数指定传输加速Endpoint。

ossutil cp oss://example-bucket/dest.jpg dest.jpg -e oss-accelerate.aliyuncs.com

SDK

以下展示常见语言的SDK集成示例,更多语言的集成示例请参见SDK参考中对应语言的初始化方法。

Java SDK V2

初始化OSS客户端实例时通过指定EndpointuseAccelerateEndpoint(true)设置使用传输加速域名,完整的初始化代码请参见OSS Java SDK V2(预览版)

  • 方式一:指定传输加速Endpoint

    String endpoint = "oss-accelerate.aliyuncs.com";
    // 初始化OSS客户端
    OSSClient client = OSSClient.newBuilder()
            .credentialsProvider(provider)
            .region("cn-hangzhou")
            .endpoint(endpoint)
            .build();
  • 方式二:通过useAccelerateEndpoint(true)设置

    // 初始化OSS客户端
    OSSClient client = OSSClient.newBuilder()
            .credentialsProvider(provider)
            .region("cn-hangzhou")
            .useAccelerateEndpoint(true)
            .build();

Java SDK V1

初始化OSS客户端实例时指定传输加速域名,完整的初始化代码请参见OSS Java SDK V1

String endpoint = "oss-accelerate.aliyuncs.com";
// 初始化OSS客户端
OSS ossClient = OSSClientBuilder.create()
        .credentialsProvider(provider)
        .clientConfiguration(clientBuilderConfiguration)
        .region("cn-hangzhou")
        .endpoint(endpoint)
        .build();

Python SDK V2

初始化OSS客户端实例时通过指定Endpointuse_accelerate_endpoint = True设置使用传输加速域名,完整的初始化代码请参见OSS Python SDK V2

  • 方式一:指定传输加速Endpoint

    config.endpoint = "oss-accelerate.aliyuncs.com"
    # 初始化OSS客户端
    client = oss.Client(config)
  • 方式二:通过use_accelerate_endpoint = True设置

    config.use_accelerate_endpoint = True
    # 初始化OSS客户端
    client = oss.Client(config)

Python SDK V1

初始化OSS客户端实例时指定传输加速域名,完整的初始化代码请参见初始化(Python SDK V1)

endpoint = "oss-accelerate.aliyuncs.com"
# 初始化OSS客户端实例
bucket = oss.Bucket(auth, endpoint, bucket, region="cn-hangzhou")

Go SDK V2

初始化OSS客户端实例时通过指定EndpointWithUseAccelerateEndpoint(true)设置使用传输加速域名,完整的初始化代码请参见OSS Go SDK V2

  • 方式一:指定传输加速Endpoint

    // 配置OSS客户端,设置凭证提供者和服务地域
    config := oss.LoadDefaultConfig().
            WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
            WithRegion("cn-hangzhou").
            WithEndpoint("oss-accelerate.aliyuncs.com")
    
    // 初始化OSS客户端实例
    client := oss.NewClient(config)
  • 方式二:通过WithUseAccelerateEndpoint(true)设置

    // 配置OSS客户端,设置凭证提供者和服务地域
    config := oss.LoadDefaultConfig().
            WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
            WithRegion("cn-hangzhou").
            WithUseAccelerateEndpoint(true)
    
    // 初始化OSS客户端实例
    client := oss.NewClient(config)

Go SDK V1

初始化OSS客户端实例时指定传输加速域名,完整的初始化代码请参见配置客户端

// 创建OSS客户端实例
client, _ := oss.New(
        "oss-accelerate.aliyuncs.com",
        "",
        "",
        oss.SetCredentialsProvider(&provider),
        oss.AuthVersion(oss.AuthV4),
        oss.Region("cn-hangzhou"),
)

协议支持

HTTP/HTTPS协议

所有地域的EndpointBucket域名均支持HTTPHTTPS两种协议访问。为确保数据传输安全性,强烈建议在生产环境中使用HTTPS协议。

IP协议

所有地域均支持IPv4访问,部分地域额外支持IPv4IPv6双栈访问Endpoint,允许IPv6网络环境下的客户端直连OSS资源。对于支持IPv6Endpoint,客户端无需特殊配置,在纯IPv6或双栈网络环境中,DNS会自动解析并优先使用IPv6地址建立连接。经典网络环境下的ECS实例不支持通过IPv4协议或IPv6协议访问OSS资源。

如何验证EndpointIPv6支持?

通过dig AAAA命令验证Endpoint是否支持IPv6访问。

dig AAAA cn-hangzhou.oss.aliyuncs.com

如果Endpoint支持IPv6,命令返回结果的ANSWER SECTION部分会显示AAAA记录,表示该域名已配置IPv6地址。

cn-hangzhou.oss.aliyuncs.com. 60 IN     AAAA    2403:28c0:300:4:6413:9f34:f4a6:d22c

相关文档