AWS CDK proyek - AWS Cloud Development Kit (AWS CDK) v2

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.

AWS CDK proyek

Sebuah AWS Cloud Development Kit (AWS CDK) proyek mewakili file dan folder yang berisi CDK kode Anda. Konten akan bervariasi berdasarkan bahasa pemrograman Anda.

Anda dapat membuat AWS CDK proyek Anda secara manual atau dengan AWS CDK perintah Command Line Interface (AWS CDK CLI)cdk init. Dalam topik ini, kita akan merujuk pada struktur proyek dan konvensi penamaan file dan folder yang dibuat oleh file. AWS CDK CLI Anda dapat menyesuaikan dan mengatur CDK proyek Anda agar sesuai dengan kebutuhan Anda.

catatan

Struktur proyek yang dibuat oleh AWS CDK CLI dapat bervariasi antar versi dari waktu ke waktu.

File dan folder universal

.git

Jika Anda telah git menginstal, AWS CDK CLI secara otomatis menginisialisasi Git repositori untuk proyek Anda. .gitDirektori berisi informasi tentang repositori.

.gitignore

File teks yang digunakan oleh Git untuk menentukan file dan folder untuk diabaikan.

README.md

File teks yang memberi Anda panduan dasar dan informasi penting untuk mengelola AWS CDK proyek Anda. Ubah file ini seperlunya untuk mendokumentasikan informasi penting mengenai CDK proyek Anda.

cdk.json

File konfigurasi untuk file AWS CDK. File ini memberikan instruksi AWS CDK CLI tentang cara menjalankan aplikasi Anda.

File dan folder khusus bahasa

File dan folder berikut unik untuk setiap bahasa pemrograman yang didukung.

TypeScript

Berikut ini adalah contoh proyek yang dibuat dalam my-cdk-ts-project direktori menggunakan cdk init --language typescript perintah:

my-cdk-ts-project ├── .git ├── .gitignore ├── .npmignore ├── README.md ├── bin │ └── my-cdk-ts-project.ts ├── cdk.json ├── jest.config.js ├── lib │ └── my-cdk-ts-project-stack.ts ├── node_modules ├── package-lock.json ├── package.json ├── test │ └── my-cdk-ts-project.test.ts └── tsconfig.json
.npmignore

File yang menentukan file dan folder mana yang harus diabaikan saat menerbitkan paket ke npm registri. File ini mirip dengan.gitignore, tetapi khusus untuk npm paket.

tempat sampah/.ts my-cdk-ts-project

File aplikasi mendefinisikan CDK aplikasi Anda. CDKproyek dapat berisi satu atau lebih file aplikasi. File aplikasi disimpan di bin folder.

Berikut ini adalah contoh file aplikasi dasar yang mendefinisikan CDK aplikasi:

#!/usr/bin/env node import 'source-map-support/register'; import * as cdk from 'aws-cdk-lib'; import { MyCdkTsProjectStack } from '../lib/my-cdk-ts-project-stack'; const app = new cdk.App(); new MyCdkTsProjectStack(app, 'MyCdkTsProjectStack');
jest.config.js

File konfigurasi untukJest. Jestadalah kerangka JavaScript pengujian yang populer.

lib/ my-cdk-ts-project -stack.ts

File stack mendefinisikan CDK tumpukan Anda. Dalam tumpukan Anda, Anda mendefinisikan AWS sumber daya dan properti menggunakan konstruksi.

Berikut ini adalah contoh file stack dasar yang mendefinisikan CDK tumpukan:

import * as cdk from 'aws-cdk-lib'; import { Construct } from 'constructs'; export class MyCdkTsProjectStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // code that defines your resources and properties go here } }
node_modules

Folder umum dalam Node.js proyek yang berisi dependensi untuk proyek Anda.

package-lock.json

File metadata yang bekerja dengan package.json file untuk mengelola versi dependensi.

package.json

