JavaでEC2インスタンスを管理する

JavaでのEC2インスタンスの管理

1. 概要

この記事では、control EC2 resources using the Java SDKについて学習します。 **EC2 (Elastic Cloud Compute)を初めて使用する場合–これはAmazonのクラウドでコンピューティング能力を提供するプラットフォームです。

2. 前提条件

Amazon AWS SDK for EC2を使用するために必要なMavenの依存関係、AWSアカウント設定、およびクライアント接続は、this article here.と同じです。

前の記事で説明したようにAWSCredentials,のインスタンスを作成したとすると、先に進んでEC2クライアントを作成できます。

AmazonEC2 ec2Client = AmazonEC2ClientBuilder
  .standard()
  .withCredentials(new AWSStaticCredentialsProvider(credentials))
  .withRegion(Regions.US_EAST_1)
  .build();

3. EC2インスタンスの作成

SDKを使用すると、set up what we need to start our first EC2 instance.をすばやく実行できます。

3.1. セキュリティグループの作成

Security groups control the network traffic to our EC2 instances.複数のEC2インスタンスに1つのセキュリティグループを使用できます。

セキュリティグループを作成しましょう:

CreateSecurityGroupRequest createSecurityGroupRequest = new CreateSecurityGroupRequest()
  .withGroupName("exampleSecurityGroup")
  .withDescription("example Security Group");
CreateSecurityGroupResult createSecurityGroupResult = ec2Client.createSecurityGroup(
  createSecurityGroupRequest);

セキュリティグループはデフォルトでネットワークトラフィックを許可しないため、configure our security group to allow traffic.する必要があります

任意のIPアドレスからのHTTPトラフィックを許可しましょう。

IpRange ipRange = new IpRange().withCidrIp("0.0.0.0/0");
IpPermission ipPermission = new IpPermission()
  .withIpv4Ranges(Arrays.asList(new IpRange[] { ipRange }))
  .withIpProtocol("tcp")
  .withFromPort(80)
  .withToPort(80);

最後に、attach the ipRange instance to an AuthorizeSecurityGroupIngressRequestを実行し、EC2クライアントを使用してリクエストを行う必要があります。

AuthorizeSecurityGroupIngressRequest authorizeSecurityGroupIngressRequest
  = new AuthorizeSecurityGroupIngressRequest()
  .withGroupName("exampleSecurityGroup")
  .withIpPermissions(ipPermission);
ec2Client.authorizeSecurityGroupIngress(authorizeSecurityGroupIngressRequest);

3.2. キーペアの作成

EC2インスタンスを起動するときは、key pair.We can create a key pair using the SDK:を指定する必要があります

CreateKeyPairRequest createKeyPairRequest = new CreateKeyPairRequest()
  .withKeyName("example-key-pair");
CreateKeyPairResult createKeyPairResult = ec2Client.createKeyPair(createKeyPairRequest);

秘密鍵を取得しましょう:

createKeyPairResult.getKeyPair().getKeyMaterial();

make sure to keep this key somewhere secure and safe.に到達しました。紛失した場合、元に戻すことはできません(Amazonはそれを保持しません)。 これが、EC2インスタンスに接続できる唯一の方法です。

3.3. EC2インスタンスの作成

EC2を作成するには、RunInstancesRequest:を使用します

RunInstancesRequest runInstancesRequest = new RunInstancesRequest()
  .withImageId("ami-97785bed")
  .withInstanceType("t2.micro")
  .withKeyName("example-key-pair")
  .withMinCount(1)
  .withMaxCount(1)
  .withSecurityGroups("exampleSecurityGroup");

画像IDはAMI image that this instance will use.です

An instance typespecifications of the instance.を定義します。

The key name is optional;が指定されていない場合、インスタンスに接続できません。 インスタンスが正しく設定されており、接続する必要がないと確信している場合は、これで問題ありません。

Min and max count give bounds as to how many instances will be created.これはアベイラビリティーゾーンによって異なります。AWSがゾーン内に少なくとも最小数のインスタンスを作成できない場合、AWSはインスタンスを作成しません。

逆に、AWSがインスタンスの最大数を作成できない場合、この数が指定したインスタンスの最小数よりも多い場合は、作成するインスタンスの数を減らします。

これで、runInstances()メソッドを使用してリクエストを実行し、作成されたインスタンスのIDを取得できます。

String yourInstanceId = ec2Client.runInstances(runInstancesRequest)
  .getReservation().getInstances().get(0).getInstanceId();

4. EC2インスタンスの管理

SDKを使用すると、EC2インスタンスに対してstart, stop, reboot, describe and configure monitoringを実行できます。

4.1. EC2インスタンスの開始、停止、再起動

インスタンスの開始、停止、再起動は比較的簡単です。

インスタンスの開始:

StartInstancesRequest startInstancesRequest = new StartInstancesRequest()
  .withInstanceIds(yourInstanceId);

ec2Client.startInstances(request);

インスタンスの停止:

StopInstancesRequest stopInstancesRequest = new StopInstancesRequest()
  .withInstanceIds(yourInstanceId);

ec2Client.stopInstances(request);

インスタンスの再起動:

RebootInstancesRequest request = new RebootInstancesRequest()
  .withInstanceIds(yourInstanceId);

RebootInstancesResult rebootInstancesRequest = ec2Client.rebootInstances(request);

これらの各リクエストから、interrogate the previous state of the instance:を実行できます。

ec2Client.stopInstances(stopInstancesRequest)
  .getStoppingInstances()
  .get(0)
  .getPreviousState()
  .getName()

4.2. EC2インスタンスのモニタリング

start and stop monitoring our EC2 instances:する方法を見てみましょう

MonitorInstancesRequest monitorInstancesRequest = new MonitorInstancesRequest()
  .withInstanceIds(yourInstanceId);

ec2Client.monitorInstances(monitorInstancesRequest);

UnmonitorInstancesRequest unmonitorInstancesRequest = new UnmonitorInstancesRequest()
  .withInstanceIds(yourInstanceId);

ec2Client.unmonitorInstances(unmonitorInstancesRequest);

4.3. EC2インスタンスの説明

最後に、describe our EC2 instances:

DescribeInstancesRequest describeInstancesRequest
 = new DescribeInstancesRequest();
DescribeInstancesResult response = ec2Client
  .describeInstances(describeInstancesRequest);

EC2インスタンスはreservationsにグループ化されます。 予約は、1つ以上のEC2インスタンスを作成するために使用されたStartInstancesRequest呼び出しです。

response.getReservations()

ここから実際のインスタンスを取得できます。 最初の予約で最初のインスタンスを取得しましょう:

response.getReservations().get(0).getInstances().get(0)

これで、インスタンスを説明できます。

// ...
.getImageId()
.getSubnetId()
.getInstanceId()
.getImageId()
.getInstanceType()
.getState().getName()
.getMonitoring().getState()
.getKernelId()
.getKeyName()

5. 結論

このクイックチュートリアルでは、manage Amazon EC2 instances using the Java SDK.を実行する方法を示しました。

いつものように、コードスニペットはover on GitHubにあります。