AWS Cloud9
ユーザーガイド

AWS Cloud9 の Java サンプル

このサンプルを使用して AWS Cloud9 開発環境 でいくつかの Java コードを実行できます。

このサンプルを作成すると、AWS アカウントに課金される場合があります。これには、Amazon EC2 や Amazon S3 などのサービスで発生する可能性がある料金も含まれます。詳細については、「Amazon EC2 料金表」および「Amazon S3 料金表」を参照してください。

前提条件

このサンプルを使用する前に、以下の前提条件を満たしていることを確認します。

  • 既存の AWS Cloud9 EC2 開発環境 がある。 このサンプルでは、Amazon Linux または Ubuntu Server を実行する Amazon EC2 インスタンスに接続された EC2 環境 が既にあることを前提としています。別のタイプまたはオペレーティングシステムの 環境 がある場合、このサンプルの手順を調整して関連ツールをセットアップする必要がある場合があります。詳細については、「AWS Cloud9 で 環境 を作成する」を参照してください。

  • 既存の環境に既に開いている AWS Cloud9 IDE がある。 環境 を開くと、AWS Cloud9 によってその 環境 の IDE がウェブブラウザで開かれます。詳細については、「AWS Cloud9 で環境を開く」を参照してください。

ステップ 1: 必要なツールをインストールする

このステップでは、一連の Java 開発ツールを AWS Cloud9 開発環境 にインストールします。Oracle JDK や OpenJDK などの Java 開発ツールのセットが 環境 にインストール済みである場合は、ステップ 2: コードを追加する に進むことができます。このサンプルは、OpenJDK 8 で開発されました。次の手順を実行して、環境 にインストールすることができます。

  1. OpenJDK 8 が既にインストールされているかどうかを確認します。これを行うには、AWS Cloud9 IDE のターミナルセッションで、-version オプションを使用して Java ランナーのコマンドラインバージョンを実行します。(新しいターミナルセッションを開始するには、メニューバーで、[Window (ウィンドウ)]、[New Terminal (新しいターミナル)] の順に選択します。)

    java -version

    上記のコマンドの出力に基づいて、次のいずれかの操作を行います。

    • java コマンドが見つからないことを出力が示している場合は、この手順のステップ 2 に進み、OpenJDK 8 をインストールします。

    • 出力に Java(TM)Java Runtime EnvironmentJava SEJ2SE、または Java2 から始まる値が含まれている場合、OpenJDK がインストールされていないか、デフォルト Java 開発ツールセットとして設定されていません。この手順のステップ 2 に進んで OpenJDK 8 をインストールし、OpenJDK 8 の使用に切り替えます。

    • 出力に java version 1.8 および OpenJDK で始まる値がある場合は、ステップ 2: コードを追加する に進みます。このサンプルの OpenJDK 8 が正しくインストールされます。

    • 出力に java version 未満の 1.8OpenJDK で始まる値が含まれている場合、この手順のステップ 2 に進んで、インストールされた OpenJDK バージョンを OpenJDK 8 にアップグレードします。

  2. 最新のセキュリティ更新およびバグ修正がインストールされていることを確認します。これを行うには、 update コマンドを使用して yum ツール (Amazon Linux 用) または apt ツール (Ubuntu Server 用) を実行します。

    複数 Amazon Linux:

    sudo yum -y update

    Ubuntu Server の場合:

    sudo apt update
  3. OpenJDK 8 をインストールします。これを行うには、OpenJDK 8 パッケージを指定し、 install コマンドを使用して yum ツール (Amazon Linux 用) または apt ツール (Ubuntu Server 用) を実行します。

    複数 Amazon Linux:

    sudo yum -y install java-1.8.0-openjdk-devel

    Ubuntu Server の場合:

    sudo apt install -y openjdk-8-jdk

    詳細については、OpenJDK ウェブサイトで「How to download and install prebuilt OpenJDK packages」を参照してください。

  4. デフォルトの Java 開発ツールセットを OpenJDK 8 に切り替えるかアップグレードします。これを行うには、--config オプションを使用して update-alternatives コマンドを実行します。このコマンドを 2 回実行し、Java ランナーおよびコンパイラのコマンドラインバージョンに切り替えるかアップグレードします。

    sudo update-alternatives --config java sudo update-alternatives --config javac

    各プロンプトで、OpenJDK 8 の選択番号を入力します (java-1.8 を含む番号)。

  5. Java ランナーおよびコンパイラのコマンドラインバージョンが OpenJDK 8 を使用していることを確認します。これを行うには、-version オプションを使用して Java ランナーおよびコンパイラのコマンドラインバージョンを実行します。

    java -version javac -version

    OpenJDK 8 が適切にインストールされて設定されている場合、Java ランナーバージョンの出力には openjdk version 1.8 で始まる値が含まれており、Java コンパイラバージョンの出力は値 javac 1.8 から始まります。

