当您通过OSS内网地址访问OSS资源时,不收取流量费用。本文介绍ECS实例如何通过OSS内网地址访问OSS资源。
通过OSS内网地址访问OSS资源有以下两种方式:
- 与OSS同地域ECS实例可以直接通过内网访问有权限的OSS资源。
- 与OSS不同地域的ECS实例或公网用户可通过配置ECS反向代理,间接实现通过OSS内网地址访问OSS资源。
获取OSS内网地址
- 通过OSS控制台获取
登录OSS管理控制台,打开指定Bucket的概览页面,在访问域名区域查看Bucket的Endpoint和Bucket域名,如下图所示。
- 通过固定格式获取
OSS的访问地址为固定格式:
BucketName.Endpoint
。其中,BucketName
为您的存储空间名称,Endpoint
为存储空间所在的地域对应的访问域名。详情请参见OSS访问域名使用规则。
同地域ECS实例访问OSS资源
与OSS同地域的ECS实例可以通过以下方式使用内网访问OSS资源:
- 通过URL直接访问OSS资源
您可以直接使用OSS资源的内网地址访问有权限的OSS资源。例如,杭州地域某Bucket名为test,根目录下有个Object名为1.jpg,处于公共读状态。此时,杭州地域的ECS实例均可以使用
http://test.oss-cn-hangzhou-internal.aliyuncs.com/1.jpg
访问此Object。因此,您可以将OSS资源的访问URL嵌入到您的网站中,提供给同地域的ECS用户或已通过专线接入到与OSS同地域内网的用户访问。警告 为了您的数据安全,不建议您将OSS资源设置为公共读或公共读写,您可以通过 Bucket Policy授权给指定用户访问您的资源。 - 通过ossbrowser访问OSS资源
您可以在配置ossbrowser访问参数的时候,将Endpoint设置为自定义,并填写OSS的内网Endpoint地址。详情请参见ossbrowser。
- 通过ossutil访问OSS资源
您可以在配置ossutil访问参数的时候,将Endpoint设置为OSS的内网Endpoint地址。详情请参见ossutil。
- 通过SDK访问OSS资源
SDK初始化client的时候,Endpoint配置OSS内网对应的Endpoint即可。
- Java SDK
String endpoint = "http://oss-cn-hangzhou-internal.aliyuncs.com";//以华东 1为例 String accessKeyId = "<yourAccessKeyId>"; String accessKeySecret = "<yourAccessKeySecret>"; OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret);
更多详情请参见Java SDK初始化。
- PHP SDK
$accessKeyId = "<yourAccessKeyId>"; $accessKeySecret = "<yourAccessKeySecret>"; $endpoint = "<您选定的OSS数据中心访问域名,例如http://oss-cn-hangzhou-internal.aliyuncs.com>";
更多详情请参见PHP SDK初始化。
- Python SDK
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>') endpoint = 'http://oss-cn-hangzhou-internal.aliyuncs.com' # 您选定的OSS数据中心访问域名,假设Bucket处于杭州地域 bucket = oss2.Bucket(auth, endpoint, 'BucketName')
更多详情请参见Python SDK初始化。
- .NET SDK
const string accessKeyId = "<yourAccessKeyId>"; const string accessKeySecret = "<yourAccessKeySecret>"; const string endpoint = "http://oss-cn-hangzhou-internal.aliyuncs.com"; var ossClient = new OssClient(endpoint, accessKeyId, accessKeySecret);
更多详情请参见.NET SDK初始化。
- C SDK
ptions->config = oss_config_create(options->pool); aos_str_set(&options->config->endpoint, "http://oss-cn-hangzhou-internal.aliyuncs.com"); aos_str_set(&options->config->access_key_id, "<yourAccessKeyId>"); aos_str_set(&options->config->access_key_secret, "<yourAccessKeySecret>"); options->config->is_cname = 0; options->ctl = aos_http_controller_create(options->pool, 0);
更多详情请参见C SDK初始化。
- Java SDK
通过ECS反向代理访问OSS资源
不同地域的ECS实例或外网用户是无法直接通过OSS内网地址访问OSS资源的,但是您可以通过配置ECS反向代理来间接实现:
- 在OSS同地域创建一个有公网地址的ECS实例。详情请参见创建ECS实例。
- 在ECS实例上配置反向代理。详情请参见基于CentOS的ECS实例实现OSS反向代理和基于Ubuntu的ECS实例实现OSS反向代理。
- OSS配置Bucket Policy,允许该ECS实例的内网地址访问OSS资源。详情请参见使用Bucket Policy授权其他用户访问OSS资源。
以上步骤配置完成后,您的用户将通过您的ECS公网地址访问您的OSS资源。当用户访问时,ECS实例通过内网向OSS请求资源,之后再返回给用户。