弹性容器实例提供的SDK包括Go、Python和Java三个语言版本。本文以Java为例,介绍如何通过SDK创建一个ECI实例。
安装Java SDK
推荐您通过Apache Maven的方式来安装Java SDK,在Maven项目的pom.xml中添加以下依赖:
如果之前已有VPC、交换机和安全组,无需通过SDK创建,则可以不安装专有网络aliyun-java-sdk-vpc、云服务器aliyun-java-sdk-ecs及fastjson依赖。
阿里云核心库aliyun-java-sdk-core
弹性容器实例aliyun-java-sdk-eci及gson依赖
(可选)专有网络aliyun-java-sdk-vpc
(可选)云服务器aliyun-java-sdk-ecs及fastjson依赖
示例如下:
请及时更新各依赖的版本,以便使用新功能。具体请访问Maven。
<dependencies>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<optional>true</optional>
<version>4.6.3</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-eci</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-ecs</artifactId>
<version>4.24.42</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.19</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-vpc</artifactId>
<version>3.2.9</version>
</dependency>
</dependencies>
以Java开发工具为IntelliJ IDEA为例,操作步骤如下:
打开IDEA,选择以下一种方式创建Maven项目。
方式一:在IDEA中新建一个Maven项目
在顶部菜单栏,选择File>New>Project...。
在弹出的对话框中选择Maven,并完成项目配置。
方式二:将已有的项目转换为Maven项目
右键单击要转换的项目,在弹出菜单中选择Add Framework Support...。
在弹出的对话框中选择Maven,然后单击OK。
打开Maven项目目录下的pom.xml文件,添加依赖。
添加依赖后,Maven项目管理工具会自动下载相关jar包。
获取AccessKey信息
在调用阿里云API时您需要使用AccessKey完成身份验证。为避免主账号泄露AccessKey带来的安全风险,建议您创建RAM用户,授予RAM用户ECI相关的访问权限,再使用RAM用户的AccessKey调用SDK。
相关操作参考如下:
关于如何创建RAM用户,请参见创建RAM用户。
关于如何为RAM用户授权,请参见为RAM用户授权。
关于如何创建AccessKey,请参见创建AccessKey。
创建ECI实例所需资源
创建ECI实例前,需要先创建专有网络VPC、交换机和安全组。
如果已有VPC、交换机和安全组,您也可以获取交换机ID和安全组ID,直接创建ECI实例。
创建VPC。
示例采用以下参数,更多信息,请参见CreateVpc。
参数
示例值
描述
RegionId
cn-shanghai
VPC所属地域。
请选择ECI支持的地域,具体请参见地域和可用区。
CidrBlock
192.168.0.0/16
VPC网段。
建议您使用192.168.0.0/16、172.16.0.0/12、10.0.0.0/8三个RFC标准私网网段及其子网网段,网段掩码有效范围为8~28位。
代码示例如下:
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) { DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai","<accessKeyId>", "<accessSecret>"); IAcsClient client = new DefaultAcsClient(profile); CreateVpcRequest request = new CreateVpcRequest(); request.setSysRegionId("cn-shanghai"); 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()); } } }
创建成功会返回如下示例:
{ "vpcId": "vpc-uf6d60ru912b6jvco****", "vRouterId": "vrt-uf68fw505rxavz4hk****", "requestId": "2C7AA1E2-4407-5B41-89F2-3DADC5AEE18E", "routeTableId": "vtb-uf6orqxrmsyuv8gba****", "resourceGroupId": "rg-acfmzw2jz2z****" }
在VPC中创建交换机。
示例采用以下参数,更多信息,请参见CreateVSwitch。
参数
示例值
描述
VpcId
vpc-uf6d60ru912b6jvco****
交换机所属VPC的ID。
ZoneId
cn-shanghai-m
交换机所属可用区的ID。
请选择所选地域下的推荐可用区,具体请参见地域和可用区。
CidrBlock
192.168.0.0/24
交换机网段。要求如下:
掩码长度范围为16~29位。
必须从属于所在VPC的网段。
不能与所在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 java.util.*; import com.aliyuncs.vpc.model.v20160428.*; public class CreateVSwitch { public static void main(String[] args) { DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "<accessKeyId>", "<accessSecret>"); IAcsClient client = new DefaultAcsClient(profile); CreateVSwitchRequest request = new CreateVSwitchRequest(); request.setSysRegionId("cn-shanghai"); request.setCidrBlock("192.168.0.0/24"); request.setVpcId("vpc-uf6d60ru912b6jvco****"); request.setZoneId("cn-shanghai-m"); 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()); } } }
创建成功会返回如下示例:
{ "vSwitchId": "vsw-uf6uma67wlgxwuyb5****", "requestId": "B94FAE14-043C-56B5-A763-F2E03C75AC3F" }
创建安全组。
创建安全组时需指定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 java.util.*; import com.aliyuncs.ecs.model.v20140526.*; public class CreateSecurityGroup { public static void main(String[] args) { DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "<accessKeyId>", "<accessSecret>"); IAcsClient client = new DefaultAcsClient(profile); CreateSecurityGroupRequest request = new CreateSecurityGroupRequest(); request.setSysRegionId("cn-shanghai"); request.setVpcId("vpc-uf6d60ru912b6jvco****"); 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()); } } }
创建成功会返回如下示例:
{ "securityGroupId": "sg-uf63jawzncdab6xb****", "requestId": "73D5964C-686A-59AF-8433-209067AB51D7" }
创建ECI实例
示例采用以下参数,更多信息,请参见CreateContainerGroup。
参数 | 示例值 | 描述 |
RegionId | cn-shanghai | ECI实例所属地域。 |
SecurityGroupId | sg-uf63jawzncdab6xb**** | ECI实例所属安全组。 |
VSwitchId | vsw-uf6uma67wlgxwuyb5**** | ECI实例所属交换机。 |
ContainerGroupName | test | ECI实例名称。 |
Container.N.Image | registry-vpc.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2 | 容器镜像。 |
Container.N.Name | nginx | 容器名称。 |
代码示例如下:
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.eci.model.v20180808.*;
public class CreateContainerGroup {
public static void main(String[] args) {
DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "<accessKeyId>", "<accessSecret>");
IAcsClient client = new DefaultAcsClient(profile);
CreateContainerGroupRequest request = new CreateContainerGroupRequest();
request.setRegionId("cn-shanghai");
request.setSecurityGroupId("sg-uf63jawzncdab6xb****");
request.setVSwitchId("vsw-uf6uma67wlgxwuyb5****");
request.setContainerGroupName("test");
List<CreateContainerGroupRequest.Container> containerList = new ArrayList<CreateContainerGroupRequest.Container>();
CreateContainerGroupRequest.Container container1 = new CreateContainerGroupRequest.Container();
container1.setImage("registry-vpc.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2");
container1.setName("nginx");
containerList.add(container1);
request.setContainers(containerList);
try {
CreateContainerGroupResponse 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());
}
}
}
创建成功会返回如下示例,containerGroupId
的值即为创建的ECI实例的ID。
{
"requestId": "FA8DB391-3F54-5998-BDA0-8195113108E8",
"containerGroupId": "eci-uf6g69s8wou20ns7****"
}