如果專有網絡VPC類型的ECS實例沒有設置公網IP,則無法調用API。本文介紹該類實例如何通過阿里云內網調用API。
背景信息
由于云服務器ECS提供的接入地址(Endpoint)為公網服務地址,當您的ECS實例沒有分配公網帶寬或者不存在公網IP地址時,無法使用阿里云CLI或者SDK等工具發起API請求。此時,您可以通過以下兩種方式實現阿里云內網調用API。
SDK:Java SDK核心庫在4.5.3版本起,支持通過VPC內網調用API。
CLI:使用CLI時,只需將Endpoint修改為對應地域的接入地址,即可實現內網調用API。
使用說明如下:
兩種方式僅適用于專有網絡VPC類型ECS實例所在的地域,且僅能使用對應地域的接入地址(Endpoint)操作同地域資源,不支持跨地域操作。
建議您使用已部署了阿里云CLI或者SDK的自定義鏡像創建ECS實例,避免實例在無公網訪問的條件下無法加載相關依賴。
支持的內網調用API的ECS接入地址(Endpoint)如下表所示,請確保您使用的Endpoint在列舉范圍內。
阿里云地域 | 地域ID | 接入地址(Endpoint) |
華東 1(杭州) | cn-hangzhou | ecs-vpc.cn-hangzhou.aliyuncs.com |
華東 2(上海) | cn-shanghai | ecs-vpc.cn-shanghai.aliyuncs.com |
華東5(南京-本地地域) | cn-nanjing | ecs-vpc.cn-nanjing.aliyuncs.com |
華東6(福州-本地地域) | cn-fuzhou | ecs-vpc.cn-fuzhou.aliyuncs.com |
華北 1(青島) | cn-qingdao | ecs-vpc.cn-qingdao.aliyuncs.com |
華北 2(北京) | cn-beijing | ecs-vpc.cn-beijing.aliyuncs.com |
華北 3(張家口) | cn-zhangjiakou | ecs-vpc.cn-zhangjiakou.aliyuncs.com |
華北 5(呼和浩特) | cn-huhehaote | ecs-vpc.cn-huhehaote.aliyuncs.com |
華北 6(烏蘭察布) | cn-wulanchabu | ecs-vpc.cn-wulanchabu.aliyuncs.com |
華南 1(深圳) | cn-shenzhen | ecs-vpc.cn-shenzhen.aliyuncs.com |
華南 2(河源) | cn-heyuan | ecs-vpc.cn-heyuan.aliyuncs.com |
華南 3(廣州) | cn-guangzhou | ecs-vpc.cn-guangzhou.aliyuncs.com |
西南 1(成都) | cn-chengdu | ecs-vpc.cn-chengdu.aliyuncs.com |
中國(香港) | cn-hongkong | ecs-vpc.cn-hongkong.aliyuncs.com |
新加坡 | ap-southeast-1 | ecs-vpc.ap-southeast-1.aliyuncs.com |
澳大利亞(悉尼)關停中 | ap-southeast-2 | ecs-vpc.ap-southeast-2.aliyuncs.com |
馬來西亞(吉隆坡) | ap-southeast-3 | ecs-vpc.ap-southeast-3.aliyuncs.com |
印度尼西亞(雅加達) | ap-southeast-5 | ecs-vpc.ap-southeast-5.aliyuncs.com |
菲律賓(馬尼拉) | ap-southeast-6 | ecs-vpc.ap-southeast-6.aliyuncs.com |
泰國(曼谷) | ap-southeast-7 | ecs-vpc.ap-southeast-7.aliyuncs.com |
日本(東京) | ap-northeast-1 | ecs-vpc.ap-northeast-1.aliyuncs.com |
韓國(首爾) | ap-northeast-2 | ecs-vpc.ap-northeast-2.aliyuncs.com |
德國(法蘭克福) | eu-central-1 | ecs-vpc.eu-central-1.aliyuncs.com |
英國(倫敦) | eu-west-1 | ecs-vpc.eu-west-1.aliyuncs.com |
美國(硅谷) | us-west-1 | ecs-vpc.us-west-1.aliyuncs.com |
美國(弗吉尼亞) | us-east-1 | ecs-vpc.us-east-1.aliyuncs.com |
阿聯酋(迪拜) | me-east-1 | ecs-vpc.me-east-1.aliyuncs.com |
方式一(推薦):SDK內網調用API
使用SDK過程中,只需要簡單配置,即可實現內網調用API。Java代碼示例如下所示:
DefaultProfile profile = DefaultProfile.getProfile("<RegionId>", "System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")", "System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")");
IAcsClient client = new DefaultAcsClient(profile);
// 全局生效配置。其中,<product>為產品名稱,云服務器ECS的值為Ecs。
DefaultProfile.addEndpoint("<RegionId>", "<product>", "<Endpoint>");
// 只對當前請求生效配置。例如,調用DescribeRegions接口。
DescribeRegionsRequest regionsRequest = new DescribeRegionsRequest();
// 如設置下述productNetwork參數,則無需手動設置SysEndpoint。
regionsRequest.setSysEndpoint("<Endpoint>");
// 設置網絡。productNetwork參數的取值范圍:vpc、public。
// vpc為內網調用接入地址選項;public為公網調用API的選項,即默認選項。
regionsRequest.productNetwork = "vpc";
DescribeRegionsResponse regionsResponse = client.getAcsResponse(regionsRequest);
方式二:CLI內網調用API
以接口DescribeRegions為例,調用命令示例如下:
aliyun ecs DescribeRegions --endpoint ecs-vpc.cn-hangzhou.aliyuncs.com