File metadata yang biasa digunakan dalam Node.js proyek. File ini berisi informasi tentang CDK proyek Anda seperti nama proyek, definisi skrip, dependensi, dan informasi tingkat proyek impor lainnya.

uji/ .test.ts my-cdk-ts-project

Folder pengujian dibuat untuk mengatur pengujian untuk CDK proyek Anda. File uji sampel juga dibuat.

Anda dapat menulis tes TypeScript dan menggunakan Jest untuk mengkompilasi TypeScript kode Anda sebelum menjalankan tes.

tsconfig.json

File konfigurasi yang digunakan dalam TypeScript proyek yang menentukan opsi kompiler dan pengaturan proyek.

JavaScript

Berikut ini adalah contoh proyek yang dibuat dalam my-cdk-js-project direktori menggunakan cdk init --language javascript perintah:

my-cdk-js-project ├── .git ├── .gitignore ├── .npmignore ├── README.md ├── bin │ └── my-cdk-js-project.js ├── cdk.json ├── jest.config.js ├── lib │ └── my-cdk-js-project-stack.js ├── node_modules ├── package-lock.json ├── package.json └── test └── my-cdk-js-project.test.js
.npmignore

File yang menentukan file dan folder mana yang harus diabaikan saat menerbitkan paket ke npm registri. File ini mirip dengan.gitignore, tetapi khusus untuk npm paket.

sampah/.js my-cdk-js-project

File aplikasi mendefinisikan CDK aplikasi Anda. CDKproyek dapat berisi satu atau lebih file aplikasi. File aplikasi disimpan di bin folder.

Berikut ini adalah contoh file aplikasi dasar yang mendefinisikan CDK aplikasi:

#!/usr/bin/env node const cdk = require('aws-cdk-lib'); const { MyCdkJsProjectStack } = require('../lib/my-cdk-js-project-stack'); const app = new cdk.App(); new MyCdkJsProjectStack(app, 'MyCdkJsProjectStack');
jest.config.js

File konfigurasi untukJest. Jestadalah kerangka JavaScript pengujian yang populer.

lib/ -stack.js my-cdk-js-project

File stack mendefinisikan CDK tumpukan Anda. Dalam tumpukan Anda, Anda mendefinisikan AWS sumber daya dan properti menggunakan konstruksi.

Berikut ini adalah contoh file stack dasar yang mendefinisikan CDK tumpukan:

