Binding an EIP to an ECS

Scenarios

This section describes how to bind an EIP to an ECS by calling APIs.

Prerequisites

  • You have purchased an ECS. For details, see Overview.
  • If you use a token for authentication, you must obtain the token and add X-Auth-Token to the request header when making an API call. Obtain the token by following instructions in section Authentication.

    The token obtained from IAM is valid for only 24 hours. If you want to use one token for authentication, you can cache it to avoid frequent calling.

Procedure

  1. Obtain the NIC information based on the ECS ID.
    1. Send GET https://VPC endpoint/v1/project_id/ports?device_id=ecs_id. Parameter project_id indicates the project ID.
    2. Add X-Auth-Token to the request header.
    3. Check the response message.
      • The request is successful if the following response is displayed.
        { 
             "ports": [{ 
                 "id": "02c72193-efec-42fb-853b-c33f2b802467", 
                 "name": "", 
                 "status": "ACTIVE", 
                 "admin_state_up": true, 
                 "fixed_ips": [{ 
                     "subnet_id": "213cb9d-3122-2ac1-1a29-91ffc1231a12", 
                     "ip_address": "192.168.0.75" 
                 }], 
                 "mac_address": "fa:16:3e:47:5f:c1", 
                 "network_id": "4779ab1c-7c1a-44b1-a02e-93dfc361b32d", 
                 "tenant_id": "db82c9e1415a464ea68048baa8acc6b8", 
                 "project_id": "db82c9e1415a464ea68048baa8acc6b8", 
                 "device_id": "ea61f836-b52f-41bf-9d06-685644001d6f", 
                 "device_owner": "compute:br-iaas-odin1a", 
                 "security_groups": [ 
                     "e0598d96-9451-4f8a-8de0-b8b4d451d9e7" 
                 ], 
                 "extra_dhcp_opts": [], 
                 "allowed_address_pairs": [], 
                 "binding:vnic_type": "normal", 
                 "binding:vif_details": { 
                     "primary_interface": true 
                 }, 
                 "binding:profile": {}, 
                 "port_security_enabled": true, 
                 "created_at": "2020-06-20T08:07:29", 
                 "updated_at": "2020-06-20T08:07:29" 
             }] 
         }
      • For details about the error codes when the request is abnormal, see Error Codes.
  2. Assign an EIP.
    1. Send POST https://Endpoint/v1/project_id/publicips. Parameter project_id indicates the project ID.
    2. Add X-Auth-Token to the request header.
    3. Specify the following parameters in the request body:
      {     
           "publicip": {         
               "type": "5_bgp",         
               "ip_version": 6        
        },    
           "bandwidth": {        
               "name": "bandwidth123",        
               "size": 5,         
               "share_type": "WHOLE", 
               "id":"ebfa375c-3f93-465e-81a3-bd66e578ee9d" 
           },          
           "enterprise_project_id":"0"   
       }
    4. Check the response message.
      • The request is successful if the following response is displayed.
        { 
             "publicip": { 
                 "id": "f588ccfa-8750-4d7c-bf5d-2ede24414706", 
                 "status": "PENDING_CREATE", 
                 "type": "5_bgp", 
                 "public_ip_address": "161.xx.xx.7", 
                 "tenant_id": "8b7e35ad379141fc9df3e178bd64f55c", 
                 "ip_version": 4, 
                 "create_time": "2015-07-16 04:10:52", 
                 "bandwidth_size": 0, 
                 "enterprise_project_id":"b261ac1f-2489-4bc7-b31b-c33c3346a439" 
             } 
         }
      • For details about the error codes when the request is abnormal, see Error Codes.
  3. Bind the EIP to the ECS NIC.
    1. Send PUT /v1/project_id/publicips/publicip_id. Parameter project_id indicates the project ID.
    2. Add X-Auth-Token to the request header.
    3. Specify the following parameters in the request body:
      {     
           "publicip": {         
               "port_id": "f588ccfa-8750-4d7c-bf5d-2ede24414706"      
           }
       }
    4. Check the response message.
      • The request is successful if the following response is displayed.
        { 
           "publicip": { 
             "id": "f6318bef-6508-4ea5-a48f-6152b6b1a8fb", 
             "status": "ACTIVE", 
             "type": "5_bgp", 
             "port_id": "a135e9b8-1630-40d2-a6c5-eb534a61efbe", 
             "public_ip_address": "10.xx.xx.162", 
             "private_ip_address": "192.168.1.131", 
             "tenant_id": "26ae5181a416420998eb2093aaed84d9", 
             "create_time": "2019-03-27 01:33:18", 
             "bandwidth_size": 7, 
             "ip_version": 4 
           } 
         }
      • For details about the error codes when the request is abnormal, see Error Codes.