すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:SDKを使用したECSインスタンスの作成と管理

最終更新日:Dec 27, 2023

開発者の場合、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インスタンスの作成」をご参照ください。

  1. VPCを作成します。

    中国 (杭州) リージョンにVPCを作成し、VPCのCIDRブロックとして192.168.0.0/16を指定します。

    操作

    パラメーター

    説明と例

    CreateVpc

    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 ****"
    } 
  2. vSwitchを作成します。

    VPCにvSwitchを作成し、vSwitchのCIDRブロックとして192.168.0.0/24を指定します。

    操作

    パラメーター

    説明と例

    CreateVSwitch

    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 ****"
    } 
  3. セキュリティグループを作成します。

    操作

    パラメーター

    説明と例

    CreateSecurityGroup

    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 ****"
    } 
  4. セキュリティグループにインバウンドルールを追加します。

    操作

    パラメーター

    説明と例

    AuthorizeSecurityGroup

    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インスタンスを作成します。

操作

パラメーター

説明と例

RunInstances

RegionId

インスタンスを作成するリージョンのID。 例: cn-hangzhou

ImageId

イメージの ID です。 aliyun_2_1903_x64_20G_alibase_20200324.vhd Alibaba Cloud Linuxイメージを選択することを推奨します。

InstanceType

インスタンスタイプを示します。

  • 個人のアプリケーションでは、1 vCPUと2 GiBのメモリを持つecs.s6-c1m2.smallのインスタンスタイプを選択することを推奨します。

  • 中小企業のアプリケーションでは、2 vCPUと4 GiBのメモリを持つecs.c5.largeインスタンスタイプを選択することを推奨します。

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インスタンスへの接続」をご参照ください。

  1. インスタンスのパブリックIPアドレスを照会します。

    操作

    パラメーター

    説明と例

    DescribeInstances

    RegionId

    インスタンスのリージョン ID です。 例: cn-hangzhou

    InstanceIds

    インスタンスの ID です。 このトピックの [ECSインスタンスの作成] セクションで返されるインスタンスIDに値を設定します。

    例: '["i-bp1hcv43i3glqxbv ****"]'

    次のサンプルコードは、インスタンスのパブリックIPアドレスを照会する方法の例を示しています。

    aliyun ecs DescribeInstances \
    -- RegionId cn-hangzhou \
    -- InstanceIds '["i-bp1hcv43i3glqxbv ****"]' 

    レスポンスで次のパブリックIPアドレスを見つけます。

    公网IP

  2. SSHを使用してECSインスタンスにログインします。

    ssh登录

インスタンスのリリース

サブスクリプションインスタンスは、有効期限後に手動でリリースできます。 期限切れのインスタンスを更新しない場合、インスタンスは自動的にリリースされます。