彈性容器實例提供的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****"
}