345
windows
如何應用OSS的內網地址
一、各網絡環境下如何應用OSS的內網地址
隻有同區域的ECS才能內網鏈接OSS,跨賬戶的ECS與OSS也能內網互連。而ECS分為經典網絡ECS及VPC網絡ECS,**經典網絡ECS要內網鏈接OSS得調用OSS經典網絡內網地址**:bucketname. 內網Endpoint,內網endpoint格式一般為: region-internal.aliyuncs.com;**VPC網絡ECS要內網連接OSS得調用OSSVPC內網地址**:bucketname. VPC網絡Endpoint ,VPC網絡endpoint格式一般為:vpc100 -region.aliyuncs.com;其中 region可以為oss-cn-hangzhou、oss-cn-beijing、oss-cn-shanghai、oss-cn-shenzhen等等; OSS不同區域不同網絡環境(外網/VPC/經典網絡)的endpoint不同,OSS開通Region和Endpoint對照表參考: OSS開通Region和Endpoint對照表
如何獲取OSS的地址:
1) 可以通過OSS開通Region和Endpoint對照表獲取對應區域對應網絡環境oss的endpoint,通過bucketname.endpoint 拚接得到;
2) 控製台獲取bucket的地址;
阿裏雲控製台—OSS—選擇具體bucket—概覽中顯示了bucket的地址
二、站點中如何內網應用OSS的資源
存在客戶在站點頁麵中直接應用object的內網URL,如https://ali.oss-cn-hangzhou-internal.aliyuncs.com/1.jpg, 站點訪問異常,由於客戶的用戶打開站點是在其本地PC上打開的,相當於本地PC直接請求了OSS的內網,而OSS的內網隻能同區域的ECS才能內網訪問,客戶的用戶本地PC如果為非ECS網絡環境,那麼網絡就不可達,訪問異常了的;如果客戶要在站點中直接內網應用oss的資源
如何在站點中內網應用OSS資源:
客戶的站點必須部署在與OSS同區域的ECS上,實現方式參考如下
1) Web端發起請求到ECS,ECS解析請求,得到web 端要訪問的object名稱,及bucket名稱,ECS集成OSS的SDK或者API,調用SDK或者API獲取OSS的資源,返回給web端;
OSS SDK參考: OSS SDK
API操作參考:OSS API操作
2) Web端發起請求站點某個目錄下的URL,該站點目錄設置反向代理,代理到OSS內網;
站點服務器ECS接收到請求,內網請求OSS資源,返回數據給Web端;
反向代理配置:站點域名綁定bucket,但不需要cname 解析到bucket的公網地址上;
站點某個目錄配置反向代理配置,代理到OSS的內網地址上
Nginx反向代理配置類似如下
server {
listen 80 ; #default_server;
server_name www.a.com;
location / {
root /alidata/www/ www-a-com/;
proxy_pass https://aialiyun.oss-cn-hangzhou-internal.aliyuncs.com/;
}
}
Bucket綁定域名看: 自定義域名綁定
三、SDK如何內網應用OSS的資源
SDK初始化client的時候,endpoint傳入oss內網地址即可,oss內網地址獲取看《各網絡環境下如何應用OSS的內網地址》
1)Java:
String endpoint = "https://oss-cn-hangzhou-internal.aliyuncs.com";
// 雲賬號AccessKey有所有API訪問權限,建議遵循阿裏雲安全最佳實踐,創建並使用RAM子賬號進行API訪問或日常運維,請登錄 https://ram.console.aliyun.com 創建
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
// 創建OSSClient實例
OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret);
參考: Javasdk 初始化client
2)PHP:
$accessKeyId = "<您從OSS獲得的AccessKeyId>";
$accessKeySecret = "<您從OSS獲得的AccessKeySecret>";
$endpoint = "<您選定的OSS數據中心訪問域名,例如https://oss-cn-hangzhou-internal.aliyuncs.com>";
try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
} catch (OssException $e) {
print $e->getMessage();
}
3)Python:
auth = oss2.Auth('您的AccessKeyId', '您的AccessKeySecret')
endpoint = 'https://oss-cn-hangzhou-internal.aliyuncs.com' # 假設Bucket處於杭州區域
bucket = oss2.Bucket(auth, endpoint, '您的Bucket名')
參考: https://help.aliyun.com/document_detail/32028.html?spm=5176.doc32027.6.680.9xhved
**4)Net sdk**
const string accessKeyId = "<your AccessKeyId>";
const string accessKeySecret = "<your AccessKeySecret>";
const string endpoint = "https://oss-cn-hangzhou-internal.aliyuncs.com";
var ossClient = new OssClient(endpoint, accessKeyId, accessKeySecret);
參考: Python SDK初始化client
**5)C **
options->config = oss_config_create(options->pool);
aos_str_set(&options->config->endpoint, "https://oss-cn-hangzhou-internal.aliyuncs.com");
aos_str_set(&options->config->access_key_id, "<您的AccessKeyId>");
aos_str_set(&options->config->access_key_secret, "<您的AccessKeySecret>");
options->config->is_cname = 0;
options->ctl = aos_http_controller_create(options->pool, 0);
參考: C SDK初始化client
最後更新:2017-08-29 21:02:19