Elastic Container Instance提供的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
Elastic Container Instancealiyun-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執行個體前,需要先建立Virtual Private Cloud、交換器和安全性群組。
如果已有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****"
}