O Elastic Container Instance (ECI) oferece kits de desenvolvimento de software (SDKs) para Go, Python e Java. Este tópico usa o SDK para Java como exemplo para demonstrar a criação de uma instância do ECI.
Instalação do SDK para Java
Instale o SDK para Java com o Apache Maven. Adicione as seguintes dependências ao arquivo pom.xml do seu projeto Maven:
Se você já tiver uma Virtual Private Cloud (VPC), um vSwitch e um grupo de segurança, não será necessário criá-los via SDK. Nesse caso, dispense as dependências aliyun-java-sdk-vpc, aliyun-java-sdk-ecs ou fastjson.
Biblioteca principal da Alibaba Cloud: aliyun-java-sdk-core
Elastic Container Instance: aliyun-java-sdk-eci e a dependência gson
(Opcional) Virtual Private Cloud: aliyun-java-sdk-vpc
(Opcional) Elastic Compute Service: aliyun-java-sdk-ecs e a dependência fastjson
Exemplo de configuração:
Atualize as dependências para as versões mais recentes e aproveite os novos recursos. Para mais detalhes, consulte 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>
O procedimento a seguir usa o IntelliJ IDEA como referência:
-
Abra o IntelliJ IDEA e crie um projeto Maven de uma das formas abaixo.
-
Opção 1: Criar um projeto Maven no IntelliJ IDEA
Na barra de menus, escolha File > New > Project....
-
Na caixa de diálogo exibida, selecione Maven e conclua a configuração do projeto.

-
Opção 2: Converter um projeto existente para Maven
-
Clique com o botão direito no projeto que deseja converter e selecione Add Framework Support... no menu de contexto.

-
Na caixa de diálogo aberta, selecione Maven e clique em OK.

-
-
-
Abra o arquivo pom.xml na pasta do projeto Maven e adicione as dependências.
Após adicionar as dependências, o Maven baixa automaticamente os pacotes JAR necessários.

Obtenção das informações de AccessKey
Use um AccessKey para verificação de identidade ao chamar operações da API da Alibaba Cloud. Para evitar riscos de segurança decorrentes do vazamento do par de AccessKeys da sua conta Alibaba Cloud, crie um usuário do Resource Access Management (RAM). Em seguida, conceda permissões de acesso ao ECI a esse usuário RAM e utilize o par de AccessKeys dele com o SDK.
Siga este procedimento:
Para detalhes sobre a criação de um usuário RAM, consulte Create a RAM user.
Para mais informações, consulte Grant permissions to a RAM user.
Para saber como gerar um par de AccessKeys, consulte Create an AccessKey pair.
Criação de recursos para uma instância do ECI
Configure uma VPC, um vSwitch e um grupo de segurança antes de criar uma instância do ECI.
Se esses recursos (VPC, vSwitch e grupo de segurança) já existirem, recupere seus IDs e use-os diretamente na criação da instância do ECI.
-
Crie uma VPC.
A tabela a seguir detalha os parâmetros deste exemplo. Para informações completas, consulte CreateVpc.
Parâmetro
Valor de exemplo
Descrição
RegionId
cn-shanghai
Região onde a VPC reside.
Escolha uma região compatível com o ECI. Consulte Regions and Zones para mais detalhes.
CidrBlock
192.168.0.0/16
Bloco CIDR da VPC.
Use um dos blocos CIDR privados padrão definidos nas RFCs ou suas sub-redes: 192.168.0.0/16, 172.16.0.0/12 ou 10.0.0.0/8. O comprimento válido da máscara varia de 8 a 28 bits.
Exemplo de código:
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()); } } }Uma solicitação bem-sucedida retorna a seguinte resposta:
{ "vpcId": "vpc-uf6d60ru912b6jvco****", "vRouterId": "vrt-uf68fw505rxavz4hk****", "requestId": "2C7AA1E2-4407-5B41-89F2-3DADC5AEE18E", "routeTableId": "vtb-uf6orqxrmsyuv8gba****", "resourceGroupId": "rg-acfmzw2jz2z****" } -
Crie um vSwitch na VPC.
A tabela abaixo descreve os parâmetros deste exemplo. Consulte CreateVSwitch para documentação completa.
Parâmetro
Valor de exemplo
Descrição
VpcId
vpc-uf6d60ru912b6jvco****
ID da VPC à qual o vSwitch pertence.
ZoneId
cn-shanghai-m
ID da zona onde o vSwitch reside.
Selecione uma zona recomendada na região escolhida. Consulte Regions and Zones para orientações.
CidrBlock
192.168.0.0/24
Bloco CIDR do vSwitch. O bloco CIDR deve atender aos seguintes requisitos:
O comprimento da máscara deve ser de 16 a 29 bits.
O bloco CIDR deve ser uma sub-rede do bloco CIDR da VPC.
O bloco CIDR não pode ser igual ao bloco CIDR de destino de uma entrada de rota na VPC, mas pode ser um subconjunto dele.
Exemplo de código:
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()); } } }Uma solicitação bem-sucedida retorna a seguinte resposta:
{ "vSwitchId": "vsw-uf6uma67wlgxwuyb5****", "requestId": "B94FAE14-043C-56B5-A763-F2E03C75AC3F" } -
Crie um grupo de segurança.
Especifique uma VPC ao criar um grupo de segurança. Exemplo de código:
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()); } } }Uma solicitação bem-sucedida retorna a seguinte resposta:
{ "securityGroupId": "sg-uf63jawzncdab6xb****", "requestId": "73D5964C-686A-59AF-8433-209067AB51D7" }
Criação de uma instância do ECI
Este exemplo especifica os parâmetros listados a seguir. Para mais informações, consulte CreateContainerGroup.
|
Parâmetro |
Valor de exemplo |
Descrição |
|
RegionId |
cn-shanghai |
Região onde a instância do ECI reside. |
|
SecurityGroupId |
sg-uf63jawzncdab6xb**** |
Grupo de segurança ao qual a instância do ECI pertence. |
|
VSwitchId |
vsw-uf6uma67wlgxwuyb5**** |
vSwitch ao qual a instância do ECI pertence. |
|
ContainerGroupName |
test |
Nome da instância do ECI. |
|
Container.N.Image |
registry-vpc.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2 |
Imagem do contêiner. |
|
Container.N.Name |
nginx |
Nome do contêiner. |
Exemplo de código:
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());
}
}
}
Uma solicitação bem-sucedida retorna a resposta abaixo. O valor de containerGroupId é o ID da instância do ECI criada.
{
"requestId": "FA8DB391-3F54-5998-BDA0-8195113108E8",
"containerGroupId": "eci-uf6g69s8wou20ns7****"
}