ステップ 2: コードを追加する

AWS Cloud9 IDE で、以下のコードのファイルを作成し、hello.java という名前で保存します。(ファイルを作成するには、メニューバーで [File (ファイル)]、[New File (新規ファイル)] の順に選択します。)ファイルを保存するには、[File (ファイル)]、[Save (保存)] の順に選択します。

public class hello { public static void main(String []args) { System.out.println("Hello, World!"); System.out.println("The sum of 2 and 3 is 5."); int sum = Integer.parseInt(args[0]) + Integer.parseInt(args[1]); System.out.format("The sum of %s and %s is %s.\n", args[0], args[1], Integer.toString(sum)); } }

ステップ 3: コードをビルドして実行する

  1. Java コンパイラのコマンドラインバージョンを使用して、hello.java ファイルを hello.class ファイルにコンパイルします。これを行うには、AWS Cloud9 IDE でターミナルを使用し、hello.java ファイルと同じディレクトリから、 Java コンパイラを実行して hello.java ファイルを指定します。

    javac hello.java
  2. Java ランナーのコマンドラインバージョンを使用して hello.class ファイルを実行します。これを行うには、hello.class ファイルと同じディレクトリから、追加する 2 つの整数 (hellohello.java など) を使用して、5 ファイルで宣言した 9 クラスの名前を指定します。

    java hello 5 9
  3. 出力を比較します。

    Hello, World! The sum of 2 and 3 is 5. The sum of 5 and 9 is 14.

ステップ 4: AWS SDK for Java を使用できるように設定する

このサンプルを強化して AWS SDK for Java を使用し、Amazon S3 バケットの作成、利用可能なバケットの一覧表示、さらに作成したバケットの削除を行うことができます。

このステップでは、Apache Maven または Gradle を 環境 にインストールします。Maven と Gradle は、Java プロジェクトで使用できる共通ビルド自動化システムです。Maven または Gradle をインストールしたら、新しい Java プロジェクトの生成に使用します。この新しいプロジェクトでは、AWS SDK for Java への参照を追加します。この AWS SDK for Java では、Amazon S3 などの AWS のサービスを Java コードから 簡単に操作できます。

Maven を使用して設定する

  1. 環境 に Maven をインストールします。Maven がインストール済みであるかどうかを確認するには、AWS Cloud9 IDE でターミナルを使用し、-version オプションを使用して Maven を実行します。

    mvn -version

    成功すると、出力に Maven のバージョン番号が表示されます。Maven が既にインストールされている場合、この手順のステップ 4 に進んで Maven を使用し、環境 で新しい Java プロジェクトを生成します。

  2. ターミナルを使用して次のコマンドを実行し、Maven をインストールします。

    Amazon Linux の場合、以下のコマンドは、Maven が保存されているパッケージリポジトリに関する情報を取得し、この情報を使用して Maven をインストールします。

    sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo sudo yum install -y apache-maven

    上記のコマンドの詳細については、Fedora Project Wiki ウェブサイトの「Extra Packages for Enterprise Linux (EPEL)」を参照してください。

    Ubuntu サーバーでは、代わりに以下のコマンドを実行します。

    sudo apt install -y maven
  3. -version オプションを指定して Maven を実行し、インストールされていることを確認します。

    mvn -version
  4. 新しい Java プロジェクトを生成するには Maven を使用します。これを行うには、ターミナルを使用して、Maven によってプロジェクトを生成するディレクトリから次のコマンドを実行します (環境 のルートディレクトリなど)。

    mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

    上記のコマンドは、環境 でプロジェクトの次のディレクトリ構造を作成します。

    my-app |- src | `- main | `- java | `- com | `- mycompany | `- app | `-App.java |- test | `- java | `- com | `- mycompany | `- app | `- AppTest.java `- pom.xml

    上記のディレクトリ構図の詳細については、Apache Maven プロジェクトウェブサイトの「Maven Quickstart Archetype」と「Introduction to the Standard Directory Layout」を参照してください。

  5. プロジェクトのプロジェクトオブジェクトモデル (POM) ファイルを変更します(POM ファイルは Maven プロジェクトの設定を定義します)。 これを行うには、[Environment (環境)] ウィンドウで my-app/pom.xml ファイルを開きます。エディタで、ファイルの現在の内容を次のコードに置き換えて、pom.xml ファイルを保存します。

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.0.0</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>com.mycompany.app.App</mainClass> </manifest> </archive> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk</artifactId> <version>1.11.330</version> </dependency> </dependencies> </project>

    上記の POM ファイルには、以下のように宣言を指定するプロジェクト設定が含まれています。

    • artifactidmy-app 設定は、プロジェクトのルートディレクトリを設定し、group-idcom.mycompany.app 設定は com/mycompany/app および package ファイルで App.Java サブディレクトリ構造と AppTest.java 宣言を設定します。

    • artifactIdmy-app 設定に加えて、packagingjar 設定、version1.0-SNAPSHOT 設定、descriptorRefjar-with-dependencies 設定は、出力 JAR ファイルの my-app-1.0-SNAPSHOT-jar-with-dependencies.jar の名前を設定します。

    • plugin セクションは、構築されるすべての依存関係が含まれている単一の JAR を宣言します。

    • com.amazon.awsgroupId 設定と aws-java-sdkartifactId 設定を含む dependency セクションには、AWS SDK for Java ライブラリファイルが含まれています。使用する AWS SDK for Java バージョンは、version 設定で宣言します。別のバージョンを使用するには、このバージョン番号を置き換えます。

