AWS Cloud9 の Java サンプル - AWS Cloud9

AWS Cloud9 の Java サンプル

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

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

Prerequisites

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

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

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

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

このステップでは、一連の 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. 最新のセキュリティ更新およびバグ修正がインストールされていることを確認します。これを行うには、yum ツール (Amazon Linux の場合) または apt ツール (Ubuntu Server の場合) を update コマンドを実行します。

    Amazon Linux の場合:

    sudo yum -y update

    Ubuntu Server の場合:

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

    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 という名前で保存します。(メニューバーでファイルを作成するには、ファイルNew File (新しいファイル)を選択します。 ファイルを保存するには、ファイル保存を選択します。)

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 を宣言します。

    • dependencygroupId 設定と com.amazon.awsartifactId 設定を含む aws-java-sdk セクションには、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 が 環境の my-app ディレクトリに新しい Java アプリケーションプロジェクトを生成するようにします。

    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 デベロッパーガイドの「開発用の 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 で環境を削除する」を参照してください。