如果您是一位开发者,可以通过SDK的方式创建ECS实例。本文介绍如何通过Java SDK创建ECS实例。
准备Java SDK环境
在使用Java SDK创建ECS实例前,您需要配置好Java SDK环境,并在Maven项目的pom.xml文件中,添加阿里云核心库aliyun-java-sdk-core、云服务器aliyun-java-sdk-ecs、专有网络aliyun-java-sdk-vpc和fastjson依赖。详情请参见安装Java SDK。
在pom.xml文件中新增专有网络aliyun-java-sdk-vpc依赖,如下所示。
com.aliyun
aliyun-java-sdk-core
4.4.3
com.aliyun
aliyun-java-sdk-ecs
4.17.1
com.alibaba
fastjson
1.2.83
com.aliyun
aliyun-java-sdk-vpc
3.0.9
获取AccessKey信息
创建AccessKey操作,请参见创建AccessKey。
说明
为避免主账号泄露AccessKey带来的安全风险,建议您创建RAM用户,授予RAM用户云服务器ECS相关的访问权限,再使用RAM用户的AccessKey调用SDK。更多信息,请参见通过RAM用户控制资源访问。
创建ECS实例所需资源
在创建ECS实例前,您需要先创建专有网络VPC和安全组。
说明
如果已经存在专有网络VPC和安全组,您也可以获取交换机ID和安全组ID后,直接购买ECS实例。具体操作,请参见购买ECS实例。
-
创建VPC。
在华东1(杭州)创建专有网络VPC,VPC网段为192.168.0.0/16。
API
参数
示例取值
CreateVpc
RegionId
地域:cn-hangzhou
CidrBlock
VPC网段:192.168.0.0/16
以下代码示例表示创建VPC。
import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.profile.DefaultProfile; import com.google.gson.Gson; import com.aliyuncs.vpc.model.v20160428.*; public class CreateVpc { public static void main(String[] args) { // 请确保代码运行环境设置了环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。 // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例使用环境变量获取AccessKey的方式进行调用,建议使用更安全的STS方式。 DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); IAcsClient client = new DefaultAcsClient(profile); CreateVpcRequest request = new CreateVpcRequest(); request.setRegionId("cn-hangzhou"); request.setCidrBlock("192.168.0.0/16"); try { CreateVpcResponse response = client.getAcsResponse(request); System.out.println(new Gson().toJson(response)); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { System.out.println("ErrCode:" + e.getErrCode()); System.out.println("ErrMsg:" + e.getErrMsg()); System.out.println("RequestId:" + e.getRequestId()); } } }
返回结果如下所示。
{ "requestId":"5BE6AEA4-347F-46A9-9808-B429EF02****", "vpcId":"vpc-bp1h99qfh290thxml****", "vRouterId":"vrt-bp1cbum5ozelljyet****", "routeTableId":"vtb-bp1qm6p3yoww2cv10****", "resourceGroupId":"rg-acfmzw2jz2z****" }
-
创建交换机。
在VPC中创建交换机,交换机网段为192.168.0.0/24。
API
参数
示例取值
CreateVSwitch
ZoneId
可用区:cn-hangzhou-i
VpcId
VPC ID:使用步骤1返回的结果。
示例:vpc-bp1h99qfh290thxml****
CidrBlock
交换机网段:192.168.0.0/24
以下代码示例表示创建交换机。
import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.profile.DefaultProfile; import com.google.gson.Gson; import java.util.*; import com.aliyuncs.vpc.model.v20160428.*; public class CreateVSwitch { public static void main(String[] args) { // 请确保代码运行环境设置了环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。 // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例使用环境变量获取AccessKey的方式进行调用,建议使用更安全的STS方式。 DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); IAcsClient client = new DefaultAcsClient(profile); CreateVSwitchRequest request = new CreateVSwitchRequest(); request.setRegionId("cn-hangzhou"); request.setCidrBlock("192.168.0.0/24"); request.setVpcId("vpc-bp1h99qfh290thxml****"); request.setZoneId("cn-hangzhou-i"); try { CreateVSwitchResponse response = client.getAcsResponse(request); System.out.println(new Gson().toJson(response)); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { System.out.println("ErrCode:" + e.getErrCode()); System.out.println("ErrMsg:" + e.getErrMsg()); System.out.println("RequestId:" + e.getRequestId()); } } }
返回结果如下所示。
{ "requestId": "BAFBC8C4-3C65-427B-B470-3D257288****", "vSwitchId": "vsw-bp1mihse903i05oxn****" }
-
创建安全组。
API
参数
示例取值
CreateSecurityGroup
RegionId
地域:cn-hangzhou
VpcId
VPC ID:使用步骤1返回的结果。
示例:vpc-bp1h99qfh290thxml****
以下代码示例表示创建安全组。
import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.profile.DefaultProfile; import com.google.gson.Gson; import java.util.*; import com.aliyuncs.ecs.model.v20140526.*; public class CreateSecurityGroup { public static void main(String[] args) { // 请确保代码运行环境设置了环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。 // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例使用环境变量获取AccessKey的方式进行调用,建议使用更安全的STS方式。 DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); IAcsClient client = new DefaultAcsClient(profile); CreateSecurityGroupRequest request = new CreateSecurityGroupRequest(); request.setRegionId("cn-hangzhou"); request.setVpcId("vpc-bp1h99qfh290thxml****"); try { CreateSecurityGroupResponse response = client.getAcsResponse(request); System.out.println(new Gson().toJson(response)); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { System.out.println("ErrCode:" + e.getErrCode()); System.out.println("ErrMsg:" + e.getErrMsg()); System.out.println("RequestId:" + e.getRequestId()); } } }
返回结果如下所示。
{ "requestId": "718D29C6-6183-4196-AD76-A53F6A6E****", "securityGroupId": "sg-bp1dve08xy2c8y9g****" }
-
在安全组中添加入方向放行规则。
API
参数
示例取值
AuthorizeSecurityGroup
RegionId
地域:cn-hangzhou
SecurityGroupId
安全组ID:使用步骤3返回的结果。
示例:sg-bp1dve08xy2c8y9g****
IpProtocol
协议:tcp
SourceCidrIp
源CIDR:0.0.0.0/0
PortRange
端口范围:
-
Linux实例:22/22
-
Windows实例:3389/3389
以下代码示例表示添加安全组规则。
import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.profile.DefaultProfile; import com.google.gson.Gson; import java.util.*; import com.aliyuncs.ecs.model.v20140526.*; public class AuthorizeSecurityGroup { public static void main(String[] args) { // 请确保代码运行环境设置了环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。 // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例使用环境变量获取AccessKey的方式进行调用,建议使用更安全的STS方式。 DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); IAcsClient client = new DefaultAcsClient(profile); AuthorizeSecurityGroupRequest request = new AuthorizeSecurityGroupRequest(); request.setRegionId("cn-hangzhou"); request.setSecurityGroupId("sg-bp1dve08xy2c8y9g****"); request.setIpProtocol("tcp"); request.setPortRange("22/22"); request.setSourceCidrIp("0.0.0.0/0"); try { AuthorizeSecurityGroupResponse response = client.getAcsResponse(request); System.out.println(new Gson().toJson(response)); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { System.out.println("ErrCode:" + e.getErrCode()); System.out.println("ErrMsg:" + e.getErrMsg()); System.out.println("RequestId:" + e.getRequestId()); } } }
返回结果如下所示。
{ "requestId": "7052E70F-4678-4400-81CF-E0133CCB****" }
-
购买ECS实例
购买一个包年包月的ECS实例。
API |
参数 |
示例取值 |
RunInstances |
RegionId |
地域:cn-hangzhou |
ImageId |
镜像:推荐使用Alibaba Cloud Linux镜像aliyun_2_1903_x64_20G_alibase_20200324.vhd。 |
|
InstanceType |
实例规格:
|
|
SecurityGroupId |
安全组ID:使用步骤3返回的结果。 示例:sg-bp1dve08xy2c8y9g**** |
|
VSwitchId |
交换机ID:使用步骤2返回的结果。 示例:vsw-bp1mihse903i05oxn**** |
|
InstanceName |
实例名称。 示例:ecs_sdk_demo |
|
InstanceChargeType |
付费方式:实例按照包年包月的付费方式PrePaid。 说明 您需要确保账号余额能够完成支付。 |
|
PeriodUnit |
付费周期单位:Month |
|
Period |
付费时长:1 |
|
InternetMaxBandwidthOut |
公网IP带宽:1 Mbps |
|
Password |
实例登录密码: 说明 您需要自定义复杂密码以保护ECS实例的安全。 |
以下代码示例表示创建包年包月的ECS实例。
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import java.util.*;
import com.aliyuncs.ecs.model.v20140526.*;
public class RunInstances {
public static void main(String[] args) {
// 请确保代码运行环境设置了环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
// 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例使用环境变量获取AccessKey的方式进行调用,建议使用更安全的STS方式。
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
IAcsClient client = new DefaultAcsClient(profile);
RunInstancesRequest request = new RunInstancesRequest();
request.setRegionId("cn-hangzhou");
request.setImageId("aliyun_2_1903_x64_20G_alibase_20200324.vhd");
request.setInstanceType("ecs.s6-c1m2.small");
request.setSecurityGroupId("sg-bp1dve08xy2c8y9g****");
request.setVSwitchId("vsw-bp1mihse903i05oxn****");
request.setInstanceName("ecs_sdk_demo");
request.setInternetMaxBandwidthOut(1);
request.setPassword("");
request.setPeriod(1);
request.setPeriodUnit("Month");
request.setInstanceChargeType("PrePaid");
try {
RunInstancesResponse response = client.getAcsResponse(request);
System.out.println(new Gson().toJson(response));
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
}
}
返回结果如下所示。
{
"requestId": "9582F9F2-349C-438E-A6A2-3E7B6B56****",
"tradePrice": ****,
"instanceIdSets": ["i-bp1hcv43i3glqxbv****"]
}
连接ECS实例
此示例介绍通过Cloud Shell登录Linux实例。如果您安装的是Windows实例,登录方式请参见通过密码认证登录Windows实例。
-
查询实例公网IP地址。
API
参数
示例取值
DescribeInstances
RegionId
地域:cn-hangzhou
InstanceIds
实例ID:使用购买ECS实例返回的结果。
示例:‘[“i-bp1hcv43i3glqxbv****”]’
以下命令示例表示查询实例公网IP。
aliyun ecs DescribeInstances \ --RegionId cn-hangzhou \ --InstanceIds '["i-bp1hcv43i3glqxbv****"]'
在返回结果中找到以下公网IP信息。
通过SSH登录ECS实例。
释放ECS实例
包年包月实例到期后,您可以手动释放。如果一直未续费,实例也会自动释放。
如果您想要提前释放包年包月实例,请参见退款规则及退款流程。
关于阿里云ecs服务器的内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
本文来自投稿,不代表新手站长_郑州云淘科技有限公司立场,如若转载,请注明出处:https://www.cnzhanzhang.com/9166.html