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 typeはspecifications 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にあります。