Ini adalah Panduan Pengembang AWS CDK v2. CDKV1 yang lebih lama memasuki pemeliharaan pada 1 Juni 2022 dan mengakhiri dukungan pada 1 Juni 2023.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Bekerja dengan AWS CDK di Jawa
Java adalah bahasa klien yang sepenuhnya didukung untuk AWS CDK dan dianggap stabil. Anda dapat mengembangkan AWS CDK aplikasi di Java menggunakan alat yang sudah dikenal, termasuk JDK (Oracle's, atau JDK distribusi Terbuka seperti Amazon Corretto) dan Apache Maven.
AWS CDK Mendukung Java 8 dan yang lebih baru. Kami merekomendasikan untuk menggunakan versi terbaru yang Anda bisa, karena versi bahasa yang lebih baru mencakup peningkatan yang sangat nyaman untuk mengembangkan AWS CDK aplikasi. Misalnya, Java 9 memperkenalkan Map.of()
metode (cara mudah untuk mendeklarasikan hashmap yang akan ditulis sebagai literal objek). TypeScript Java 10 memperkenalkan inferensi tipe lokal menggunakan kata kunci. var
catatan
Sebagian besar contoh kode dalam Panduan Pengembang ini bekerja dengan Java 8. Beberapa contoh digunakanMap.of()
; contoh-contoh ini termasuk komentar yang mencatat bahwa mereka memerlukan Java 9.
Anda dapat menggunakan editor teks apa pun, atau Java IDE yang dapat membaca proyek Maven, untuk mengerjakan aplikasi Anda AWS CDK . Kami menyediakan petunjuk Eclipse
Dimungkinkan untuk menulis AWS CDK aplikasi dalam bahasa yang JVM di-host selain Java (misalnya, Kotlin, Groovy, Clojure, atau Scala), tetapi pengalamannya mungkin tidak terlalu idiomatis, dan kami tidak dapat memberikan dukungan apa pun untuk bahasa-bahasa ini.
Topik
Memulai dengan Java
Untuk bekerja dengan AWS CDK, Anda harus memiliki AWS akun dan kredensional dan telah menginstal Node.js dan Toolkit. AWS CDK Lihat Memulai dengan AWS CDK.
AWS CDK Aplikasi Java membutuhkan Java 8 (v1.8) atau yang lebih baru. Kami merekomendasikan Amazon Corretto
catatan
Pengakhiran bahasa pihak ketiga: versi bahasa hanya didukung hingga EOL (End Of Life) dibagikan oleh vendor atau komunitas dan dapat berubah sewaktu-waktu dengan pemberitahuan sebelumnya.
Membuat proyek
Anda membuat AWS CDK proyek baru dengan memanggil cdk init
dalam direktori kosong. Gunakan --language
opsi dan tentukanjava
:
mkdir my-project cd my-project cdk init app --language java
cdk init
menggunakan nama folder proyek untuk memberi nama berbagai elemen proyek, termasuk kelas, subfolder, dan file. Tanda hubung dalam nama folder diubah menjadi garis bawah. Namun, nama tersebut harus mengikuti bentuk pengenal Java; misalnya, seharusnya tidak dimulai dengan angka atau berisi spasi.
Proyek yang dihasilkan mencakup referensi ke paket software.amazon.awscdk
Maven. Ini dan dependensinya diinstal secara otomatis oleh Maven.
Jika Anda menggunakanIDE, Anda sekarang dapat membuka atau mengimpor proyek. Di Eclipse, misalnya, pilih File > Import > Maven > Existing Maven Projects. Pastikan bahwa pengaturan proyek diatur untuk menggunakan Java 8 (1.8).
Mengelola AWS modul Construct Library
Gunakan Maven untuk menginstal paket AWS Construct Library, yang ada di grup. software.amazon.awscdk
Sebagian besar konstruksi berada di artefakaws-cdk-lib
, yang ditambahkan ke proyek Java baru secara default. Modul untuk layanan yang CDK dukungan tingkat lebih tinggi masih dikembangkan berada dalam paket “eksperimental” terpisah, dinamai dengan versi pendek (tidak ada atau awalan AWS Amazon) dari nama layanan mereka. Cari Repositori Pusat Maven
catatan
Edisi Java dari CDK API Referensi juga menunjukkan nama-nama paket.
Dukungan AWS Construct Library beberapa layanan ada di lebih dari satu namespace. Misalnya, Amazon Route 53 memiliki fungsinya dibagi menjadisoftware.amazon.awscdk.route53
,route53-patterns
,route53resolver
, danroute53-targets
.
AWS CDK Paket utama diimpor dalam kode Java sebagaisoftware.amazon.awscdk
. Modul untuk berbagai layanan di Perpustakaan AWS Konstruksi hidup di bawah software.amazon.awscdk.services
dan diberi nama yang mirip dengan nama paket Maven mereka. Misalnya, namespace modul Amazon S3 adalah. software.amazon.awscdk.services.s3
Sebaiknya tulis import
pernyataan Java terpisah untuk setiap kelas AWS Construct Library yang Anda gunakan di setiap file sumber Java Anda, dan menghindari impor wildcard. Anda selalu dapat menggunakan nama tipe yang sepenuhnya memenuhi syarat (termasuk namespace-nya) tanpa pernyataan. import
Jika aplikasi Anda bergantung pada paket eksperimental, edit proyek Anda pom.xml
dan tambahkan <dependency>
elemen baru dalam <dependencies>
wadah. Misalnya, <dependency>
elemen berikut menentukan modul pustaka konstruksi CodeStar eksperimental:
<dependency> <groupId>software.amazon.awscdk</groupId> <artifactId>codestar-alpha</artifactId> <version>2.0.0-alpha.10</version> </dependency>
Tip
Jika Anda menggunakan JavaIDE, mungkin memiliki fitur untuk mengelola dependensi Maven. Namun, kami merekomendasikan untuk mengedit pom.xml
secara langsung, kecuali Anda benar-benar yakin IDE fungsionalitasnya cocok dengan apa yang akan Anda lakukan dengan tangan.
Mengelola dependensi di Java
Di Java, dependensi ditentukan pom.xml
dan diinstal menggunakan Maven. <dependencies>
Wadah mencakup <dependency>
elemen untuk setiap paket. Berikut ini adalah bagian dari pom.xml
untuk aplikasi CDK Java yang khas.
<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>
Tip
Banyak Java IDEs telah mengintegrasikan dukungan Maven dan pom.xml
editor visual, yang mungkin Anda temukan nyaman untuk mengelola dependensi.
Maven tidak mendukung penguncian ketergantungan. Meskipun dimungkinkan untuk menentukan rentang versipom.xml
, kami sarankan Anda selalu menggunakan versi yang tepat agar build Anda tetap dapat diulang.
Maven secara otomatis menginstal dependensi transitif, tetapi hanya ada satu salinan yang diinstal dari setiap paket. Versi yang ditentukan tertinggi di POM pohon dipilih; aplikasi selalu memiliki kata terakhir dalam versi paket apa yang diinstal.
Maven secara otomatis menginstal atau memperbarui dependensi Anda setiap kali Anda membangun (mvn compile) atau package () proyek Anda. mvn package CDKToolkit melakukan ini secara otomatis setiap kali Anda menjalankannya, jadi umumnya tidak perlu memanggil Maven secara manual.
AWS CDK idiom di Jawa
Alat Peraga
Semua kelas AWS Construct Library dipakai menggunakan tiga argumen: ruang lingkup di mana konstruksi sedang didefinisikan (induknya di pohon konstruksi), id, dan props, bundel pasangan kunci/nilai yang digunakan konstruksi untuk mengkonfigurasi sumber daya yang dibuatnya. Kelas dan metode lain juga menggunakan pola “bundel atribut” untuk argumen.
Di Java, alat peraga diekspresikan menggunakan pola BuilderBucket
konstruksi (yang mewakili bucket Amazon S3) mengambil sebagai props sebagai instance dari. BucketProps
BucketProps
Kelas (seperti setiap kelas props AWS Construct Library) memiliki kelas dalam yang disebut. Builder
BucketProps.Builder
Jenis ini menawarkan metode untuk mengatur berbagai properti dari sebuah BucketProps
instance. Setiap metode mengembalikan Builder
instance, sehingga panggilan metode dapat dirantai untuk mengatur beberapa properti. Di akhir rantai, Anda memanggil build()
untuk benar-benar menghasilkan BucketProps
objek.
Bucket bucket = new Bucket(this, "amzn-s3-demo-bucket", new BucketProps.Builder() .versioned(true) .encryption(BucketEncryption.KMS_MANAGED) .build());
Konstruksi, dan kelas lain yang mengambil objek seperti alat peraga sebagai argumen terakhir mereka, menawarkan jalan pintas. Kelas memiliki sendiri Builder
yang membuat instance dan objek props dalam satu langkah. Dengan cara ini, Anda tidak perlu secara eksplisit membuat instance (misalnya) keduanya BucketProps
dan Bucket
—dan Anda tidak memerlukan impor untuk jenis alat peraga.
Bucket bucket = Bucket.Builder.create(this, "amzn-s3-demo-bucket") .versioned(true) .encryption(BucketEncryption.KMS_MANAGED) .build();
Saat menurunkan konstruksi Anda sendiri dari konstruksi yang ada, Anda mungkin ingin menerima properti tambahan. Kami menyarankan Anda mengikuti pola pembangun ini. Namun, ini tidak sesederhana mensubklasifikasikan kelas konstruksi. Anda harus menyediakan sendiri bagian yang bergerak dari dua Builder
kelas baru. Anda mungkin lebih suka membuat konstruksi Anda menerima satu atau lebih argumen tambahan. Anda harus memberikan konstruktor tambahan ketika argumen bersifat opsional.
Struktur generik
Dalam beberapaAPIs, AWS CDK menggunakan JavaScript array atau objek untyped sebagai input ke metode. (Lihat, misalnya, AWS CodeBuildBuildSpec.fromObject()
metode.) Di Jawa, objek-objek ini direpresentasikan sebagaijava.util.Map<String, Object>
. Dalam kasus di mana nilai-nilai semua string, Anda dapat menggunakanMap<String, String>
.
Java tidak menyediakan cara untuk menulis literal untuk wadah seperti yang dilakukan beberapa bahasa lain. Di Java 9 dan yang lebih baru, Anda dapat menggunakan java.util.Map.of()
java.util.Map.of( "base-directory", "dist", "files", "LambdaStack.template.json" )
Untuk membuat peta dengan lebih dari sepuluh entri, gunakan java.util.Map.ofEntries()
Jika Anda menggunakan Java 8, Anda dapat memberikan metode Anda sendiri yang mirip dengan ini.
JavaScript array direpresentasikan sebagai List<Object>
atau List<String>
di Jawa. Metode java.util.Arrays.asList
ini nyaman untuk mendefinisikan List
s pendek.
List<String> cmds = Arrays.asList("cd lambda", "npm install", "npm install typescript")
Nilai yang hilang
Di Jawa, nilai yang hilang dalam AWS CDK objek seperti alat peraga diwakili olehnull
. Anda harus secara eksplisit menguji nilai apa pun yang bisa null
untuk memastikannya berisi nilai sebelum melakukan apa pun dengannya. Java tidak memiliki “gula sintaksis” untuk membantu menangani nilai nol seperti yang dilakukan beberapa bahasa lain. Anda mungkin menemukan Apache ObjectUtil defaultIfNull
Membangun dan menjalankan CDK aplikasi
AWS CDK Secara otomatis mengompilasi aplikasi Anda sebelum menjalankannya. Namun, membangun aplikasi Anda secara manual dapat berguna untuk memeriksa kesalahan dan menjalankan pengujian. Anda dapat melakukan ini di IDE (misalnya, tekan Control-B di Eclipse) atau dengan mengeluarkan mvn compile
pada prompt perintah saat berada di direktori root proyek Anda.
Jalankan pengujian apa pun yang telah Anda tulis dengan menjalankan mvn test
pada prompt perintah.