選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

在 Java AWS CDK 中使用

焦點模式
在 Java AWS CDK 中使用 - AWS Cloud Development Kit (AWS CDK) v2

這是 AWS CDK v2 開發人員指南。較舊的 CDK v1 已於 2022 年 6 月 1 日進入維護,並於 2023 年 6 月 1 日結束支援。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

這是 AWS CDK v2 開發人員指南。較舊的 CDK v1 已於 2022 年 6 月 1 日進入維護,並於 2023 年 6 月 1 日結束支援。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Java 是 完全支援的用戶端語言, AWS CDK 且被視為穩定。您可以使用熟悉的工具在 Java 中開發 AWS CDK 應用程式,包括 JDK (Oracle 的 或 OpenJDK 分佈,例如 Amazon Corretto) 和 Apache Maven。

AWS CDK 支援 Java 8 和更新版本。不過,我們建議您使用最新版本,因為較新版本的語言包含開發 AWS CDK 應用程式特別方便的改進。例如,Java 9 引入 Map.of()方法 (宣告雜湊圖的便利方式,該雜湊圖會在 TypeScript 中寫入為物件常值)。Java 10 使用 var關鍵字引入本機類型推論。

注意

本開發人員指南中的大多數程式碼範例都適用於 Java 8。幾個範例使用 Map.of();這些範例包含註解,指出他們需要 Java 9。

您可以使用任何文字編輯器或可讀取 Maven 專案的 Java IDE,來處理您的 AWS CDK 應用程式。我們在本指南中提供 Eclipse 提示,但 IntelliJ IDEA、NetBeans 和其他 IDEs 可以匯入 Maven 專案,並可用於在 Java 中開發 AWS CDK 應用程式。

可以使用 Java 以外的 JVM 託管語言撰寫 AWS CDK 應用程式 (例如 Kotlin、Groovy、Clojure 或 Scala),但體驗可能不特別特殊,而且我們無法為這些語言提供任何支援。

開始使用 Java

若要使用 AWS CDK,您必須擁有 AWS 帳戶和登入資料,並已安裝 Node.js 和 AWS CDK Toolkit。請參閱 入門 AWS CDK

Java AWS CDK 應用程式需要 Java 8 (v1.8) 或更新版本。我們建議使用 Amazon Corretto,但您可以使用任何 OpenJDK 分佈或 Oracle 的 JDK。您也需要 Apache Maven 3.5 或更新版本。您也可以使用 Gradle 等工具,但 AWS CDK Toolkit 產生的應用程式骨架是 Maven 專案。

注意

第三方語言棄用:只有在廠商或社群共用其 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 中,選擇檔案 > 匯入 > Maven > 現有 Maven 專案。確定專案設定設定為使用 Java 8 (1.8)。

管理 AWS 建構程式庫模組

使用 Maven 來安裝 AWS Construct Library 套件,這些套件位於群組 中software.amazon.awscdk。大多數建構都位於成品 中aws-cdk-lib,預設會新增至新的 Java 專案。仍在開發更高層級 CDK 支援之服務的模組,採用個別的「實驗性」套件,名為其服務名稱的短版本 (無 AWS 或 Amazon 字首)。搜尋 Maven 中央儲存庫,尋找所有 AWS CDK 和 AWS 建構模組程式庫的名稱。

注意

CDK API 參考的 Java 版本也會顯示套件名稱。

有些服務「 AWS 建構程式庫支援位於多個命名空間中。例如,Amazon Route 53 的功能分為 software.amazon.awscdk.route53route53-patternsroute53resolverroute53-targets

主 AWS CDK 套件會以 Java 程式碼匯入為 software.amazon.awscdk。 AWS Construct Library 中各種服務的模組位於 下software.amazon.awscdk.services,且名稱與其 Maven 套件名稱類似。例如,Amazon S3 模組的命名空間為 software.amazon.awscdk.services.s3

我們建議您為每個 Java 來源檔案中使用的每個 AWS Construct Library 類別撰寫單獨的 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典型 CDK Java 應用程式的 區段。

<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 會自動安裝暫時性相依性,但每個套件只能有一個已安裝的副本。已選取 POM 樹狀目錄中指定的最高版本;應用程式一律在安裝的套件版本中具有最後一個字。

Maven 會在您建置 (mvn compile) 或封裝 (mvn package) 專案時自動安裝或更新相依性。CDK Toolkit 會在每次執行時自動執行此操作,因此通常不需要手動叫用 Maven。

AWS CDK Java 中的慣用語

道具

所有 AWS 建構程式庫類別都是使用三個引數來執行個體化:定義建構體的範圍 (其在建構樹中的父系)、idprops,這是建構體用來設定其建立之資源的金鑰/值對套件。其他類別和方法也會使用「屬性組合」模式做為引數。

在 Java 中,props 是使用 Builder 模式來表示。每個建構類型都有對應的道具類型;例如,建構 Bucket (代表 Amazon S3 儲存貯體) 會將其視為其道具 執行個體BucketProps

BucketProps 類別 (如同每個 AWS Construct Library props 類別) 具有稱為 的內部類別BuilderBucketProps.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自己的 ,可在一個步驟中將其及其道具物件執行個體化。如此一來,您便不需要明確執行個體化 (例如) BucketPropsBucket,而且不需要匯入 props 類型。

Bucket bucket = Bucket.Builder.create(this, "amzn-s3-demo-bucket") .versioned(true) .encryption(BucketEncryption.KMS_MANAGED) .build();

從現有的建構中衍生自己的建構時,您可能想要接受其他屬性。我們建議您遵循這些建置器模式。不過,這不像將建構類別子分類一樣簡單。您必須自行提供兩個新Builder類別的移動部分。您可能只希望您的建構接受一或多個額外的引數。當 引數為選用時,您應該提供額外的建構子。

一般結構

在某些 APIs中, AWS CDK 會使用 JavaScript 陣列或未輸入的物件做為方法的輸入。(例如,請參閱 AWS CodeBuild的 BuildSpec.fromObject()方法。) 在 Java 中,這些物件會以 表示java.util.Map<String, Object>。如果這些值都是字串,您可以使用 Map<String, String>

Java 不提供撰寫此類容器常值的方法,就像其他一些語言一樣。在 Java 9 和更新版本中,您可以使用 java.util.Map.of() 來輕鬆地定義最多 10 個項目的映射,並內嵌這些呼叫之一。

java.util.Map.of( "base-directory", "dist", "files", "LambdaStack.template.json" )

若要建立超過十個項目的映射,請使用 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 中,prop 等 AWS CDK 物件中的遺失值會以 表示null。您必須明確測試任何值,null以確保它包含值,然後再對它執行任何操作。Java 沒有協助處理 Null 值的「語法糖」,就像其他一些語言一樣。在某些情況下,您可能會發現 Apache ObjectUtil 的 defaultIfNullfirstNonNull 很有用。或者,撰寫您自己的靜態協助程式方法,讓您更輕鬆地處理潛在的 null 值,並讓程式碼更易讀取。

建置和執行 CDK 應用程式

會在執行應用程式之前 AWS CDK 自動編譯應用程式。不過,手動建置您的應用程式以檢查錯誤和執行測試會很有用。您可以在 IDE 中執行此操作 (例如,在 Eclipse 中按下 Control-B),或在專案根目錄中mvn compile透過命令提示字元發出。

在命令提示mvn test中執行 ,以執行您撰寫的任何測試。

下一個主題:

在 C# 中

上一個主題:

在 Python 中
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。