开发者社区> 问答> 正文

ECS不能通过内网访问 oss 内网地址

已解决

展开
收起
游客p4irc632tngdc 2018-05-10 21:24:59 2133 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    详细解答可以参考官方帮助文档

    如果您所购买的ECS实例与OSS Bucket所在地域(region)相同,那么推荐您通过内网的方式访问OSS,不收取流量费用。访问是否走内网是根据您设置的域名(endpoint)来确定的。使用了内网域名访问数据会走内网通道,如果没有使用内网域名,那么会走公网通道。

    说明:

    • 同地域的ECS可以通过内网访问OSS。
    • 跨账户的ECS和OSS可以内网互连。
    • 不同地域的ECS与OSS无法通过内网访问。

    内网地址组成

    • VPC/经典网络ECS:BucketName.region-internal.aliyuncs.com

    举例说明:

    • 华东2 VPC/经典网络ECS:aliyun-abc.oss-cn-shanghai-internal.aliyuncs.com

    Region和endpoint请参考:访问域名和数据中心中的Region和Endpoint对照表”。

    OSS访问域名的使用规则

    详细的OSS外网、内网访问规则和拼写规则请参考:OSS访问域名使用规则

    通过控制台快速获得Bucket对应内网地址

    阿里云OSS管理控制台选择具体Bucket打开Bucket概览页面,在访问域名区域显示Bucket地址,如下图所示。

    域名

    WEB站点如何通过内网使用OSS资源

    常见问题:如果网站部署在ECS上,是否可以直接在网站页面中嵌入Object的内网url?

    例如嵌入urlhttp://ali.oss-cn-hangzhou-internal.aliyuncs.com/1.jpg 提供给网站客户访问?

    • 非同区域ECS,无法直接访问OSS内网地址:
      客户在本地PC端即外网环境下通过网页直接访问OSS内网地址,无法获取到Object。如果网站不是部署在OSS同区域的ECS上,则网站页面嵌入Object的URL,需要使用OSS公网地址。

    • 同区域ECS反向代理,访问OSS内网地址:
      同区域ECS上的网站如果内网调用OSS资源,需要将网页页面的访问链接设置为ECS的资源,ECS通过内网获取到OSS资源后,在将资源转发给客户访问。获取方式:API/SDK或者反向代理。但在客户访问量大的情况下ECS的带宽可能会成为瓶颈。

    SDK/API如何通过内网使用OSS

    SDK初始化client的时候,endpoint传入OSS内网对应的Endpoint即可,请参考:访问域名和数据中心

    Java

    1. String endpoint = "http://oss-cn-hangzhou-internal.aliyuncs.com";//以华东 1为例
    2. String accessKeyId = "<yourAccessKeyId>";
    3. String accessKeySecret = "<yourAccessKeySecret>";
    4. OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret);

    更多详情请参考:Java SDK

    PHP

    1. $accessKeyId = "<您从OSS获得的AccessKeyId>";
    2. $accessKeySecret = "<您从OSS获得的AccessKeySecret>";
    3. $endpoint = "<您选定的OSS数据中心访问域名,例如http://oss-cn-hangzhou-internal.aliyuncs.com>";

    更多详情请参考:PHP SDK

    Python

    1. auth = oss2.Auth('您的AccessKeyId', '您的AccessKeySecret')
    2. endpoint = 'http://oss-cn-hangzhou-internal.aliyuncs.com' # 假设Bucket处于杭州区域
    3. bucket = oss2.Bucket(auth, endpoint, '您的Bucket名')

    更多详情请参考:Python SDK

    .Net

    1. const string accessKeyId = "<your AccessKeyId>";
    2. const string accessKeySecret = "<your AccessKeySecret>";
    3. const string endpoint = "http://oss-cn-hangzhou-internal.aliyuncs.com";
    4. var ossClient = new OssClient(endpoint, accessKeyId, accessKeySecret);

    更多详情请参考:.NET SDK

    C

    1. ptions->config = oss_config_create(options->pool);
    2. aos_str_set(&options->config->endpoint, "http://oss-cn-hangzhou-internal.aliyuncs.com");
    3. aos_str_set(&options->config->access_key_id, "<您的AccessKeyId>");
    4. aos_str_set(&options->config->access_key_secret, "<您的AccessKeySecret>");
    5. options->config->is_cname = 0;
    6. options->ctl = aos_http_controller_create(options->pool, 0);

    更多详情请参考:C SDK

    2018-05-11 22:24:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
OSS运维进阶实战手册 立即下载
《OSS运维基础实战手册》 立即下载
OSS运维基础实战手册 立即下载