當您通過OSS內網地址訪問OSS資源時,不收取流量費用。本文介紹ECS執行個體如何通過OSS內網地址訪問OSS資源。
通過OSS內網地址訪問OSS資源有以下兩種方式:
與OSS同地區ECS執行個體可以直接通過內網訪問有許可權的OSS資源。
與OSS不同地區的ECS執行個體或公網使用者可通過配置ECS反向 Proxy,間接實現通過OSS內網地址訪問OSS資源。
擷取OSS內網地址
通過OSS控制台擷取
登入OSS管理主控台。
單擊Bucket列表,然後單擊目標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
options->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初始化。
通過ECS反向 Proxy訪問OSS資源
不同地區的ECS執行個體或外網使用者是無法直接通過OSS內網地址訪問OSS資源的,但是您可以通過配置ECS反向 Proxy來間接實現:
在OSS同地區建立一個有公網地址的ECS執行個體。詳情請參見建立ECS執行個體。
在ECS執行個體上配置反向 Proxy。詳情請參見基於CentOS的ECS執行個體實現OSS反向 Proxy、基於Ubuntu的ECS執行個體實現OSS反向 Proxy、基於Windows的ECS執行個體實現OSS反向 Proxy。
OSS配置Bucket Policy,允許該ECS執行個體的內網地址訪問OSS資源。詳情請參見通過Bucket Policy授權使用者訪問指定資源。
以上步驟配置完成後,您的使用者將通過您的ECS公網地址訪問您的OSS資源。當使用者訪問時,ECS執行個體通過內網向OSS請求資源,之後再返回給使用者。