この記事の目次
AWSでJavaを使うには?

AWS SDK for Javaとは?
「AWS SDK for Java」とは、提供される独自のJava APIを使うことでAWSのサービスへアクセスするためのJavaアプリケーション開発を支援してくれるSDK(ソフトウェア開発キット)です。 AWS SDK for Javaを使うことで、EC2やS3などのAWSの様々なサービスで動作するアプリケーションの開発が簡単に行えます。 なお、AWS SDK for JavaにはJDK6をコードベースとしたバージョン1.X系とJDK8をコードベースとしたバージョン2.X系があり、それぞれ提供されるライブラリなどに違いがあります。 バージョン2.X系は公式ドキュメント類が日本語化されていないため、この記事においてはバージョン1.X系における導入手順をご紹介しますが、両者は並行利用可能となっています。事前準備
AWS SDK for Javaの導入に当たり、いくつか事前準備が必要ですので順次ご説明します。IAMユーザーの作成
まずは事前準備の第一段階としてAWSのIAMユーザーを作成します。 既にIAMユーザーを作成済みの方は、この工程は読み飛ばしてください。IAMユーザーとは、AWSのサービスを利用する権限を付与されたユーザーのことで、設定した認証情報を入力して各種サービスにサインインできます。 まず、AWSのコンソールから[IAM]のサービスを開き、[アクセス管理]配下の[ユーザー]をクリックし、[ユーザーを追加]ボタンをクリックします。任意のユーザー名を入力し「プログラムによるアクセス」にチェックを入れて[次のステップ]に進みます。 [アクセス許可の設定]や[タグ]はそのままで[確認]まで進んで、[ユーザーの作成]をクリックすると「アクセスキー」と「シークレットアクセスキー」が表示されるので控えておきましょう。特に、シークレットアクセスキーはこの段階でしか確認できないのでご注意ください。Java開発環境のセットアップ
AWS SDK for Javaの導入にはJava 6.0以降が必要となります。 最近版のJDK(Java SE Development Kit)をhttp://www.oracle.com/technetwork/java/javase/downloads/からダウンロードします。なお、ダウンロードにはOracleのアカウントが必要となりますので、作成しておきましょう。AWS SDK for Javaのセットアップ
Apache Mavenのインストール
セットアップの第一段階として、SDKをビルドするために必要な「Apache Maven」をインストールします。Apache Mavenとは、Java用のプロジェクト管理ツールで、プロジェクトのビルド、テストからドキュメントの作成まで一括で管理できます。 まず公式サイトよりバイナリファイルをダウンロードします。 https://maven.apache.org/download.cgi ダウンロードしたファイルを解凍後、任意のディレクトリに展開し、展開先ディレクトリ配下の「bin」ディレクトリをPATH環境変数に追加します。 コマンドプロンプト上で【mvn -v】コマンドを実行し、バージョン情報や上記で設定したPATHが表示されればインストールは成功です。Mavenパッケージの作成
続いて、コマンドプロンプト上で以下のコマンドを入力してMavenパッケージを作成します。mvn -B archetype:generate \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DgroupId=org.example.basicapp(アプリケーションの完全パッケージ名前空間) \ -DartifactId=myapp(プロジェクト名)最後に、プロジェクトでAWS SDK for Javaを使用するために、Maven依存関係としてSDKを設定していきます。パッケージ作成で作られたプロジェクトのpom.xmlファイルに以下の情報を追加します。
<dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-bom</artifactId> <version>1.11.327</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>これでプロジェクトの設定ができたので、コマンドプロンプト上でプロジェクトディレクトリに移動して【mvn package】コマンドを実行します。ビルドに成功すれば、[.jar]ディレクトリにtargetファイルが作成されます。
SDKをビルドする
Mavenを使用して、SDKをビルド&インストールします。GitHubからSDKのソースコードをダウンロードし、以下のコマンドを実行します。mvn clean install以上でAWS SDK for Javaのセットアップは完了です。
AWS SDK for Javaの実行
ここからは、AWS SDK for Javaを使ってAmazon EC2インスタンスを作成する手順をご説明します。依存関係の設定
まず、EC2に対するSDKの依存関係を登録するため、pom.xmlファイルの<dependencies>セクションに以下を追加します。<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>ec2</artifactId> </dependency>
セキュリティーグループの作成
EC2インスタンスへのネットワークトラフィックを制御するセキュリティグループを作成します。 CreateSecurityGroupRequestインスタンスを作成し、そのインスタンスに対して、withGroupNameメソッドでグループ名、withDescriptionメソッドでグループの説明を設定します。CreateSecurityGroupRequest csgr = new CreateSecurityGroupRequest(); csgr.withGroupName("JavaSecurityGroup").withDescription("My security group");リクエストインスタンスを引数としてcreateSecurityGroupメソッドに渡し、CreateSecurityGroupResultオブジェクトを作成します。
CreateSecurityGroupResult createSecurityGroupResult = amazonEC2Client.createSecurityGroup(csgr);
トラフィック許可の設定
作成したセキュリティグループは、デフォルトではAmazon EC2インスタンスへのインバウンドトラフィックを許可しないので、トラフィックを許可するように設定します。 IpPermissionインスタンスを作成し、withIpv4Rangesメソッドを使用して許可対象となる任意のIPアドレスの範囲を設定します。withIpProtocolメソッドでIP プロトコル、withFromPortメソッドとwithToPortメソッドで許可対象となるポートの範囲を指定します。IpPermission ipPermission = new IpPermission(); IpRange ipRange1 = new IpRange().withCidrIp("111.111.111.111/32"); IpRange ipRange2 = new IpRange().withCidrIp("150.150.150.150/32"); ipPermission.withIpv4Ranges(Arrays.asList(new IpRange[] {ipRange1, ipRange2})) .withIpProtocol("tcp") .withFromPort(22) .withToPort(22);
許可リクエストの作成
AuthorizeSecurityGroupIngressRequestインスタンスを作成し、withGroupNameメソッドを使用してセキュリティグループ名を指定し、初期化したIpPermissionオブジェクトをwithIpPermissionsメソッドに渡します。AuthorizeSecurityGroupIngressRequest authorizeSecurityGroupIngressRequest = new AuthorizeSecurityGroupIngressRequest(); authorizeSecurityGroupIngressRequest.withGroupName("JavaSecurityGroup") .withIpPermissions(ipPermission);最後にリクエストオブジェクトをauthorizeSecurityGroupIngressメソッドに渡して、このセクションは完了です。
amazonEC2Client.authorizeSecurityGroupIngress(authorizeSecurityGroupIngressRequest);
キーペアの作成
EC2インスタンスを起動するには、キーペアを指定する必要があります。 CreateKeyPairRequestインスタンスを作成し、withKeyNameメソッドを使用して任意のキーペア名を設定します。CreateKeyPairRequest createKeyPairRequest = new CreateKeyPairRequest(); createKeyPairRequest.withKeyName(keyName);作成されたリクエストインスタンスをcreateKeyPairメソッドに渡して結果オブジェクトを作成します。
CreateKeyPairResult createKeyPairResult = amazonEC2Client.createKeyPair(createKeyPairRequest);結果オブジェクトのgetKeyPairメソッドを呼び出して、プライベートキーを取得します。
KeyPair keyPair = new KeyPair(); keyPair = createKeyPairResult.getKeyPair(); String privateKey = keyPair.getKeyMaterial();
EC2インスタンスの作成
EC2インスタンスを作成するには、RunInstancesRequestインスタンスを作成する必要があります。RunInstancesRequest runInstancesRequest = new RunInstancesRequest(); runInstancesRequest.withImageId("ami-a9d09ed1") .withInstanceType(InstanceType.T1Micro) .withMinCount(1) .withMaxCount(1) .withKeyName("my-key-pair") .withSecurityGroups("my-security-group");withImageIdはこのインスタンスが使用するAMI(Amazon マシンイメージ)のID、withInstanceTypeは指定したAMIと互換性のあるインスタンスタイプを指定します。 withMinCount/withMaxCountは起動するインスタンスの最小・最大数、withKeyNameとwithSecurityGroupsには設定したキーペアとセキュリティグループを指定します。 リクエストオブジェクトをrunInstancesメソッドに渡してリクエストを実行すれば、インスタンスが起動します。
RunInstancesResult result = amazonEC2Client.runInstances(runInstancesRequest);