開発者の場合、SDKを使用してElastic Compute Service (ECS) インスタンスを作成できます。 このトピックでは、ECS SDK for Javaを使用してECSインスタンスを作成する方法について説明します。
Java環境用のECS SDKの準備
ECS SDK for Javaを使用してインスタンスを作成する前に、ECS SDK for Java環境を設定し、aliyun-java-sdk-core、aliyun-java-sdk-ecs、aliyun-java-sdk-vpc、およびfastjsonの依存関係をMavenプロジェクトのpom.xmlファイルに追加する必要があります。 詳細については、「ECS SDK For Javaのインストール」をご参照ください。
次のサンプルコードは、aliyun-java-sdk-vpc依存関係をpom.xmlファイルに追加する方法の例を示しています。
<dependencies>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.4.3</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-ecs</artifactId>
<version>4.17.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-vpc</artifactId>
<version>3.0.9</version>
</dependency>
</dependencies>
AccessKey ペアの取得
AccessKeyペアの作成方法については、「AccessKeyペアの作成」をご参照ください。
Alibaba CloudアカウントのAccessKeyペアを保護するために、RAM (Resource Access Management) ユーザーを作成し、RAMユーザーにECSインスタンスへのアクセス権限を付与し、RAMユーザーのAccessKeyペアを使用してECS SDK for Javaを呼び出すことを推奨します。 詳細については、「RAMユーザーを使用したリソースへのアクセスの制御」をご参照ください。
インスタンスの作成に必要なリソースの作成
ECSインスタンスを作成する前に、仮想プライベートクラウド (VPC) とセキュリティグループを作成する必要があります。
VPCとセキュリティグループがすでに存在する場合は、vSwitch IDとセキュリティグループIDを取得した後にインスタンスを購入できます。 詳細については、このトピックの「ECSインスタンスの作成」をご参照ください。
VPCを作成します。
中国 (杭州) リージョンにVPCを作成し、VPCのCIDRブロックとして192.168.0.0/16を指定します。
操作
パラメーター
説明と例
RegionId
VPCを作成するリージョンのID。 例: cn-hangzhou
CidrBlock
VPC の CIDR ブロックです。 例: 192.168.0.0/16
次のサンプルコードは、VPCの作成方法の例を示しています。
com.aliyuncs.DefaultAcsClientをインポートします。com.aliyuncs.IAcsClientをインポートします。com.aliyuncs.exceptions.ClientExceptionをインポートします。com.aliyuncs.exceptions.ServerExceptionをインポートします。com.aliyuncs.profile.DefaultProfileをインポートします。com.google.gson.Gsonをインポートします。com.aliyuncs.vpc.mo del.v20160428.* をインポートします。public class CreateVpc { public static void main(String[] args) { // ALIBABA_CLOUD_ACCESS_KEY_ID環境変数とALIBABA_CLOUD_ACCESS_KEY_SECRET環境変数がコードランタイムで設定されていることを確認します。 // プロジェクトコードが漏洩すると、AccessKeyペアが漏洩し、アカウントのすべてのリソースでセキュリティの問題が発生する可能性があります。 次のサンプルコードは、環境変数を使用してAccessKeyペアを取得し、AccessKeyペアを使用してAPI操作を呼び出す方法の例を示しています。 より高いセキュリティを提供するSecurity Token Service (STS) トークンの使用を推奨します。 DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); IAcsClient client = new DefaultAcsClient(profile); CreateVpcRequest request = new CreateVpcRequest(); request.setRegionId("cn-hangzhou"); 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()); } } }
レスポンス例:
{ "requestId":"5BE6AEA4-347F-46A9-9808-B429EF02****", "vpcId":"vpc-bp1h99qfh290thxml****", "vRouterId":"vrt-bp1cbum5ozelljyet****", "routeTableId":"vtb-bp1qm6p3yoww2cv10****", "resourceGroupId":"rg-acfmzw2jz2z ****" }
vSwitchを作成します。
VPCにvSwitchを作成し、vSwitchのCIDRブロックとして192.168.0.0/24を指定します。
操作
パラメーター
説明と例
ZoneId
vSwitchを作成するゾーンのID。 例: cn-hangzhou-i
VpcId
VPC の ID です。 ステップ1で返されたvpcId値に値を設定します。
例: vpc-bp1h99qfh290thxml ****
CidrBlock
VSwitch の CIDR ブロックです。 例: 192.168.0.0/24
次のサンプルコードは、vSwitchの作成方法の例を示しています。
com.aliyuncs.DefaultAcsClientをインポートします。com.aliyuncs.IAcsClientをインポートします。com.aliyuncs.exceptions.ClientExceptionをインポートします。com.aliyuncs.exceptions.ServerExceptionをインポートします。com.aliyuncs.profile.DefaultProfileをインポートします。com.google.gson.Gsonをインポートします。java.util.* をインポートします。com.aliyuncs.vpc.mo del.v20160428.* をインポートします。public class CreateVSwitch { public static void main(String[] args) { // ALIBABA_CLOUD_ACCESS_KEY_ID環境変数とALIBABA_CLOUD_ACCESS_KEY_SECRET環境変数がコードランタイムで設定されていることを確認します。 // プロジェクトコードが漏洩すると、AccessKeyペアが漏洩し、アカウントのすべてのリソースでセキュリティの問題が発生する可能性があります。 次のサンプルコードは、環境変数を使用してAccessKeyペアを取得し、AccessKeyペアを使用してAPI操作を呼び出す方法の例を示しています。 より高いセキュリティを提供するSTSトークンの使用を推奨します。 DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); IAcsClient client = new DefaultAcsClient(profile); CreateVSwitchRequest request = new CreateVSwitchRequest(); request.setRegionId("cn-hangzhou"); request.setCidrBlock("192.168.0.0/24"); request.setVpcId("vpc-bp1h99qfh290thxml****"); request.setZoneId("cn-hangzhou-i"); 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()); } } }
レスポンス例:
{ "requestId": "BAFBC8C4-3C65-427B-B470-3D257288****", "vSwitchId": "vsw-bp1mihse903i05oxn ****" }
セキュリティグループを作成します。
操作
パラメーター
説明と例
RegionId
セキュリティグループを作成するリージョンのID。 例: cn-hangzhou
VpcId
VPC の ID です。 ステップ1で返されたvpcId値に値を設定します。
例: vpc-bp1h99qfh290thxml ****
次のサンプルコードは、セキュリティグループの作成方法の例を示しています。
com.aliyuncs.DefaultAcsClientをインポートします。com.aliyuncs.IAcsClientをインポートします。com.aliyuncs.exceptions.ClientExceptionをインポートします。com.aliyuncs.exceptions.ServerExceptionをインポートします。com.aliyuncs.profile.DefaultProfileをインポートします。com.google.gson.Gsonをインポートします。java.util.* をインポートします。com.aliyuncs.ecs.mo del.v20140526. * をインポートします。publicクラスCreateSecurityGroup { public static void main(String[] args) { // ALIBABA_CLOUD_ACCESS_KEY_ID環境変数とALIBABA_CLOUD_ACCESS_KEY_SECRET環境変数がコードランタイムで設定されていることを確認します。 // プロジェクトコードが漏洩すると、AccessKeyペアが漏洩し、アカウントのすべてのリソースでセキュリティの問題が発生する可能性があります。 次のサンプルコードは、環境変数を使用してAccessKeyペアを取得し、AccessKeyペアを使用してAPI操作を呼び出す方法の例を示しています。 より高いセキュリティを提供するSTSトークンの使用を推奨します。 DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); IAcsClient client = new DefaultAcsClient(profile); CreateSecurityGroupRequest request = new CreateSecurityGroupRequest(); request.setRegionId("cn-hangzhou"); request.setVpcId("vpc-bp1h99qfh290thxml****"); 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()); } } }
レスポンス例:
{ "requestId": "718D29C6-6183-4196-AD76-A53F6A6E****", "securityGroupId": "sg-bp1dve08xy2c8y9g ****" }
セキュリティグループにインバウンドルールを追加します。
操作
パラメーター
説明と例
RegionId
セキュリティグループのリージョン ID です。 例: cn-hangzhou
SecurityGroupId
セキュリティグループの ID です。 ステップ3で返されたsecurityGroupId値に値を設定します。
例: sg-bp1dve08xy2c8y9g ****
IpProtocol
プロトコル。 例: tcp
SourceCidrIp
ソース CIDR ブロックです。 例: 0.0.0.0/0
PortRange
ポート範囲。 例:
Linuxインスタンス: 22/22
Windowsインスタンス: 3389/3389
次のサンプルコードは、セキュリティグループにインバウンドルールを追加する方法の例を示しています。
com.aliyuncs.DefaultAcsClientをインポートします。com.aliyuncs.IAcsClientをインポートします。com.aliyuncs.exceptions.ClientExceptionをインポートします。com.aliyuncs.exceptions.ServerExceptionをインポートします。com.aliyuncs.profile.DefaultProfileをインポートします。com.google.gson.Gsonをインポートします。java.util.* をインポートします。com.aliyuncs.ecs.mo del.v20140526. * をインポートします。public class AuthorizeSecurityGroup { public static void main(String[] args) { // ALIBABA_CLOUD_ACCESS_KEY_ID環境変数とALIBABA_CLOUD_ACCESS_KEY_SECRET環境変数がコードランタイムで設定されていることを確認します。 // プロジェクトコードが漏洩すると、AccessKeyペアが漏洩し、アカウントのすべてのリソースでセキュリティの問題が発生する可能性があります。 次のサンプルコードは、環境変数を使用してAccessKeyペアを取得し、AccessKeyペアを使用してAPI操作を呼び出す方法の例を示しています。 より高いセキュリティを提供するSTSトークンの使用を推奨します。 DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); IAcsClient client = new DefaultAcsClient(profile); AuthorizeSecurityGroupRequest request = new AuthorizeSecurityGroupRequest(); request.setRegionId("cn-hangzhou"); request.setSecurityGroupId("sg-bp1dve08xy2c8y9g****"); request.setIpProtocol("tcp"); request.setPortRange("22/22"); request.setSourceCidrIp("0.0.0.0/0"); try { AuthorizeSecurityGroupResponse 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()); } } }
レスポンス例:
{ "requestId": "7052E70F-4678-4400-81CF-E0133CCB ****" }
ECS インスタンスの作成
サブスクリプションECSインスタンスを作成します。
操作 | パラメーター | 説明と例 |
RegionId | インスタンスを作成するリージョンのID。 例: cn-hangzhou | |
ImageId | イメージの ID です。 aliyun_2_1903_x64_20G_alibase_20200324.vhd Alibaba Cloud Linuxイメージを選択することを推奨します。 | |
InstanceType | インスタンスタイプを示します。
| |
SecurityGroupId | セキュリティグループの ID です。 ステップ3で返されたsecurityGroupId値に値を設定します。 例: sg-bp1dve08xy2c8y9g **** | |
VSwitchId | VSwitch の ID です。 ステップ2で返されたvSwitchId値に値を設定します。 例: vsw-bp1mihse903i05oxn **** | |
InstanceName | インスタンス名。 例: ecs_sdk_demo | |
InstanceChargeType | インスタンスの課金方法です。 サブスクリプションインスタンスを作成するには、値をPrePaidに設定します。 説明 ご利用のアカウントに十分な残高があることをご確認ください。 | |
PeriodUnit | サブスクリプション期間の単位。 例: 月 | |
Period | サブスクリプション期間です。 例: 1。 | |
InternetMaxBandwidthOut | 最大アウトバウンドパブリック帯域幅です。 例: Mbit/s 1。 | |
Password | インスタンスのログインパスワード。 例: <yourPassword> 説明 インスタンスのセキュリティを確保するには、複雑なパスワードを指定する必要があります。 |
次のサンプルコードは、サブスクリプションインスタンスを作成する方法の例を示しています。
com.aliyuncs.DefaultAcsClientをインポートします。com.aliyuncs.IAcsClientをインポートします。com.aliyuncs.exceptions.ClientExceptionをインポートします。com.aliyuncs.exceptions.ServerExceptionをインポートします。com.aliyuncs.profile.DefaultProfileをインポートします。com.google.gson.Gsonをインポートします。java.util.* をインポートします。com.aliyuncs.ecs.mo del.v20140526. * をインポートします。publicクラスRunInstances {
public static void main(String[] args) {
// ALIBABA_CLOUD_ACCESS_KEY_ID環境変数とALIBABA_CLOUD_ACCESS_KEY_SECRET環境変数がコードランタイムで設定されていることを確認します。
// プロジェクトコードが漏洩すると、AccessKeyペアが漏洩し、アカウントのすべてのリソースでセキュリティの問題が発生する可能性があります。 次のサンプルコードは、環境変数を使用してAccessKeyペアを取得し、AccessKeyペアを使用してAPI操作を呼び出す方法の例を示しています。 より高いセキュリティを提供するSTSトークンの使用を推奨します。
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
IAcsClient client = new DefaultAcsClient(profile);
RunInstancesRequest request = new RunInstancesRequest();
request.setRegionId("cn-hangzhou");
request.setImageId("aliyun_2_1903_x64_20G_alibase_20200324.vhd");
request.setInstanceType("ecs.s6-c1m2.small");
request.setSecurityGroupId("sg-bp1dve08xy2c8y9g****");
request.setVSwitchId("vsw-bp1mihse903i05oxn****");
request.setInstanceName("ecs_sdk_demo");
request.setInternetMaxBandwidthOut(1);
request.setPassword("<yourPassword>");
request.setPeriod(1);
request.setPeriodUnit("Month");
request.setInstanceChargeType("PrePaid");
try {
RunInstancesResponse 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());
}
}
}
レスポンス例:
{
"requestId": "9582F9F2-349C-438E-A6A2-3E7B6B56****",
"tradePrice": ****,
"instanceIdSets": ["i-bp1hcv43i3glqxbv ****"]
}
ECS インスタンスの接続
このセクションでは、Cloud Shell を使用して Linux インスタンスに接続する方法について説明します。 Windowsインスタンスへの接続方法については、「ユーザー名とパスワードを使用したWindowsインスタンスへの接続」をご参照ください。
インスタンスのパブリックIPアドレスを照会します。
操作
パラメーター
説明と例
RegionId
インスタンスのリージョン ID です。 例: cn-hangzhou
InstanceIds
インスタンスの ID です。 このトピックの [ECSインスタンスの作成] セクションで返されるインスタンスIDに値を設定します。
例: '["i-bp1hcv43i3glqxbv ****"]'
次のサンプルコードは、インスタンスのパブリックIPアドレスを照会する方法の例を示しています。
aliyun ecs DescribeInstances \ -- RegionId cn-hangzhou \ -- InstanceIds '["i-bp1hcv43i3glqxbv ****"]'
レスポンスで次のパブリックIPアドレスを見つけます。
SSHを使用してECSインスタンスにログインします。
インスタンスのリリース
サブスクリプションインスタンスは、有効期限後に手動でリリースできます。 期限切れのインスタンスを更新しない場合、インスタンスは自動的にリリースされます。