IT人材をお探しの方は、まずはお電話ください。担当営業がすぐにご要望にマッチした人材をご提案いたします。
tel:03-6409-6766 お急ぎの方はお電話ください

ブログTOP > IT・技術関連 > AWSでJavaを使うには?AWS SDK for Javaの導入手順を解説!

AWSでJavaを使うには?AWS SDK for Javaの導入手順を解説!

IT・技術関連 更新日:2024.09.05
エンジニア採用
AWSでJavaを使うには?AWS SDK for Javaの導入手順を解説!

AWSでJavaを使うには? Java個別の開発についてのお話に入る前に、AWS上でアプリケーション開発を行うに当たっての基本的な仕組みと享受できるメリットについて簡単にご説明します。 まず一口にアプリ開発と言っても、プログラムの作成だけで済む話ではなく、そこには煩雑でハイコストな作業や機能実装が附随します。 例えば、WEBアプリにおける認証機能の実装は、規模の大小に関わらず必須かつ重い工程である割りに、往々にして類似サービスとの差別化が図れないといった課題と隣合わせにあります。 そこでAWSでは、こういった認証やスケール設計、インフラ周りに関する様々な機能をフルマネージドサービスとして提供しています。 開発側は、これらのサービスをコンポーネントとしてプロジェクトに取り入れることによって、煩わしい作業から解放されて、開発のみに集中できるようになるのです。 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);

まとめ

この記事では、まず冒頭でAWSにおけるJava開発を行う上で知っておきたいサービスの活用に関することをお伝えしました。AWSによってフルマネージドされたサービスをコンポーネントして用いることで開発効率が上がるというお話でした。 以降はAWS SDK for Javaの導入手順を、ECインスタンスの作成を通じてご説明しました。SDKを利用することで、EC2のリソース制御を簡単に実行できました。 また今回ご説明したEC2に限らず、オンラインストレージサービスのS3においてファイルデータを操作したり、メッセージキューイングサービスのSQSにおいてメッセージを送受信したりといったAWSのサービスを利用するプログラミングも簡単に行えます。 今回ご紹介したサービスやSDKを活用して、AWSでのJava開発の効率アップ、コスト削減に繋げて頂ければと思います。]]>

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニアAWSパートナー/Salesforce認定コンサルティングパートナー 認定企業
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。

・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
ITエンジニアの派遣を利用したい企業様へ
ITエンジニアを派遣で採用したい企業様へ
  • 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
  • すぐに採用したいが、応募がぜんぜん集まらない
こんな悩みをお持ちの採用・人事担当者の方は、
オープンアップITエンジニアをご検討ください!

当社のITエンジニア派遣サービスは

  • 派遣スピードが速い!(最短即日)
  • 4,500名のエンジニアから貴社にマッチした人材を派遣
  • 正社員雇用も可能

こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。

無料相談のお申し込みはこちら
IT・技術関連の記事一覧へ

カテゴリから記事を探す

すべての記事一覧へ