Il est impossible d'appeler des opérations d'API depuis une instance Elastic Compute Service (ECS) située dans un VPC si celle-ci ne dispose pas d'adresse IP publique. Cette rubrique explique comment effectuer ces appels via le réseau interne d'Alibaba Cloud.
Contexte
ECS met à disposition des endpoints publics. Si une instance ECS ne bénéficie ni de bande passante publique ni d'adresse IP publique, vous ne pouvez pas appeler les opérations d'API à l'aide d'outils tels que l'interface de ligne de commande (CLI) d'Alibaba Cloud ou les kits SDK. Dans ce cas, utilisez l'une des deux méthodes suivantes pour appeler les opérations d'API via le réseau interne d'Alibaba Cloud :
SDK : la bibliothèque principale du SDK pour Java (version 4.5.3 et ultérieures) prend en charge l'appel d'opérations d'API via le réseau interne d'un VPC.
CLI : lors de l'utilisation de la CLI, modifiez l'endpoint pour utiliser celui correspondant à la région afin d'effectuer les appels via le réseau interne.
Remarque :
Ces deux méthodes sont spécifiques à une région. Un endpoint permet uniquement de gérer les ressources situées dans la même région que l'instance ECS. Les opérations inter-régions ne sont pas prises en charge.
Pour créer des instances ECS, utilisez une image personnalisée sur laquelle la CLI d'Alibaba Cloud ou un SDK est déjà déployé. Cela évite les échecs de chargement des dépendances dus à l'absence d'accès Internet.
Le tableau ci-dessous répertorie les endpoints ECS qui prennent en charge les appels d'API via le réseau interne. Vérifiez que l'endpoint utilisé figure dans cette liste.
|
Région Alibaba Cloud |
ID de région |
Endpoint |
|
Chine (Hangzhou) |
cn-hangzhou |
ecs-vpc.cn-hangzhou.aliyuncs.com |
|
Chine (Shanghai) |
cn-shanghai |
ecs-vpc.cn-shanghai.aliyuncs.com |
|
Chine (Nanjing - Région locale) |
cn-nanjing |
ecs-vpc.cn-nanjing.aliyuncs.com |
|
Chine (Fuzhou - Région locale) |
cn-fuzhou |
ecs-vpc.cn-fuzhou.aliyuncs.com |
|
Chine (Qingdao) |
cn-qingdao |
ecs-vpc.cn-qingdao.aliyuncs.com |
|
Chine (Pékin) |
cn-beijing |
ecs-vpc.cn-beijing.aliyuncs.com |
|
Chine (Zhangjiakou) |
cn-zhangjiakou |
ecs-vpc.cn-zhangjiakou.aliyuncs.com |
|
Chine (Hohhot) |
cn-huhehaote |
ecs-vpc.cn-huhehaote.aliyuncs.com |
|
Chine (Ulanqab) |
cn-wulanchabu |
ecs-vpc.cn-wulanchabu.aliyuncs.com |
|
Chine (Shenzhen) |
cn-shenzhen |
ecs-vpc.cn-shenzhen.aliyuncs.com |
|
Chine (Heyuan) |
cn-heyuan |
ecs-vpc.cn-heyuan.aliyuncs.com |
|
Chine (Guangzhou) |
cn-guangzhou |
ecs-vpc.cn-guangzhou.aliyuncs.com |
|
Chine (Chengdu) |
cn-chengdu |
ecs-vpc.cn-chengdu.aliyuncs.com |
|
Chine (Hong Kong) |
cn-hongkong |
ecs-vpc.cn-hongkong.aliyuncs.com |
|
Singapour |
ap-southeast-1 |
ecs-vpc.ap-southeast-1.aliyuncs.com |
|
Malaisie (Kuala Lumpur) |
ap-southeast-3 |
ecs-vpc.ap-southeast-3.aliyuncs.com |
|
Indonésie (Jakarta) |
ap-southeast-5 |
ecs-vpc.ap-southeast-5.aliyuncs.com |
|
Philippines (Manille) |
ap-southeast-6 |
ecs-vpc.ap-southeast-6.aliyuncs.com |
|
Thaïlande (Bangkok) |
ap-southeast-7 |
ecs-vpc.ap-southeast-7.aliyuncs.com |
|
Japon (Tokyo) |
ap-northeast-1 |
ecs-vpc.ap-northeast-1.aliyuncs.com |
|
Corée du Sud (Séoul) |
ap-northeast-2 |
ecs-vpc.ap-northeast-2.aliyuncs.com |
|
Allemagne (Francfort) |
eu-central-1 |
ecs-vpc.eu-central-1.aliyuncs.com |
|
Royaume-Uni (Londres) |
eu-west-1 |
ecs-vpc.eu-west-1.aliyuncs.com |
|
États-Unis (Silicon Valley) |
us-west-1 |
ecs-vpc.us-west-1.aliyuncs.com |
|
États-Unis (Virginie) |
us-east-1 |
ecs-vpc.us-east-1.aliyuncs.com |
|
Émirats arabes unis (Dubaï) |
me-east-1 |
ecs-vpc.me-east-1.aliyuncs.com |
Méthode 1 (recommandée) : Utiliser un SDK pour appeler des opérations via le réseau interne
Lorsque vous utilisez un SDK, il suffit d'une configuration simple pour appeler les opérations d'API via le réseau interne. L'exemple de code Java suivant illustre cette procédure :
import com.aliyun.ecs20140526.Client;
import com.aliyun.ecs20140526.models.DescribeRegionsRequest;
import com.aliyun.ecs20140526.models.DescribeRegionsResponse;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
public class Test {
public static void main(String[] args) throws Exception {
Config config = new Config();
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set.
config.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"));
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set.
config.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// For the endpoint, see https://api.alibabacloud.com/product/Ecs
config.setEndpoint("<ENDPOINT>");
// Initialize the ECS client.
Client ecsClient = new Client(config);
// Create a request object to query region information.
DescribeRegionsRequest describeRegionsRequest = new DescribeRegionsRequest();
// Create a runtime options object.
RuntimeOptions runtime = new RuntimeOptions();
// Send the request and obtain the response with region information.
DescribeRegionsResponse response = ecsClient.describeRegionsWithOptions(describeRegionsRequest, runtime);
System.out.println(response.body.toMap());
}
}
Méthode 2 : Utiliser la CLI pour appeler des opérations via le réseau interne
Cet exemple utilise l'opération DescribeRegions. La commande d'exemple est la suivante :
aliyun ecs DescribeRegions --endpoint ecs-vpc.cn-hangzhou.aliyuncs.com