const { Stack, Duration } = require('aws-cdk-lib'); class MyCdkJsProjectStack extends Stack { constructor(scope, id, props) { super(scope, id, props); // code that defines your resources and properties go here } } module.exports = { MyCdkJsProjectStack }
node_modules

Folder umum dalam Node.js proyek yang berisi dependensi untuk proyek Anda.

package-lock.json

File metadata yang bekerja dengan package.json file untuk mengelola versi dependensi.

package.json

File metadata yang biasa digunakan dalam Node.js proyek. File ini berisi informasi tentang CDK proyek Anda seperti nama proyek, definisi skrip, dependensi, dan informasi tingkat proyek impor lainnya.

uji/ .test.js my-cdk-js-project

Folder pengujian dibuat untuk mengatur pengujian untuk CDK proyek Anda. File uji sampel juga dibuat.

Anda dapat menulis tes JavaScript dan menggunakan Jest untuk mengkompilasi JavaScript kode Anda sebelum menjalankan tes.

Python

Berikut ini adalah contoh proyek yang dibuat dalam my-cdk-py-project direktori menggunakan cdk init --language python perintah:

my-cdk-py-project ├── .git ├── .gitignore ├── .venv ├── README.md ├── app.py ├── cdk.json ├── my_cdk_py_project │ ├── __init__.py │ └── my_cdk_py_project_stack.py ├── requirements-dev.txt ├── requirements.txt ├── source.bat └── tests ├── __init__.py └── unit
.venv

CDKCLISecara otomatis menciptakan lingkungan virtual untuk proyek Anda. .venvDirektori mengacu pada lingkungan virtual ini.

app.py

File aplikasi mendefinisikan CDK aplikasi Anda. CDKproyek dapat berisi satu atau lebih file aplikasi.

Berikut ini adalah contoh file aplikasi dasar yang mendefinisikan CDK aplikasi:

#!/usr/bin/env python3 import os import aws_cdk as cdk from my_cdk_py_project.my_cdk_py_project_stack import MyCdkPyProjectStack app = cdk.App() MyCdkPyProjectStack(app, "MyCdkPyProjectStack") app.synth()
my_cdk_py_project

Direktori yang berisi file tumpukan Anda. CDKCLIIni menciptakan yang berikut di sini:

  • __init__.py — File definisi Python paket kosong.

  • my_cdk_py_project— File yang mendefinisikan CDK tumpukan Anda. Anda kemudian mendefinisikan AWS sumber daya dan properti dalam tumpukan menggunakan konstruksi.

Berikut ini adalah contoh file stack:

from aws_cdk import Stack from constructs import Construct class MyCdkPyProjectStack(Stack): def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: super().__init__(scope, construct_id, **kwargs) # code that defines your resources and properties go here
requirements-dev.txt

File mirip denganrequirements.txt, tetapi digunakan untuk mengelola dependensi khusus untuk tujuan pengembangan daripada produksi.

requirements.txt

File umum yang digunakan dalam Python proyek untuk menentukan dan mengelola dependensi proyek.

source.bat

Batch file untuk Windows itu digunakan untuk mengatur lingkungan Python virtual.

tes

Direktori yang berisi pengujian untuk CDK proyek Anda.

Berikut ini adalah contoh dari unit test:

import aws_cdk as core import aws_cdk.assertions as assertions from my_cdk_py_project.my_cdk_py_project_stack import MyCdkPyProjectStack def test_sqs_queue_created(): app = core.App() stack = MyCdkPyProjectStack(app, "my-cdk-py-project") template = assertions.Template.from_stack(stack) template.has_resource_properties("AWS::SQS::Queue", { "VisibilityTimeout": 300 })
Java

Berikut ini adalah contoh proyek yang dibuat dalam my-cdk-java-project direktori menggunakan cdk init --language java perintah:

my-cdk-java-project ├── .git ├── .gitignore ├── README.md ├── cdk.json ├── pom.xml └── src ├── main └── test
pom.xml

File yang berisi informasi konfigurasi dan metadata tentang proyek AndaCDK. File ini adalah bagian dariMaven.

src/utama

Direktori yang berisi file aplikasi dan tumpukan Anda.

Berikut ini adalah contoh file aplikasi:

package com.myorg; import software.amazon.awscdk.App; import software.amazon.awscdk.Environment; import software.amazon.awscdk.StackProps; import java.util.Arrays; public class MyCdkJavaProjectApp { public static void main(final String[] args) { App app = new App(); new MyCdkJavaProjectStack(app, "MyCdkJavaProjectStack", StackProps.builder() .build()); app.synth(); } }

Berikut ini adalah contoh file stack:

package com.myorg; import software.constructs.Construct; import software.amazon.awscdk.Stack; import software.amazon.awscdk.StackProps; public class MyCdkJavaProjectStack extends Stack { public MyCdkJavaProjectStack(final Construct scope, final String id) { this(scope, id, null); } public MyCdkJavaProjectStack(final Construct scope, final String id, final StackProps props) { super(scope, id, props); // code that defines your resources and properties go here } }
src/tes

Direktori yang berisi file pengujian Anda. Berikut adalah contohnya:

package com.myorg; import software.amazon.awscdk.App; import software.amazon.awscdk.assertions.Template; import java.io.IOException; import java.util.HashMap; import org.junit.jupiter.api.Test; public class MyCdkJavaProjectTest { @Test public void testStack() throws IOException { App app = new App(); MyCdkJavaProjectStack stack = new MyCdkJavaProjectStack(app, "test"); Template template = Template.fromStack(stack); template.hasResourceProperties("AWS::SQS::Queue", new HashMap<String, Number>() {{ put("VisibilityTimeout", 300); }}); } }
C#

Berikut ini adalah contoh proyek yang dibuat dalam my-cdk-csharp-project direktori menggunakan cdk init --language csharp perintah:

my-cdk-csharp-project ├── .git ├── .gitignore ├── README.md ├── cdk.json └── src ├── MyCdkCsharpProject └── MyCdkCsharpProject.sln
src/ MyCdkCsharpProject

Direktori yang berisi file aplikasi dan tumpukan Anda.

Berikut ini adalah contoh file aplikasi:

using Amazon.CDK; using System; using System.Collections.Generic; using System.Linq; namespace MyCdkCsharpProject { sealed class Program { public static void Main(string[] args) { var app = new App(); new MyCdkCsharpProjectStack(app, "MyCdkCsharpProjectStack", new StackProps{}); app.Synth(); } } }

Berikut ini adalah contoh file stack:

using Amazon.CDK; using Constructs; namespace MyCdkCsharpProject { public class MyCdkCsharpProjectStack : Stack { internal MyCdkCsharpProjectStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props) { // code that defines your resources and properties go here } } }

Direktori ini juga berisi yang berikut:

  • GlobalSuppressions.cs— File yang digunakan untuk menekan peringatan atau kesalahan kompiler tertentu di seluruh proyek Anda.

  • .csproj— file XML berbasis yang digunakan untuk menentukan pengaturan proyek, dependensi, dan membangun konfigurasi.

src/ MyCdkCsharpProject .sln

Microsoft Visual Studio Solution Filedigunakan untuk mengatur dan mengelola proyek terkait.

Go

Berikut ini adalah contoh proyek yang dibuat dalam my-cdk-go-project direktori menggunakan cdk init --language go perintah:

my-cdk-go-project ├── .git ├── .gitignore ├── README.md ├── cdk.json ├── go.mod ├── my-cdk-go-project.go └── my-cdk-go-project_test.go
go.mod

File yang berisi informasi modul dan digunakan untuk mengelola dependensi dan pembuatan versi untuk proyek Anda. Go

my-cdk-go-project.pergi

File yang mendefinisikan CDK aplikasi dan tumpukan Anda.

Berikut adalah contohnya:

package main import ( "github.com/aws/aws-cdk-go/awscdk/v2" "github.com/aws/constructs-go/constructs/v10" "github.com/aws/jsii-runtime-go" ) type MyCdkGoProjectStackProps struct { awscdk.StackProps } func NewMyCdkGoProjectStack(scope constructs.Construct, id string, props *MyCdkGoProjectStackProps) awscdk.Stack { var sprops awscdk.StackProps if props != nil { sprops = props.StackProps } stack := awscdk.NewStack(scope, &id, &sprops) // The code that defines your resources and properties go here return stack } func main() { defer jsii.Close() app := awscdk.NewApp(nil) NewMyCdkGoProjectStack(app, "MyCdkGoProjectStack", &MyCdkGoProjectStackProps{ awscdk.StackProps{ Env: env(), }, }) app.Synth(nil) } func env() *awscdk.Environment { return nil }
my-cdk-go-project_test.go

File yang mendefinisikan uji sampel.

Berikut adalah contohnya:

package main import ( "testing" "github.com/aws/aws-cdk-go/awscdk/v2" "github.com/aws/aws-cdk-go/awscdk/v2/assertions" "github.com/aws/jsii-runtime-go" ) func TestMyCdkGoProjectStack(t *testing.T) { // GIVEN app := awscdk.NewApp(nil) // WHEN stack := NewMyCdkGoProjectStack(app, "MyStack", nil) // THEN template := assertions.Template_FromStack(stack, nil) template.HasResourceProperties(jsii.String("AWS::SQS::Queue"), map[string]interface{}{ "VisibilityTimeout": 300, }) }