ステップ 5: 環境 で AWS 認証情報管理を設定する に進んでください。

Gradle を使用して設定する

  1. 環境 に Gradle をインストールします。Gradle がインストール済みであるかどうかを確認するには、AWS Cloud9 IDE でターミナルを使用し、-version オプションを指定して Gradle を実行します。

    gradle -version

    成功すると、出力に Gradle のバージョン番号が表示されます。Gradle が既にインストールされている場合、この手順のステップ 4 に進んで Gradle を使用し、環境 で新しい Java プロジェクトを生成します。

  2. ターミナルを使用して以下のコマンドを実行し、Gradle をインストールします。以下のコマンドでは、SDKMAN! ツールをインストールして実行し、次に SDKMAN! を使用して最新バージョンの Node.js をインストールします。

    curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" sdk install gradle

    上記のコマンドの詳細については、SDKMAN! ウェブサイトの「Installation」と Gradle ウェブサイトの「Install with a package manager」を参照してください。

  3. -version オプションを指定して Gradle を実行し、インストールされていることを確認します。

    gradle -version
  4. Gradle を使用して、環境 に新しい Java プロジェクトを生成します。これを行うには、ターミナルを使用し、次のコマンドを実行してプロジェクトのディレクトリを作成した後、そのディレクトリに切り替えます。

    mkdir my-app cd my-app
  5. 次のコマンドを実行し、Gradle により新しい Java アプリケーションプロジェクトを 環境 の my-app ディレクトリに生成します。

    gradle init --type java-application

    上記のコマンドは、環境 でプロジェクトの次のディレクトリ構造を作成します。

    my-app |- .gradle | `- (various supporting project folders and files) |- gradle | `- (various supporting project folders and files) |- src | |- main | | `- java | | `- App.java | `- test | `- java | `- AppTest.java |- build.gradle |- gradlew |- gradlew.bat `- settings.gradle
  6. プロジェクトの AppTest.java を変更します(これを行わない場合、プロジェクトが正常にビルドまたは実行されない可能性があります)。これを行うには、[Environment (環境)] ウィンドウで my-app/src/test/java/AppTest.java ファイルを開きます。エディタで、ファイルの現在の内容を次のコードに置き換えて、AppTest.java ファイルを保存します。

    import org.junit.Test; import static org.junit.Assert.*; public class AppTest { @Test public void testAppExists () { try { Class.forName("com.mycompany.app.App"); } catch (ClassNotFoundException e) { fail("Should have a class named App."); } } }
  7. プロジェクトの build.gradle ファイルを変更します(build.gradle ファイルは Gradle プロジェクトの設定を定義します)。 これを行うには、[Environment (環境)] ウィンドウで my-app/build.gradle ファイルを開きます。エディタで、ファイルの現在の内容を次のコードに置き換えて、build.gradle ファイルを保存します。

    apply plugin: 'java' apply plugin: 'application' repositories { jcenter() mavenCentral() } buildscript { repositories { mavenCentral() } dependencies { classpath "io.spring.gradle:dependency-management-plugin:1.0.3.RELEASE" } } apply plugin: "io.spring.dependency-management" dependencyManagement { imports { mavenBom 'com.amazonaws:aws-java-sdk-bom:1.11.330' } } dependencies { compile 'com.amazonaws:aws-java-sdk-s3' testCompile group: 'junit', name: 'junit', version: '4.12' } run { if (project.hasProperty("appArgs")) { args Eval.me(appArgs) } } mainClassName = 'App'

    上記の build.gradle ファイルには、以下のように宣言を指定するプロジェクト設定が含まれています。

    • io.spring.dependency-management プラグインでは、AWS SDK for Java 部品表 (BOM) をインポートしてプロジェクトの AWS SDK for Java 依存関係を管理します。使用するバージョンは classpath で宣言します。別のバージョンを使用するには、このバージョン番号を置き換えます。

    • com.amazonaws:aws-java-sdk-s3 には、AWS SDK for Java ライブラリファイルの Amazon S3 部分が含まれています。使用するバージョンは mavenBom で宣言します。別のバージョンを使用する場合、このバージョン番号を置き換えます。

