これは AWS CDK v2 デベロッパーガイドです。古い v1 CDK は 2022 年 6 月 1 日にメンテナンスを開始し、2023 年 6 月 1 日にサポートを終了しました。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Java AWS CDK での の操作
Java は、 で完全にサポートされているクライアント言語であり AWS CDK 、安定していると見なされます。(JDKOracle または Amazon Corretto などの OpenJDK ディストリビューション) や Apache Maven などの使い慣れたツールを使用して、Java で AWS CDK アプリケーションを開発できます。
は Java 8 以降 AWS CDK をサポートしています。ただし、最新バージョンを使用することが推奨されます。これは、言語の最新バージョンには、 AWS CDK アプリケーションの開発に特に便利な改善が含まれているためです。例えば、Java 9 は Map.of()
メソッド ( でオブジェクトリテラルとして記述されるハッシュマップを宣言する便利な方法 TypeScript) を導入します。Java 10 は、 var
キーワードを使用してローカル型推論を導入します。
注記
このデベロッパーガイドのほとんどのコード例は、Java 8 で動作します。いくつかの例では を使用していますMap.of()
。これらの例には、Java 9 が必要であることを示すコメントが含まれます。
Maven プロジェクトを読み取IDEることができる任意のテキストエディタまたは Java を使用して、 AWS CDK アプリケーションを操作することができます。このガイドでは Eclipse
Java 以外の JVMホスト言語 (Kotlin、Groovy、Clojure、Scala など) で AWS CDK アプリケーションを記述することはできますが、エクスペリエンスは特に特異ではない可能性があり、これらの言語をサポートすることはできません。
の使用を開始する Java
を操作するには AWS CDK、 AWS アカウントと認証情報があり、Node.js と Toolkit AWS CDK がインストールされている必要があります。「の開始方法 AWS CDK」を参照してください。
Java AWS CDK アプリケーションには Java 8 (v1.8) 以降が必要です。Amazon Corretto
注記
サードパーティー言語の非推奨: 言語バージョンは、ベンダーまたはコミュニティによって共有される EOL (製品終了) までのみサポートされ、事前の通知により変更される可能性があります。
「プロジェクトの作成」
空のディレクトリcdk init
を呼び出して、新しい AWS CDK プロジェクトを作成します。--language
オプションを使用して を指定しますjava
。
mkdir my-project cd my-project cdk init app --language java
cdk init
は、プロジェクトフォルダの名前を使用して、クラス、サブフォルダ、ファイルなど、プロジェクトのさまざまな要素に名前を付けます。フォルダ名のハイフンはアンダースコアに変換されます。ただし、名前はそれ以外の場合は Java 識別子の形式に従う必要があります。例えば、数字で始まる、またはスペースを含むことはできません。
結果のプロジェクトには、software.amazon.awscdk
Maven パッケージへの参照が含まれています。それとその依存関係は Maven によって自動的にインストールされます。
を使用している場合はIDE、プロジェクトを開くかインポートできるようになりました。例えば、Eclipse で、File > Import > Maven > Existing Maven Projects を選択します。プロジェクト設定が Java 8 (1.8) を使用するように設定されていることを確認します。
AWS 構築ライブラリモジュールの管理
Maven を使用して、グループ にある AWS コンストラクトライブラリパッケージをインストールしますsoftware.amazon.awscdk
。ほとんどのコンストラクトはアーティファクト にありaws-cdk-lib
、デフォルトで新しい Java プロジェクトに追加されます。上位レベルのCDKサポートがまだ開発されているサービスのモジュールは、サービス名を短くしたバージョン ( AWS または Amazon プレフィックスなし) で名前が付けられた個別の「実験」パッケージにあります。Maven Central Repository を検索
注記
CDK API リファレンスの Java エディションには、パッケージ名も表示されます。
一部のサービス AWS 「構築ライブラリのサポート」は複数の名前空間にあります。例えば、Amazon Route 53 には、、software.amazon.awscdk.route53
、route53-patterns
、 route53resolver
に分割された機能がありますroute53-targets
。
メイン AWS CDK パッケージは として Java コードにインポートされますsoftware.amazon.awscdk
。 AWS 構築ライブラリ内のさまざまなサービスのモジュールは、Maven パッケージ名と同様に の下に存在software.amazon.awscdk.services
し、名前が付けられます。例えば、Amazon S3 モジュールの名前空間は ですsoftware.amazon.awscdk.services.s3
。
各 Java ソースファイルで使用する AWS コンストラクトライブラリクラスごとに個別の Java import
ステートメントを作成し、ワイルドカードインポートを避けることをお勧めします。import
ステートメントなしで、型の完全な修飾名 (名前空間を含む) をいつでも使用できます。
アプリケーションが実験パッケージに依存している場合は、プロジェクトの を編集pom.xml
し、<dependencies>
コンテナに新しい<dependency>
要素を追加します。例えば、次の<dependency>
要素は CodeStar 実験コンストラクトライブラリモジュールを指定します。
<dependency> <groupId>software.amazon.awscdk</groupId> <artifactId>codestar-alpha</artifactId> <version>2.0.0-alpha.10</version> </dependency>
ヒント
Java を使用する場合IDE、Maven の依存関係を管理する機能がある可能性があります。ただし、 IDEの機能が手動で行うものと完全に一致することが確認されていない限り、pom.xml
直接編集することをお勧めします。
での依存関係の管理 Java
Java では、依存関係は で指定pom.xml
され、Maven を使用してインストールされます。<dependencies>
コンテナには、パッケージごとに <dependency>
要素が含まれます。以下は、pom.xml
一般的な Java CDK アプリケーションの のセクションです。
<dependencies> <dependency> <groupId>software.amazon.awscdk</groupId> <artifactId>aws-cdk-lib</artifactId> <version>2.14.0</version> </dependency> <dependency> <groupId>software.amazon.awscdk</groupId> <artifactId>appsync-alpha</artifactId> <version>2.10.0-alpha.0</version> </dependency> </dependencies>
ヒント
多くの Java IDEsには Maven サポートとビジュアルpom.xml
エディタが統合されており、依存関係の管理に便利です。
Maven は依存関係ロックをサポートしていません。でバージョン範囲を指定することは可能ですがpom.xml
、ビルドを再現できるように、常に正確なバージョンを使用することをお勧めします。
Maven は一時的な依存関係を自動的にインストールしますが、インストールできるパッケージのコピーは 1 つだけです。POM ツリーで最も高いバージョンが選択されている。アプリケーションには、インストールされるパッケージのバージョンで常に最後の単語があります。
Maven は、プロジェクトを構築 (mvn compile) またはパッケージ化 (mvn package) するたびに、依存関係を自動的にインストールまたは更新します。CDK Toolkit は、実行するたびに自動的にこれを行うため、通常、Maven を手動で呼び出す必要はありません。
AWS CDK Java のイディオム
プロップ
すべての AWS Construct Library クラスは、3 つの引数を使用してインスタンス化されます。3 つの引数は、コンストラクトが定義されているスコープ (コンストラクトツリー内の親)、id 、およびprops です。これは、コンストラクトが作成するリソースの設定に使用するキーと値のペアのバンドルです。他のクラスやメソッドでは、引数に「属性のバンドル」パターンも使用します。
Java では、props は Builder パターン Bucket
コンストラクト (Amazon S3 バケットを表す) は、 のインスタンスをプロップしますBucketProps
。
BucketProps
クラス (すべての AWS コンストラクトライブラリ props クラスと同様) には、 という内部クラスがありますBuilder
。BucketProps.Builder
タイプには、BucketProps
インスタンスのさまざまなプロパティを設定する方法が用意されています。各メソッドはBuilder
インスタンスを返すため、メソッド呼び出しを連鎖させて複数のプロパティを設定できます。チェーンの最後に、 を呼び出しbuild()
てBucketProps
オブジェクトを実際に生成します。
Bucket bucket = new Bucket(this, "amzn-s3-demo-bucket", new BucketProps.Builder() .versioned(true) .encryption(BucketEncryption.KMS_MANAGED) .build());
構造体、および props のようなオブジェクトを最終引数とする他のクラスは、ショートカットを提供します。クラスにはBuilder
独自の があり、1 つのステップでインスタンス化して、その props オブジェクトをインスタンス化します。これにより、 BucketProps
と の両方を明示的にインスタンス化 (例えば) する必要Bucket
はなく、props タイプにインポートする必要はありません。
Bucket bucket = Bucket.Builder.create(this, "amzn-s3-demo-bucket") .versioned(true) .encryption(BucketEncryption.KMS_MANAGED) .build();
既存のコンストラクトから独自のコンストラクトを派生させる場合は、追加のプロパティを受け入れることをお勧めします。これらのビルダーパターンに従うことをお勧めします。ただし、これはコンストラクトクラスのサブクラス化ほど簡単ではありません。2 つの新しいBuilder
クラスの可動部分を自分で指定する必要があります。コンストラクトに 1 つ以上の追加の引数を受け入れるだけでよい場合があります。引数がオプションの場合、追加のコンストラクターを指定する必要があります。
汎用構造
一部の ではAPIs、 は メソッドへの入力として JavaScript 配列または未入力のオブジェクト AWS CDK を使用します。(例えば、 AWS CodeBuildの BuildSpec.fromObject()
メソッドを参照してください。) Java では、これらのオブジェクトは として表されますjava.util.Map<String, Object>
。値がすべての文字列である場合は、 を使用できますMap<String, String>
。
Java は、他の言語のように、このようなコンテナのリテラルを記述する方法を提供しません。Java 9 以降では、 java.util.Map.of()
java.util.Map.of( "base-directory", "dist", "files", "LambdaStack.template.json" )
10 を超えるエントリを含むマップを作成するには、 を使用しますjava.util.Map.ofEntries()
Java 8 を使用している場合は、次のような独自の方法を指定できます。
JavaScript 配列は Java List<String>
で List<Object>
または として表されます。この方法はjava.util.Arrays.asList
、短い を定義するのに便利ですList
。
List<String> cmds = Arrays.asList("cd lambda", "npm install", "npm install typescript")
欠落した値
Java では、props などの AWS CDK オブジェクトの欠損値は で表されますnull
。値を使用する前に、値が含まれていることを確認するnull
ために、 の値をすべて明示的にテストする必要があります。Java には、他の言語と同様に NULL 値を処理するのに役立つ「構文的なシュガー」はありません。Apache ObjectUtilの defaultIfNull
CDK アプリケーションの構築と実行
は、アプリを実行する前に AWS CDK 自動的にコンパイルします。ただし、アプリケーションを手動で構築してエラーをチェックし、テストを実行すると便利です。これは、 で IDE (Eclipse で Control-B を押すなど)、またはプロジェクトのルートディレクトリにあるときにコマンドプロンプトmvn compile
で発行することで行うことができます。
コマンドプロンプトmvn test
で を実行して、書き込んだテストを実行します。