Elastic Container Instance は、Go、Python、Java の 3 つのプログラミング言語用の SDK を提供しています。このトピックでは、SDK を使用してエラスティックコンテナインスタンスを作成する方法について説明します。このトピックでは、Alibaba Cloud SDK for Java を例として使用します。
Alibaba Cloud SDK for Java をインストールする
Alibaba Cloud SDK for Java をインストールするには、Apache Maven を使用することをお勧めします。Maven プロジェクトの pom.xml ファイルに次の依存関係を追加します。
Alibaba Cloud SDK for Java のコアライブラリ (aliyun-java-sdk-core)
aliyun-java-sdk-eci および gson 依存関係
(オプション) aliyun-java-sdk-vpc 依存関係
(オプション) aliyun-java-sdk-ecs および fastjson 依存関係
依存関係の新機能を使用するには、各依存関係のバージョンをタイムリーに更新してください。詳細については、Maven を参照してください。
VPC、vSwitch、およびセキュリティグループがすでに存在する場合は、VPC、vSwitch、およびセキュリティグループを作成するために Alibaba Cloud SDK for Java をインストールする必要はありません。この場合、aliyun-java-sdk-vpc、aliyun-java-sdk-ecs、および fastjson 依存関係のインストールをスキップできます。
<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>IntelliJ IDEA Java 開発ツールを使用する場合、Alibaba Cloud SDK for Java をインストールする手順は次のとおりです。
IDEA を開き、次のいずれかの方法を使用して Maven プロジェクトを作成します。
方法 1: IDEA で Maven プロジェクトを作成する
上部のナビゲーションバーで、ファイル > 新規 > プロジェクト... を選択します。
表示されるダイアログボックスで、Maven をクリックし、プロジェクトの設定を完了します。

方法 2: 既存のプロジェクトを Maven プロジェクトに変換する
変換するプロジェクトを右クリックし、表示されるメニューで フレームワークサポートの追加... を選択します。

表示されるダイアログボックスで、Maven を選択し、OK をクリックします。

Maven プロジェクトディレクトリにある pom.xml ファイルを開き、依存関係を追加します。
依存関係が追加されると、Maven は対応する JAR パッケージを自動的にダウンロードします。

AccessKey ペアを取得する
API オペレーションを呼び出すときは、AccessKey ペアを使用して ID 検証を完了する必要があります。Alibaba Cloud アカウントの AccessKey ペアを保護するために、RAM ユーザーを作成し、RAM ユーザーにエラスティックコンテナインスタンスへのアクセス許可を付与してから、RAM ユーザーの AccessKey ペアを使用して Elastic Container Instance SDK for Java を呼び出すことをお勧めします。
詳細については、以下のトピックを参照してください。
エラスティックコンテナインスタンスに必要なリソースを作成する
エラスティックコンテナインスタンスを作成する前に、VPC、vSwitch、およびセキュリティグループを作成する必要があります。
VPC、vSwitch、およびセキュリティグループがすでに存在する場合は、VPC、vSwitch、およびセキュリティグループの ID を取得して、エラスティックコンテナインスタンスを作成できます。
VPC を作成します。
次の表にパラメータを示します。詳細については、CreateVpc を参照してください。
パラメータ
例
説明
RegionId
cn-shanghai
VPC がデプロイされているリージョンの ID。
Elastic Container Instance が利用可能なリージョンを選択します。詳細については、リージョンとゾーン を参照してください。
CidrBlock
192.168.0.0/16
VPC の CIDR ブロック。
次の CIDR ブロックまたはそのサブセットのいずれかを使用できます: 192.168.0.0/16、172.16.0.0/12、および 10.0.0.0/8。これらの CIDR ブロックは、Request for Comments (RFC) ドキュメントで定義されている標準のプライベート CIDR ブロックです。サブネットマスクの長さは 8 ~ 28 ビットである必要があります。
サンプルコード:
// 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) { 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()); } } }次のレスポンスは、VPC が作成されたことを示しています。
{ "vpcId": "vpc-uf6d60ru912b6jvco****", "vRouterId": "vrt-uf68fw505rxavz4hk****", "requestId": "2C7AA1E2-4407-5B41-89F2-3DADC5AEE18E", "routeTableId": "vtb-uf6orqxrmsyuv8gba****", "resourceGroupId": "rg-acfmzw2jz2z****" }VPC に vSwitch を作成します。
次の表にパラメーターを示します。詳細については、CreateVSwitch を参照してください。
パラメーター
例
説明
VpcId
vpc-uf6d60ru912b6jvco****
vSwitch が属する VPC の ID。
ZoneId
cn-shanghai-m
vSwitch が属するゾーンの ID。
選択したリージョンで推奨されるゾーンを選択します。詳細については、リージョンとゾーン を参照してください。
CidrBlock
192.168.0.0/24
vSwitch の CIDR ブロック。vSwitch の CIDR ブロックは、次の要件を満たしている必要があります。
マスクは 16 ~ 29 ビットの長さである必要があります。
vSwitch の CIDR ブロックは、vSwitch が属する VPC の CIDR ブロック内に含まれている必要があります。
vSwitch の CIDR ブロックは、VPC に追加されたルートの宛先 CIDR ブロックと同じにすることはできません。ただし、vSwitch の CIDR ブロックは、宛先 CIDR ブロックのサブセットにすることができます。
サンプルコード:
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) { // cn-shanghai, <accessKeyId>, <accessSecret> を使用してDefaultProfileを設定します 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()); } } }次の応答は、vSwitch が作成されたことを示します。
{ "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" }
エラスティックコンテナインスタンスの作成
次の表にパラメータを示します。詳細については、コンテナグループの作成 を参照してください。
パラメータ | 例 | 説明 |
RegionId | cn-shanghai | エラスティックコンテナインスタンスのリージョンID。 |
SecurityGroupId | sg-uf63jawzncdab6xb**** | エラスティックコンテナインスタンスに関連付けるセキュリティグループのID。 |
VSwitchId | vsw-uf6uma67wlgxwuyb5**** | エラスティックコンテナインスタンスに関連付けるvSwitch。 |
ContainerGroupName | test | エラスティックコンテナインスタンスの名前。 |
Container.N.Image | registry-vpc.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2 | コンテナNのイメージ。 |
Container.N.Name | nginx | コンテナNの名前。 |
サンプルコード:
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) {
// cn-shanghai、<accessKeyId>、<accessSecret>でデフォルトのプロファイルを取得します。
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の値は、インスタンスのIDを示します。
{
"requestId": "FA8DB391-3F54-5998-BDA0-8195113108E8",
"containerGroupId": "eci-uf6g69s8wou20ns7****"
}