申请弹性公网IP(按需计费) - CreatePublicip
功能介绍
申请弹性公网IP,支持IPv4和IPv6。
弹性公网IP(Elastic IP)提供独立的公网IP资源,包括公网IP地址与公网出口带宽服务。可以与弹性云服务器、裸金属服务器、虚拟IP、弹性负载均衡、NAT网关等资源灵活地绑定及解绑。拥有多种灵活的计费方式,可以满足各种业务场景的需要。
调试
您可以在API Explorer中调试该接口,支持自动认证鉴权。
授权信息
账号具备所有API的调用权限,如果使用账号下的IAM用户调用当前API,该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权,具体权限要求请参见权限和授权项。
- 如果使用身份策略授权,需具备如下身份策略权限。
授权项
访问级别
资源类型(*为必须)
条件键
别名
依赖的授权项
eip:publicIps:create
Write
publicip *
-
vpc:publicIps:create
-
-
g:EnterpriseProjectId
URI
POST /v1/{project_id}/publicips
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| project_id | 是 | String | 参数解释: 项目ID 参见获取项目ID。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
请求参数
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| bandwidth | 是 | 带宽对象 | |
| enterprise_project_id | 否 | String | 参数解释: 企业项目ID。 约束限制: 创建弹性公网IP时,给弹性公网IP绑定企业项目ID。 取值范围: 最大长度36字节,带“-”连字符的UUID格式,或者是字符串“0”。 默认取值: 不指定该参数时,默认值是0,0表示默认企业项目。 说明: 关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理用户指南》。 |
| publicip | 是 | CreatePublicipOption object | 弹性公网IP对象 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| charge_mode | 否 | String | 参数解释: 计费模式 ,表示按带宽计费还是按流量计费。 约束限制: 不涉及。 取值范围: bandwidth(按带宽计费),traffic(按流量计费),不填或者为空时默认是bandwidth。其中IPv6国外默认是bandwidth,国内默认是traffic。 默认取值: bandwidth |
| id | 否 | String | 参数解释: 带宽ID,创建WHOLE类型带宽的弹性公网IP时可以指定之前的共享带宽创建。 约束限制: 不涉及。 取值范围: WHOLE类型的带宽ID。最大长度为36 默认取值: 不涉及。 |
| name | 否 | String | 参数解释: 带宽名称。 约束限制: 如果share_type是PER,该参数必须带,如果share_type是WHOLE并且id有值,该参数会忽略。 取值范围: 1-64个字符,支持数字、字母、中文、_(下划线)、-(中划线)、.(点) 默认取值: 不涉及。 |
| share_type | 是 | String | 参数解释: 带宽类型。 约束限制: 不涉及 该字段为WHOLE时,必须指定带宽ID 取值范围: PER,WHOLE(PER为独占带宽,WHOLE是共享带宽) 默认取值: 不涉及。 |
| size | 否 | Integer | 参数解释: 带宽大小,当未输入带宽id,创建独占带宽时,该字段为必输。单位为Mbit/s。 约束限制: share_type是PER,该参数必须带,如果share_type是WHOLE并且id有值,该参数会忽略。调整带宽时的最小单位会根据带宽范围不同存在差异。 取值范围: 默认1Mbit/s~2000Mbit/s(具体范围以各区域配置为准,请参见控制台对应页面显示)。 默认取值: 不涉及。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| ip_address | 否 | String | 参数解释: 希望申请到的弹性公网IP的地址,不指定时由系统自动分配。 约束限制: 必须为IPv4地址格式,且必须在可用地址池范围内。 取值范围: 不涉及。 默认取值: 不涉及。 |
| type | 是 | String | 参数解释: 弹性公网IP的类型。 约束限制: 必须是系统具体支持的类型。publicip_id为IPv4端口,所以"type"字段未给定时,默认为5_bgp 取值范围: 默认取值: 不涉及。 |
| ip_version | 否 | Integer | 参数解释: 弹性公网IP的版本。 约束限制: 必须是系统具体支持的类型,不填或空字符串时,默认创建IPv4。 取值范围: 4、6,ipv6表示开启NAT64能力。 默认取值: 4。 |
| alias | 否 | String | 参数解释: 弹性公网IP名称。 约束限制: 不涉及。 取值范围: 1-64个字符,支持数字、字母、中文、_(下划线)、-(中划线)、.(点) 默认取值: 不涉及。 |
| port_id | 否 | String | 参数解释: 端口id。 约束限制: 必须是存在的端口id,如果该端口不存在或端口已绑定EIP则会提示出错。 取值范围: 36个字符,支持数字、字母、中文、_(下划线)、-(中划线)、.(点) 默认取值: 不涉及。 |
响应参数
状态码:200
| 参数 | 参数类型 | 描述 |
|---|---|---|
| publicip | PublicipCreateResp object | 弹性公网IP对象 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| bandwidth_size | Integer | 参数解释: 带宽大小,单位为Mbit/s。 取值范围: 不涉及。 |
| create_time | String | 参数解释: 弹性公网IP申请时间,采用UTC时间。 取值范围: 不涉及。 |
| id | String | 参数解释: 弹性公网IP唯一标识。 取值范围: 不涉及。 |
| public_ip_address | String | 参数解释: IPv4时是申请到的弹性公网IP地址,IPv6时是IPv6地址对应的IPv4地址。 取值范围: 最大长度15。 |
| status | String | 参数解释: 弹性公网IP的状态。 取值范围: |
| tenant_id | String | 参数解释: 项目ID,如何获取项目ID请参见获取项目ID。 取值范围: 最大长度36。 |
| type | String | 参数解释: 弹性公网IP的类型。 取值范围: 5_bgp (全动态BGP),5_sbgp (静态BGP),5_bgp-premium(精品BGP) |
| public_ipv6_address | String | 参数解释: IPv4时无此字段,IPv6时为申请到的弹性公网IP地址。 取值范围: 不涉及。 |
| ip_version | Integer | 参数解释: IP版本信息,IPv6为开启NAT64能力。 取值范围: |
| enterprise_project_id | String | 参数解释: 企业项目ID。最大长度36字节,带"-"连字符的UUID格式,或者是字符串"0"。 关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理用户指南》 取值范围: 不涉及。 |
| alias | String | 参数解释: 弹性公网IP名称。 取值范围: 1-64个字符,支持数字、字母、中文、_(下划线)、-(中划线)、.(点) |
请求示例
-
{ "bandwidth" : { "size" : 10, "share_type" : "PER", "name" : "bandwidth123" }, "publicip" : { "ip_version" : 4, "type" : "5_bgp" } } -
创建IPv6 EIP并插入共享带宽,其中id字段为需要插入的共享带宽的id
{ "bandwidth" : { "size" : 5, "share_type" : "WHOLE", "name" : "bandwidth123", "id" : "7f73d14b-cbcf-4363-aa32-602aae9800e0" }, "publicip" : { "ip_version" : 6, "type" : "5_bgp" } }
响应示例
状态码:200
{
"publicip" : {
"tenant_id" : "8b7e35ad379141fc9df3e178bd64f55c",
"bandwidth_size" : 0,
"enterprise_project_id" : "b261ac1f-2489-4bc7-b31b-c33c3346a439",
"public_ip_address" : "161.xx.xx.7",
"ip_version" : 4,
"create_time" : "2015-07-16 04:10:52",
"id" : "f588ccfa-8750-4d7c-bf5d-2ede24414706",
"type" : "5_bgp",
"status" : "PENDING_CREATE"
}
} SDK代码示例
SDK代码示例如下。
-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.eip.v2.region.EipRegion; import com.huaweicloud.sdk.eip.v2.*; import com.huaweicloud.sdk.eip.v2.model.*; public class CreatePublicipSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); String projectId = "{project_id}"; ICredential auth = new BasicCredentials() .withProjectId(projectId) .withAk(ak) .withSk(sk); EipClient client = EipClient.newBuilder() .withCredential(auth) .withRegion(EipRegion.valueOf("<YOUR REGION>")) .build(); CreatePublicipRequest request = new CreatePublicipRequest(); CreatePublicipRequestBody body = new CreatePublicipRequestBody(); CreatePublicipOption publicipbody = new CreatePublicipOption(); publicipbody.withType("5_bgp") .withIpVersion(CreatePublicipOption.IpVersionEnum.NUMBER_4); CreatePublicipBandwidthOption bandwidthbody = new CreatePublicipBandwidthOption(); bandwidthbody.withName("bandwidth123") .withShareType(CreatePublicipBandwidthOption.ShareTypeEnum.fromValue("PER")) .withSize(10); body.withPublicip(publicipbody); body.withBandwidth(bandwidthbody); request.withBody(body); try { CreatePublicipResponse response = client.createPublicip(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } }
-
创建IPv6 EIP并插入共享带宽,其中id字段为需要插入的共享带宽的id
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.eip.v2.region.EipRegion; import com.huaweicloud.sdk.eip.v2.*; import com.huaweicloud.sdk.eip.v2.model.*; public class CreatePublicipSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); String projectId = "{project_id}"; ICredential auth = new BasicCredentials() .withProjectId(projectId) .withAk(ak) .withSk(sk); EipClient client = EipClient.newBuilder() .withCredential(auth) .withRegion(EipRegion.valueOf("<YOUR REGION>")) .build(); CreatePublicipRequest request = new CreatePublicipRequest(); CreatePublicipRequestBody body = new CreatePublicipRequestBody(); CreatePublicipOption publicipbody = new CreatePublicipOption(); publicipbody.withType("5_bgp") .withIpVersion(CreatePublicipOption.IpVersionEnum.NUMBER_6); CreatePublicipBandwidthOption bandwidthbody = new CreatePublicipBandwidthOption(); bandwidthbody.withId("7f73d14b-cbcf-4363-aa32-602aae9800e0") .withName("bandwidth123") .withShareType(CreatePublicipBandwidthOption.ShareTypeEnum.fromValue("WHOLE")) .withSize(5); body.withPublicip(publicipbody); body.withBandwidth(bandwidthbody); request.withBody(body); try { CreatePublicipResponse response = client.createPublicip(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } }
-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
# coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkeip.v2.region.eip_region import EipRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkeip.v2 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] projectId = "{project_id}" credentials = BasicCredentials(ak, sk, projectId) client = EipClient.new_builder() \ .with_credentials(credentials) \ .with_region(EipRegion.value_of("<YOUR REGION>")) \ .build() try: request = CreatePublicipRequest() publicipbody = CreatePublicipOption( type="5_bgp", ip_version=4 ) bandwidthbody = CreatePublicipBandwidthOption( name="bandwidth123", share_type="PER", size=10 ) request.body = CreatePublicipRequestBody( publicip=publicipbody, bandwidth=bandwidthbody ) response = client.create_publicip(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg)
-
创建IPv6 EIP并插入共享带宽,其中id字段为需要插入的共享带宽的id
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
# coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkeip.v2.region.eip_region import EipRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkeip.v2 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] projectId = "{project_id}" credentials = BasicCredentials(ak, sk, projectId) client = EipClient.new_builder() \ .with_credentials(credentials) \ .with_region(EipRegion.value_of("<YOUR REGION>")) \ .build() try: request = CreatePublicipRequest() publicipbody = CreatePublicipOption( type="5_bgp", ip_version=6 ) bandwidthbody = CreatePublicipBandwidthOption( id="7f73d14b-cbcf-4363-aa32-602aae9800e0", name="bandwidth123", share_type="WHOLE", size=5 ) request.body = CreatePublicipRequestBody( publicip=publicipbody, bandwidth=bandwidthbody ) response = client.create_publicip(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg)
-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" eip "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/eip/v2" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/eip/v2/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/eip/v2/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") projectId := "{project_id}" auth, err := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). SafeBuild() if err != nil { fmt.Println(err) return } hcClient, err := eip.EipClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). SafeBuild() if err != nil { fmt.Println(err) return } client := eip.NewEipClient(hcClient) request := &model.CreatePublicipRequest{} ipVersionPublicip:= model.GetCreatePublicipOptionIpVersionEnum().E_4 publicipbody := &model.CreatePublicipOption{ Type: "5_bgp", IpVersion: &ipVersionPublicip, } nameBandwidth:= "bandwidth123" sizeBandwidth:= int32(10) bandwidthbody := &model.CreatePublicipBandwidthOption{ Name: &nameBandwidth, ShareType: model.GetCreatePublicipBandwidthOptionShareTypeEnum().PER, Size: &sizeBandwidth, } request.Body = &model.CreatePublicipRequestBody{ Publicip: publicipbody, Bandwidth: bandwidthbody, } response, err := client.CreatePublicip(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } }
-
创建IPv6 EIP并插入共享带宽,其中id字段为需要插入的共享带宽的id
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" eip "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/eip/v2" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/eip/v2/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/eip/v2/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") projectId := "{project_id}" auth, err := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). SafeBuild() if err != nil { fmt.Println(err) return } hcClient, err := eip.EipClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). SafeBuild() if err != nil { fmt.Println(err) return } client := eip.NewEipClient(hcClient) request := &model.CreatePublicipRequest{} ipVersionPublicip:= model.GetCreatePublicipOptionIpVersionEnum().E_6 publicipbody := &model.CreatePublicipOption{ Type: "5_bgp", IpVersion: &ipVersionPublicip, } idBandwidth:= "7f73d14b-cbcf-4363-aa32-602aae9800e0" nameBandwidth:= "bandwidth123" sizeBandwidth:= int32(5) bandwidthbody := &model.CreatePublicipBandwidthOption{ Id: &idBandwidth, Name: &nameBandwidth, ShareType: model.GetCreatePublicipBandwidthOptionShareTypeEnum().WHOLE, Size: &sizeBandwidth, } request.Body = &model.CreatePublicipRequestBody{ Publicip: publicipbody, Bandwidth: bandwidthbody, } response, err := client.CreatePublicip(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } }
更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。
状态码
| 状态码 | 描述 |
|---|---|
| 200 | POST操作正常返回 |
错误码
请参见错误码。