ステップ 5: 環境 で AWS 認証情報管理を設定する

AWS SDK for Java を使用して AWS のサービスを呼び出すたびに、呼び出しに一連の AWS 認証情報を指定する必要があります。これらの認証情報は AWS SDK for Java にその呼び出しを行う適切なアクセス許可があるかどうかを判別します。認証情報に適切なアクセス権限がない場合は、呼び出しは失敗します。

このステップでは、環境 内に認証情報を保存します。これを行うには、AWS Cloud9 の環境から AWS のサービスを呼び出すの手順を実行してから、このトピックに戻ります。

詳細については、AWS SDK for Java Developer Guide の「開発用の AWS 認証情報とリージョンのセットアップ」を参照してください。

ステップ 6: AWS SDK コードを追加する

このステップでは、Amazon S3 を操作してバケットを作成し、使用可能なバケットの一覧を表示した後、作成したバケットを削除します。

[Environment (環境)] ウィンドウから、Maven の場合は my-app/src/main/java/com/mycompany/app/App.java ファイルを開き、Gradle の場合は my-app/src/main/java/App.java ファイルを開きます。エディタで、ファイルの現在の内容を次のコードに置き換えて、App.java ファイルを保存します。

package com.mycompany.app; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.AmazonS3Exception; import com.amazonaws.services.s3.model.Bucket; import com.amazonaws.services.s3.model.CreateBucketRequest; import java.util.List; public class App { private static AmazonS3 s3; public static void main(String[] args) { if (args.length < 2) { System.out.format("Usage: <the bucket name> <the AWS Region to use>\n" + "Example: my-test-bucket us-east-2\n"); return; } String bucket_name = args[0]; String region = args[1]; s3 = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(region) .build(); // List current buckets. ListMyBuckets(); // Create the bucket. if (s3.doesBucketExistV2(bucket_name)) { System.out.format("\nCannot create the bucket. \n" + "A bucket named '%s' already exists.", bucket_name); return; } else { try { System.out.format("\nCreating a new bucket named '%s'...\n\n", bucket_name); s3.createBucket(new CreateBucketRequest(bucket_name, region)); } catch (AmazonS3Exception e) { System.err.println(e.getErrorMessage()); } } // Confirm that the bucket was created. ListMyBuckets(); // Delete the bucket. try { System.out.format("\nDeleting the bucket named '%s'...\n\n", bucket_name); s3.deleteBucket(bucket_name); } catch (AmazonS3Exception e) { System.err.println(e.getErrorMessage()); } // Confirm that the bucket was deleted. ListMyBuckets(); } private static void ListMyBuckets() { List<Bucket> buckets = s3.listBuckets(); System.out.println("My buckets now are:"); for (Bucket b : buckets) { System.out.println(b.getName()); } } }

ステップ 7: AWS SDK コードをビルドおよび実行する

前のステップからコードを実行するには、ターミナルから以下のコマンドを実行します。これらのコマンドは、Maven または Gradle を使用してプロジェクトの実行可能な JAR ファイルを作成した後、Java ランナーを使用して JAR を実行します。Amazon S3 に作成するバケットの名前 (my-test-bucket など) と、バケットを作成する AWS リージョンの ID (us-east-2 など) を入力として使用し、JAR が実行されます。

Maven の場合、以下のコマンドを実行します。

cd my-app mvn package java -cp target/my-app-1.0-SNAPSHOT-jar-with-dependencies.jar com.mycompany.app.App my-test-bucket us-east-2

Gradle の場合、以下のコマンドを実行します。

gradle build gradle run -PappArgs="['my-test-bucket', 'us-east-2']"

結果を以下の出力と比較します。

My buckets now are: Creating a new bucket named 'my-test-bucket'... My buckets now are: my-test-bucket Deleting the bucket named 'my-test-bucket'... My buckets now are:

ステップ 8: クリーンアップする

このサンプルを使用し終わった後 AWS アカウントで料金が継続的に発生するのを防ぐには、環境 を削除する必要があります。手順については、「AWS Cloud9 で環境を削除する」を参照してください。