Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Tutorial: Buat AWS CDK aplikasi pertama Anda

Mode fokus
Tutorial: Buat AWS CDK aplikasi pertama Anda - AWS Cloud Development Kit (AWS CDK) v2

Ini adalah Panduan Pengembang AWS CDK v2. CDK v1 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.

Ini adalah Panduan Pengembang AWS CDK v2. CDK v1 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.

Memulai dengan menggunakan AWS Cloud Development Kit (AWS CDK) by menggunakan AWS CDK Command Line Interface (AWS CDK CLI) untuk mengembangkan aplikasi CDK pertama Anda, bootstrap AWS lingkungan Anda, dan menerapkan aplikasi Anda. AWS

Prasyarat

Sebelum memulai tutorial ini, selesaikan semua langkah pengaturan diMemulai dengan AWS CDK.

Tentang tutorial ini

Dalam tutorial ini, Anda akan membuat dan menyebarkan aplikasi sederhana pada AWS penggunaan. AWS CDK Aplikasi ini terdiri dari AWS Lambda fungsi yang mengembalikan Hello World! pesan ketika dipanggil. Fungsi ini akan dipanggil melalui URL fungsi Lambda yang berfungsi sebagai titik akhir HTTP (S) khusus untuk fungsi Lambda Anda.

Melalui tutorial ini, Anda akan melakukan hal berikut:

  • Buat proyek Anda - Buat proyek CDK menggunakan CDK CLI cdk initperintah.

  • Konfigurasikan AWS lingkungan Anda — Konfigurasikan AWS lingkungan tempat Anda akan menerapkan aplikasi Anda.

  • Bootstrap AWS lingkungan Anda - Persiapkan AWS lingkungan Anda untuk penerapan dengan bootstrap menggunakan CDK CLI cdk bootstrapperintah.

  • Kembangkan aplikasi Anda — Gunakan konstruksi dari AWS Construct Library untuk menentukan fungsi Lambda dan resource URL fungsi Lambda Anda.

  • Mempersiapkan aplikasi Anda untuk penerapan — Gunakan CDK CLI untuk membangun aplikasi Anda dan mensintesis AWS CloudFormation template.

  • Menerapkan aplikasi Anda — Gunakan CDK CLI cdk deployperintah untuk menyebarkan aplikasi Anda dan menyediakan AWS sumber daya Anda.

  • Berinteraksi dengan aplikasi Anda — Berinteraksi dengan fungsi Lambda yang Anda gunakan dengan AWS memanggilnya dan menerima respons.

  • Ubah aplikasi Anda — Ubah fungsi Lambda Anda dan terapkan untuk mengimplementasikan perubahan Anda.

  • Hapus aplikasi Anda — Hapus semua sumber daya yang Anda buat dengan menggunakan CDK CLI cdk destroyperintah.

Langkah 1: Buat proyek CDK Anda

Pada langkah ini, Anda membuat proyek CDK baru. Proyek CDK harus berada di direktorinya sendiri, dengan dependensi modul lokalnya sendiri.

Untuk membuat proyek CDK
  1. Dari direktori awal pilihan Anda, buat dan navigasikan ke direktori bernamahello-cdk:

    $ mkdir hello-cdk && cd hello-cdk
    penting

    Pastikan untuk memberi nama direktori proyek Andahello-cdk, persis seperti yang ditunjukkan di sini. CDK CLI menggunakan nama direktori ini untuk menamai hal-hal dalam kode CDK Anda. Jika Anda menggunakan nama direktori yang berbeda, Anda akan mengalami masalah selama tutorial ini.

  2. Dari hello-cdk direktori, inisialisasi proyek CDK baru menggunakan CDK CLI cdk initperintah. Tentukan app template dan bahasa pemrograman pilihan Anda dengan --language opsi:

    TypeScript
    $ cdk init app --language typescript
    JavaScript
    $ cdk init app --language javascript
    Python
    $ cdk init app --language python

    Setelah aplikasi dibuat, masukkan juga dua perintah berikut. Ini mengaktifkan aplikasi Python lingkungan virtual dan menginstal dependensi AWS CDK inti.

    $ source .venv/bin/activate # On Windows, run `.\venv\Scripts\activate` instead $ python -m pip install -r requirements.txt
    Java
    $ cdk init app --language java

    Jika Anda menggunakan IDE, Anda sekarang dapat membuka atau mengimpor proyek. Masuk Eclipse, misalnya, pilih File > Import > Maven > Existing Maven Projects. Pastikan bahwa pengaturan proyek diatur untuk menggunakan Java 8 (1.8).

    C#
    $ cdk init app --language csharp

    Jika Anda menggunakan Visual Studio, buka file solusi di src direktori.

    Go
    $ cdk init app --language go

    Setelah aplikasi dibuat, masukkan juga perintah berikut untuk menginstal modul AWS Construct Library yang dibutuhkan aplikasi.

    $ go get
    $ cdk init app --language typescript

cdk initPerintah membuat struktur file dan folder dalam hello-cdk direktori untuk membantu mengatur kode sumber untuk aplikasi CDK Anda. Struktur file dan folder ini disebut proyek CDK Anda. Luangkan waktu sejenak untuk menjelajahi proyek CDK Anda.

Jika Anda memiliki Git diinstal, setiap proyek yang Anda buat menggunakan juga cdk init diinisialisasi sebagai Git repositori.

Selama inisialisasi proyek, CDK CLI membuat aplikasi CDK yang berisi satu tumpukan CDK. Instance aplikasi CDK dibuat menggunakan App konstruksi. Berikut ini adalah bagian dari kode ini dari file aplikasi CDK Anda:

TypeScript

Terletak dibin/hello-cdk.ts:

#!/usr/bin/env node import 'source-map-support/register'; import * as cdk from 'aws-cdk-lib'; import { HelloCdkStack } from '../lib/hello-cdk-stack'; const app = new cdk.App(); new HelloCdkStack(app, 'HelloCdkStack', { });
JavaScript

Terletak dibin/hello-cdk.js:

#!/usr/bin/env node const cdk = require('aws-cdk-lib'); const { HelloCdkStack } = require('../lib/hello-cdk-stack'); const app = new cdk.App(); new HelloCdkStack(app, 'HelloCdkStack', { });
Python

Terletak diapp.py:

#!/usr/bin/env python3 import os import aws_cdk as cdk from hello_cdk.hello_cdk_stack import HelloCdkStack app = cdk.App() HelloCdkStack(app, "HelloCdkStack",) app.synth()
Java

Terletak disrc/main/java/.../HelloCdkApp.java:

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

Terletak disrc/HelloCdk/Program.cs:

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

Terletak dihello-cdk.go:

package main import ( "github.com/aws/aws-cdk-go/awscdk/v2" "github.com/aws/constructs-go/constructs/v10" "github.com/aws/jsii-runtime-go" ) // ... func main() { defer jsii.Close() app := awscdk.NewApp(nil) NewHelloCdkStack(app, "HelloCdkStack", &HelloCdkStackProps{ awscdk.StackProps{ Env: env(), }, }) app.Synth(nil) } // ...

Terletak dibin/hello-cdk.ts:

#!/usr/bin/env node import 'source-map-support/register'; import * as cdk from 'aws-cdk-lib'; import { HelloCdkStack } from '../lib/hello-cdk-stack'; const app = new cdk.App(); new HelloCdkStack(app, 'HelloCdkStack', { });

Tumpukan CDK dibuat menggunakan Stack konstruksi. Berikut ini adalah bagian dari kode ini dari file tumpukan CDK Anda:

TypeScript

Terletak dilib/hello-cdk-stack.ts:

import * as cdk from 'aws-cdk-lib'; import { Construct } from 'constructs'; export class HelloCdkStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // Define your constructs here } }
JavaScript

Terletak dilib/hello-cdk-stack.js:

const { Stack } = require('aws-cdk-lib'); class HelloCdkStack extends Stack { constructor(scope, id, props) { super(scope, id, props); // Define your constructs here } } module.exports = { HelloCdkStack }
Python

Terletak dihello_cdk/hello_cdk_stack.py:

from aws_cdk import ( Stack, ) from constructs import Construct class HelloCdkStack(Stack): def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: super().__init__(scope, construct_id, **kwargs) # Define your constructs here
Java

Terletak disrc/main/java/.../HelloCdkStack.java:

package com.myorg; import software.constructs.Construct; import software.amazon.awscdk.Stack; import software.amazon.awscdk.StackProps; public class HelloCdkStack extends Stack { public HelloCdkStack(final Construct scope, final String id) { this(scope, id, null); } public HelloCdkStack(final Construct scope, final String id, final StackProps props) { super(scope, id, props); // Define your constructs here } }
C#

Terletak disrc/HelloCdk/HelloCdkStack.cs:

using Amazon.CDK; using Constructs; namespace HelloCdk { public class HelloCdkStack : Stack { internal HelloCdkStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props) { // Define your constructs here } } }
Go

Terletak dihello-cdk.go:

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 HelloCdkStackProps struct { awscdk.StackProps } func NewHelloCdkStack(scope constructs.Construct, id string, props *HelloCdkStackProps) awscdk.Stack { var sprops awscdk.StackProps if props != nil { sprops = props.StackProps } stack := awscdk.NewStack(scope, &id, &sprops) return stack } // ...

Terletak dilib/hello-cdk-stack.ts:

import * as cdk from 'aws-cdk-lib'; import { Construct } from 'constructs'; export class HelloCdkStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // Define your constructs here } }

Langkah 2: Konfigurasikan AWS lingkungan Anda

Pada langkah ini, Anda mengonfigurasi AWS lingkungan untuk tumpukan CDK Anda. Dengan melakukan ini, Anda menentukan lingkungan mana tumpukan CDK Anda akan digunakan.

Pertama, tentukan AWS lingkungan yang ingin Anda gunakan. AWS Lingkungan terdiri dari Akun AWS dan Wilayah AWS.

Ketika Anda menggunakan AWS CLI untuk mengkonfigurasi kredensi keamanan pada komputer lokal Anda, Anda kemudian dapat menggunakan AWS CLI untuk mendapatkan informasi AWS lingkungan untuk profil tertentu.

Untuk menggunakan AWS CLI untuk mendapatkan Akun AWS ID Anda
  1. Jalankan AWS CLI perintah berikut untuk mendapatkan Akun AWS ID untuk default profil Anda:

    $ aws sts get-caller-identity --query "Account" --output text
  2. Jika Anda lebih suka menggunakan profil bernama, berikan nama profil Anda menggunakan --profile opsi:

    $ aws sts get-caller-identity --profile your-profile-name --query "Account" --output text
Untuk menggunakan AWS CLI untuk mendapatkan Wilayah AWS
  1. Jalankan AWS CLI perintah berikut untuk mendapatkan Wilayah yang Anda konfigurasikan untuk default profil Anda:

    $ aws configure get region
  2. Jika Anda lebih suka menggunakan profil bernama, berikan nama profil Anda menggunakan --profile opsi:

    $ aws configure get region --profile your-profile-name

Selanjutnya, Anda akan mengonfigurasi AWS lingkungan untuk tumpukan CDK Anda dengan memodifikasi HelloCdkStack instance di file aplikasi Anda. Untuk tutorial ini, Anda akan membuat kode keras informasi AWS lingkungan Anda. Ini direkomendasikan untuk lingkungan produksi. Untuk informasi tentang cara lain untuk mengonfigurasi lingkungan, lihatKonfigurasikan lingkungan untuk digunakan dengan AWS CDK.

Untuk mengonfigurasi lingkungan untuk tumpukan CDK Anda
  • Dalam file aplikasi Anda, gunakan env properti Stack konstruksi untuk mengkonfigurasi lingkungan Anda. Berikut adalah contohnya:

    TypeScript

    Terletak dibin/hello-cdk.ts:

    #!/usr/bin/env node import 'source-map-support/register'; import * as cdk from 'aws-cdk-lib'; import { HelloCdkStack } from '../lib/hello-cdk-stack'; const app = new cdk.App(); new HelloCdkStack(app, 'HelloCdkStack', { env: { account: '123456789012', region: 'us-east-1' }, });
    JavaScript

    Terletak dibin/hello-cdk.js:

    #!/usr/bin/env node const cdk = require('aws-cdk-lib'); const { HelloCdkStack } = require('../lib/hello-cdk-stack'); const app = new cdk.App(); new HelloCdkStack(app, 'HelloCdkStack', { env: { account: '123456789012', region: 'us-east-1' }, });
    Python

    Terletak diapp.py:

    #!/usr/bin/env python3 import os import aws_cdk as cdk from hello_cdk.hello_cdk_stack import HelloCdkStack app = cdk.App() HelloCdkStack(app, "HelloCdkStack", env=cdk.Environment(account='123456789012', region='us-east-1'), ) app.synth()
    Java

    Terletak disrc/main/java/.../HelloCdkApp.java:

    package com.myorg; import software.amazon.awscdk.App; import software.amazon.awscdk.Environment; import software.amazon.awscdk.StackProps; import java.util.Arrays; public class HelloCdkApp { public static void main(final String[] args) { App app = new App(); new HelloCdkStack(app, "HelloCdkStack", StackProps.builder() .env(Environment.builder() .account("123456789012") .region("us-east-1") .build()) .build()); app.synth(); } }
    C#

    Terletak disrc/HelloCdk/Program.cs:

    using Amazon.CDK; using System; using System.Collections.Generic; using System.Linq; namespace HelloCdk { sealed class Program { public static void Main(string[] args) { var app = new App(); new HelloCdkStack(app, "HelloCdkStack", new StackProps { Env = new Amazon.CDK.Environment { Account = "123456789012", Region = "us-east-1", } }); app.Synth(); } } }
    Go

    Terletak dihello-cdk.go:

    package main import ( "github.com/aws/aws-cdk-go/awscdk/v2" "github.com/aws/constructs-go/constructs/v10" "github.com/aws/jsii-runtime-go" ) // ... func main() { defer jsii.Close() app := awscdk.NewApp(nil) NewHelloCdkStack(app, "HelloCdkStack", &HelloCdkStackProps{ awscdk.StackProps{ Env: env(), }, }) app.Synth(nil) } func env() *awscdk.Environment { return &awscdk.Environment{ Account: jsii.String("123456789012"), Region: jsii.String("us-east-1"), } }

    Terletak dibin/hello-cdk.ts:

    #!/usr/bin/env node import 'source-map-support/register'; import * as cdk from 'aws-cdk-lib'; import { HelloCdkStack } from '../lib/hello-cdk-stack'; const app = new cdk.App(); new HelloCdkStack(app, 'HelloCdkStack', { env: { account: '123456789012', region: 'us-east-1' }, });

Langkah 3: Bootstrap AWS lingkungan Anda

Pada langkah ini, Anda mem-bootstrap AWS lingkungan yang Anda konfigurasikan pada langkah sebelumnya. Ini mempersiapkan lingkungan Anda untuk penerapan CDK.

Untuk mem-bootstrap lingkungan Anda, jalankan yang berikut ini dari root proyek CDK Anda:

$ cdk bootstrap

Dengan melakukan bootstrap dari root proyek CDK Anda, Anda tidak perlu memberikan informasi tambahan apa pun. CDK CLI memperoleh informasi lingkungan dari proyek Anda. Ketika Anda bootstrap di luar proyek CDK, Anda harus memberikan informasi lingkungan dengan cdk bootstrap perintah. Untuk informasi selengkapnya, lihat Bootstrap lingkungan Anda untuk digunakan dengan AWS CDK.

Langkah 4: Bangun aplikasi CDK Anda

Di sebagian besar lingkungan pemrograman, Anda membangun atau mengkompilasi kode setelah melakukan perubahan. Ini tidak perlu dengan AWS CDK sejak CDK CLI akan secara otomatis melakukan langkah ini. Namun, Anda masih dapat membangun secara manual ketika Anda ingin menangkap kesalahan sintaks dan mengetik. Berikut adalah contohnya:

TypeScript
$ npm run build > hello-cdk@0.1.0 build > tsc
JavaScript

Tidak ada langkah membangun yang diperlukan.

Python

Tidak ada langkah membangun yang diperlukan.

Java
$ mvn compile -q

Atau tekan Control-B di Eclipse (Jawa lain IDEs mungkin berbeda)

C#
$ dotnet build src

Atau tekan F6 di Visual Studio

Go
$ go build
$ npm run build > hello-cdk@0.1.0 build > tsc

Langkah 5: Daftar tumpukan CDK di aplikasi Anda

Pada titik ini, Anda harus memiliki aplikasi CDK yang berisi satu tumpukan CDK. Untuk memverifikasi, gunakan CDK CLI cdk listperintah untuk menampilkan tumpukan Anda. Output harus menampilkan tumpukan tunggal bernamaHelloCdkStack:

$ cdk list HelloCdkStack

Jika Anda tidak melihat output ini, verifikasi bahwa Anda berada di direktori kerja yang benar dari proyek Anda dan coba lagi. Jika Anda masih tidak melihat tumpukan Anda, ulangi Langkah 1: Buat proyek CDK Anda dan coba lagi.

Langkah 6: Tentukan fungsi Lambda Anda

Pada langkah ini, Anda mengimpor aws_lambda modul dari AWS Construct Library dan menggunakan konstruksi Function L2.

Ubah file tumpukan CDK Anda sebagai berikut:

TypeScript

Terletak dilib/hello-cdk-stack.ts:

import * as cdk from 'aws-cdk-lib'; import { Construct } from 'constructs'; // Import the Lambda module import * as lambda from 'aws-cdk-lib/aws-lambda'; export class HelloCdkStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // Define the Lambda function resource const myFunction = new lambda.Function(this, "HelloWorldFunction", { runtime: lambda.Runtime.NODEJS_20_X, // Provide any supported Node.js runtime handler: "index.handler", code: lambda.Code.fromInline(` exports.handler = async function(event) { return { statusCode: 200, body: JSON.stringify('Hello World!'), }; }; `), }); } }
JavaScript

Terletak dilib/hello-cdk-stack.js:

const { Stack } = require('aws-cdk-lib'); // Import the Lambda module const lambda = require('aws-cdk-lib/aws-lambda'); class HelloCdkStack extends Stack { constructor(scope, id, props) { super(scope, id, props); // Define the Lambda function resource const myFunction = new lambda.Function(this, "HelloWorldFunction", { runtime: lambda.Runtime.NODEJS_20_X, // Provide any supported Node.js runtime handler: "index.handler", code: lambda.Code.fromInline(` exports.handler = async function(event) { return { statusCode: 200, body: JSON.stringify('Hello World!'), }; }; `), }); } } module.exports = { HelloCdkStack }
Python

Terletak dihello_cdk/hello_cdk_stack.py:

from aws_cdk import ( Stack, aws_lambda as _lambda, # Import the Lambda module ) from constructs import Construct class HelloCdkStack(Stack): def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: super().__init__(scope, construct_id, **kwargs) # Define the Lambda function resource my_function = _lambda.Function( self, "HelloWorldFunction", runtime = _lambda.Runtime.NODEJS_20_X, # Provide any supported Node.js runtime handler = "index.handler", code = _lambda.Code.from_inline( """ exports.handler = async function(event) { return { statusCode: 200, body: JSON.stringify('Hello World!'), }; }; """ ), )
Java

Terletak disrc/main/java/.../HelloCdkStack.java:

package com.myorg; import software.constructs.Construct; import software.amazon.awscdk.Stack; import software.amazon.awscdk.StackProps; // Import Lambda function import software.amazon.awscdk.services.lambda.Code; import software.amazon.awscdk.services.lambda.Function; import software.amazon.awscdk.services.lambda.Runtime; public class HelloCdkStack extends Stack { public HelloCdkStack(final Construct scope, final String id) { this(scope, id, null); } public HelloCdkStack(final Construct scope, final String id, final StackProps props) { super(scope, id, props); // Define the Lambda function resource Function myFunction = Function.Builder.create(this, "HelloWorldFunction") .runtime(Runtime.NODEJS_20_X) // Provide any supported Node.js runtime .handler("index.handler") .code(Code.fromInline( "exports.handler = async function(event) {" + " return {" + " statusCode: 200," + " body: JSON.stringify('Hello World!')" + " };" + "};")) .build(); } }
C#

Terletak disrc/main/java/.../HelloCdkStack.java:

using Amazon.CDK; using Constructs; // Import the Lambda module using Amazon.CDK.AWS.Lambda; namespace HelloCdk { public class HelloCdkStack : Stack { internal HelloCdkStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props) { // Define the Lambda function resource var myFunction = new Function(this, "HelloWorldFunction", new FunctionProps { Runtime = Runtime.NODEJS_20_X, // Provide any supported Node.js runtime Handler = "index.handler", Code = Code.FromInline(@" exports.handler = async function(event) { return { statusCode: 200, body: JSON.stringify('Hello World!'), }; }; "), }); } } }
Go

Terletak dihello-cdk.go:

package main import ( "github.com/aws/aws-cdk-go/awscdk/v2" "github.com/aws/constructs-go/constructs/v10" "github.com/aws/jsii-runtime-go" // Import the Lambda module "github.com/aws/aws-cdk-go/awscdk/v2/awslambda" ) type HelloCdkStackProps struct { awscdk.StackProps } func NewHelloCdkStack(scope constructs.Construct, id string, props *HelloCdkStackProps) awscdk.Stack { var sprops awscdk.StackProps if props != nil { sprops = props.StackProps } stack := awscdk.NewStack(scope, &id, &sprops) // Define the Lambda function resource myFunction := awslambda.NewFunction(stack, jsii.String("HelloWorldFunction"), &awslambda.FunctionProps{ Runtime: awslambda.Runtime_NODEJS_20_X(), // Provide any supported Node.js runtime Handler: jsii.String("index.handler"), Code: awslambda.Code_FromInline(jsii.String(` exports.handler = async function(event) { return { statusCode: 200, body: JSON.stringify('Hello World!'), }; }; `)), }) return stack } // ...

Terletak dilib/hello-cdk-stack.ts:

import * as cdk from 'aws-cdk-lib'; import { Construct } from 'constructs'; // Import the Lambda module import * as lambda from 'aws-cdk-lib/aws-lambda'; export class HelloCdkStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // Define the Lambda function resource const myFunction = new lambda.Function(this, "HelloWorldFunction", { runtime: lambda.Runtime.NODEJS_20_X, // Provide any supported Node.js runtime handler: "index.handler", code: lambda.Code.fromInline(` exports.handler = async function(event) { return { statusCode: 200, body: JSON.stringify('Hello World!'), }; }; `), }); } }

Mari kita lihat lebih dekat Function konstruksinya. Seperti semua konstruksi, Function kelas mengambil tiga parameter:

  • scope — Mendefinisikan Stack instance Anda sebagai induk dari Function konstruksi. Semua konstruksi yang mendefinisikan AWS sumber daya dibuat dalam lingkup tumpukan. Anda dapat menentukan konstruksi di dalam konstruksi, membuat hierarki (pohon). Di sini, dan dalam banyak kasus, ruang lingkupnya adalah this (selfdalam Python).

  • Id — ID build dari Function dalam AWS CDK aplikasi Anda. ID ini, ditambah hash berdasarkan lokasi fungsi di dalam tumpukan, secara unik mengidentifikasi fungsi selama penerapan. Ini AWS CDK juga mereferensikan ID ini saat Anda memperbarui build di aplikasi dan menerapkan ulang untuk memperbarui sumber daya yang diterapkan. Di sini, ID konstruksi Anda adalahHelloWorldFunction. Fungsi juga dapat memiliki nama, ditentukan dengan functionName properti. Ini berbeda dengan ID konstruksi.

  • props — Sebuah bundel nilai yang mendefinisikan properti dari fungsi. Di sini Anda mendefinisikanruntime,handler, dan code properti.

    Alat peraga diwakili secara berbeda dalam bahasa yang didukung oleh. AWS CDK

    • Masuk TypeScript and JavaScript, props adalah argumen tunggal dan Anda meneruskan objek yang berisi properti yang diinginkan.

    • Masuk Python, alat peraga dilewatkan sebagai argumen kata kunci.

    • Masuk Java, Builder disediakan untuk melewati alat peraga. Ada dua: satu untukFunctionProps, dan yang kedua Function untuk membiarkan Anda membangun konstruksi dan objek alat peraga dalam satu langkah. Kode ini menggunakan yang terakhir.

    • Masuk C#, Anda membuat instance FunctionProps objek menggunakan penginisialisasi objek dan meneruskannya sebagai parameter ketiga.

    Jika alat peraga konstruksi bersifat opsional, Anda dapat menghilangkan parameter sepenuhnya. props

Semua konstruksi mengambil tiga argumen yang sama ini, jadi mudah untuk tetap berorientasi saat Anda belajar tentang yang baru. Dan seperti yang Anda duga, Anda dapat mensubkelas konstruksi apa pun untuk memperluasnya sesuai dengan kebutuhan Anda, atau jika Anda ingin mengubah defaultnya.

Langkah 7: Tentukan URL fungsi Lambda Anda

Pada langkah ini, Anda menggunakan metode addFunctionUrl pembantu Function konstruksi untuk menentukan URL fungsi Lambda. Untuk menampilkan nilai URL ini saat penerapan, Anda akan membuat AWS CloudFormation output menggunakan CfnOutput konstruksi.

Tambahkan yang berikut ini ke file tumpukan CDK Anda:

TypeScript

Terletak dilib/hello-cdk-stack.ts:

// ... export class HelloCdkStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // Define the Lambda function resource // ... // Define the Lambda function URL resource const myFunctionUrl = myFunction.addFunctionUrl({ authType: lambda.FunctionUrlAuthType.NONE, }); // Define a CloudFormation output for your URL new cdk.CfnOutput(this, "myFunctionUrlOutput", { value: myFunctionUrl.url, }) } }
JavaScript

Terletak dilib/hello-cdk-stack.js:

const { Stack, CfnOutput } = require('aws-cdk-lib'); // Import CfnOutput class HelloCdkStack extends Stack { constructor(scope, id, props) { super(scope, id, props); // Define the Lambda function resource // ... // Define the Lambda function URL resource const myFunctionUrl = myFunction.addFunctionUrl({ authType: lambda.FunctionUrlAuthType.NONE, }); // Define a CloudFormation output for your URL new CfnOutput(this, "myFunctionUrlOutput", { value: myFunctionUrl.url, }) } } module.exports = { HelloCdkStack }
Python

Terletak dihello_cdk/hello_cdk_stack.py:

from aws_cdk import ( # ... CfnOutput # Import CfnOutput ) from constructs import Construct class HelloCdkStack(Stack): def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: super().__init__(scope, construct_id, **kwargs) # Define the Lambda function resource # ... # Define the Lambda function URL resource my_function_url = my_function.add_function_url( auth_type = _lambda.FunctionUrlAuthType.NONE, ) # Define a CloudFormation output for your URL CfnOutput(self, "myFunctionUrlOutput", value=my_function_url.url)
Java

Terletak disrc/main/java/.../HelloCdkStack.java:

package com.myorg; // ... // Import Lambda function URL import software.amazon.awscdk.services.lambda.FunctionUrl; import software.amazon.awscdk.services.lambda.FunctionUrlAuthType; import software.amazon.awscdk.services.lambda.FunctionUrlOptions; // Import CfnOutput import software.amazon.awscdk.CfnOutput; public class HelloCdkStack extends Stack { public HelloCdkStack(final Construct scope, final String id) { this(scope, id, null); } public HelloCdkStack(final Construct scope, final String id, final StackProps props) { super(scope, id, props); // Define the Lambda function resource // ... // Define the Lambda function URL resource FunctionUrl myFunctionUrl = myFunction.addFunctionUrl(FunctionUrlOptions.builder() .authType(FunctionUrlAuthType.NONE) .build()); // Define a CloudFormation output for your URL CfnOutput.Builder.create(this, "myFunctionUrlOutput") .value(myFunctionUrl.getUrl()) .build(); } }
C#

Terletak disrc/main/java/.../HelloCdkStack.java:

// ... namespace HelloCdk { public class HelloCdkStack : Stack { internal HelloCdkStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props) { // Define the Lambda function resource // ... // Define the Lambda function URL resource var myFunctionUrl = myFunction.AddFunctionUrl(new FunctionUrlOptions { AuthType = FunctionUrlAuthType.NONE }); // Define a CloudFormation output for your URL new CfnOutput(this, "myFunctionUrlOutput", new CfnOutputProps { Value = myFunctionUrl.Url }); } } }
Go

Terletak dihello-cdk.go:

// ... func NewHelloCdkStack(scope constructs.Construct, id string, props *HelloCdkStackProps) awscdk.Stack { var sprops awscdk.StackProps if props != nil { sprops = props.StackProps } stack := awscdk.NewStack(scope, &id, &sprops) // Define the Lambda function resource // ... // Define the Lambda function URL resource myFunctionUrl := myFunction.AddFunctionUrl(&awslambda.FunctionUrlOptions{ AuthType: awslambda.FunctionUrlAuthType_NONE, }) // Define a CloudFormation output for your URL awscdk.NewCfnOutput(stack, jsii.String("myFunctionUrlOutput"), &awscdk.CfnOutputProps{ Value: myFunctionUrl.Url(), }) return stack } // ...

Terletak dilib/hello-cdk-stack.ts:

// ... export class HelloCdkStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // Define the Lambda function resource // ... // Define the Lambda function URL resource const myFunctionUrl = myFunction.addFunctionUrl({ authType: lambda.FunctionUrlAuthType.NONE, }); // Define a CloudFormation output for your URL new cdk.CfnOutput(this, "myFunctionUrlOutput", { value: myFunctionUrl.url, }) } }
Awas

Agar tutorial ini tetap sederhana, URL fungsi Lambda Anda didefinisikan tanpa otentikasi. Saat diterapkan, ini membuat titik akhir yang dapat diakses publik yang dapat digunakan untuk menjalankan fungsi Anda. Setelah selesai dengan tutorial ini, ikuti Langkah 12: Hapus aplikasi Anda untuk menghapus sumber daya ini.

Langkah 8: Sintesis template CloudFormation

Pada langkah ini, Anda mempersiapkan penerapan dengan mensintesis CloudFormation template dengan CDK CLI cdk synthperintah. Perintah ini melakukan validasi dasar kode CDK Anda, menjalankan aplikasi CDK Anda, dan menghasilkan CloudFormation template dari tumpukan CDK Anda.

Jika aplikasi berisi lebih dari satu tumpukan, Anda harus menentukan tumpukan mana yang akan disintesis. Karena aplikasi Anda berisi satu tumpukan, CDK CLI secara otomatis mendeteksi tumpukan untuk disintesis.

Jika Anda tidak mensintesis template, CDK CLI akan secara otomatis melakukan langkah ini saat Anda menyebarkan. Namun, kami menyarankan Anda menjalankan langkah ini sebelum setiap penerapan untuk memeriksa kesalahan sintesis.

Sebelum mensintesis template, Anda dapat membuat aplikasi secara opsional untuk menangkap kesalahan sintaks dan mengetik. Untuk petunjuk, silakan lihat Langkah 4: Bangun aplikasi CDK Anda.

Untuk mensintesis CloudFormation template, jalankan yang berikut ini dari root proyek Anda:

$ cdk synth
catatan

Jika Anda menerima kesalahan seperti berikut ini, verifikasi bahwa Anda berada di hello-cdk direktori dan coba lagi:

--app is required either in command-line, in cdk.json or in ~/.cdk.json

Jika berhasil, CDK CLI akan menghasilkan a YAML CloudFormation —templat yang diformat ke stdout dan menyimpan JSON—templat yang diformat dalam cdk.out direktori proyek Anda.

Berikut ini adalah contoh output dari CloudFormation template:

Resources: HelloWorldFunctionServiceRoleunique-identifier: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Statement: - Action: sts:AssumeRole Effect: Allow Principal: Service: lambda.amazonaws.com Version: "2012-10-17" ManagedPolicyArns: - Fn::Join: - "" - - "arn:" - Ref: AWS::Partition - :iam::aws:policy/service-role/AWSLambdaBasicExecutionRole Metadata: aws:cdk:path: HelloCdkStack/HelloWorldFunction/ServiceRole/Resource HelloWorldFunctionunique-identifier: Type: AWS::Lambda::Function Properties: Code: ZipFile: " \ exports.handler = async function(event) { \ return { \ statusCode: 200, \ body: JSON.stringify('Hello World!'), \ }; \ }; \ " Handler: index.handler Role: Fn::GetAtt: - HelloWorldFunctionServiceRoleunique-identifier - Arn Runtime: nodejs20.x DependsOn: - HelloWorldFunctionServiceRoleunique-identifier Metadata: aws:cdk:path: HelloCdkStack/HelloWorldFunction/Resource HelloWorldFunctionFunctionUrlunique-identifier: Type: AWS::Lambda::Url Properties: AuthType: NONE TargetFunctionArn: Fn::GetAtt: - HelloWorldFunctionunique-identifier - Arn Metadata: aws:cdk:path: HelloCdkStack/HelloWorldFunction/FunctionUrl/Resource HelloWorldFunctioninvokefunctionurlunique-identifier: Type: AWS::Lambda::Permission Properties: Action: lambda:InvokeFunctionUrl FunctionName: Fn::GetAtt: - HelloWorldFunctionunique-identifier - Arn FunctionUrlAuthType: NONE Principal: "*" Metadata: aws:cdk:path: HelloCdkStack/HelloWorldFunction/invoke-function-url CDKMetadata: Type: AWS::CDK::Metadata Properties: Analytics: v2:deflate64:unique-identifier Metadata: aws:cdk:path: HelloCdkStack/CDKMetadata/Default Condition: CDKMetadataAvailable Outputs: myFunctionUrlOutput: Value: Fn::GetAtt: - HelloWorldFunctionFunctionUrlunique-identifier - FunctionUrl Parameters: BootstrapVersion: Type: AWS::SSM::Parameter::Value<String> Default: /cdk-bootstrap/unique-identifier/version Description: Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip] Rules: CheckBootstrapVersion: Assertions: - Assert: Fn::Not: - Fn::Contains: - - "1" - "2" - "3" - "4" - "5" - Ref: BootstrapVersion AssertDescription: CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.

Resources: HelloWorldFunctionServiceRoleunique-identifier: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Statement: - Action: sts:AssumeRole Effect: Allow Principal: Service: lambda.amazonaws.com Version: "2012-10-17" ManagedPolicyArns: - Fn::Join: - "" - - "arn:" - Ref: AWS::Partition - :iam::aws:policy/service-role/AWSLambdaBasicExecutionRole Metadata: aws:cdk:path: HelloCdkStack/HelloWorldFunction/ServiceRole/Resource HelloWorldFunctionunique-identifier: Type: AWS::Lambda::Function Properties: Code: ZipFile: " \ exports.handler = async function(event) { \ return { \ statusCode: 200, \ body: JSON.stringify('Hello World!'), \ }; \ }; \ " Handler: index.handler Role: Fn::GetAtt: - HelloWorldFunctionServiceRoleunique-identifier - Arn Runtime: nodejs20.x DependsOn: - HelloWorldFunctionServiceRoleunique-identifier Metadata: aws:cdk:path: HelloCdkStack/HelloWorldFunction/Resource HelloWorldFunctionFunctionUrlunique-identifier: Type: AWS::Lambda::Url Properties: AuthType: NONE TargetFunctionArn: Fn::GetAtt: - HelloWorldFunctionunique-identifier - Arn Metadata: aws:cdk:path: HelloCdkStack/HelloWorldFunction/FunctionUrl/Resource HelloWorldFunctioninvokefunctionurlunique-identifier: Type: AWS::Lambda::Permission Properties: Action: lambda:InvokeFunctionUrl FunctionName: Fn::GetAtt: - HelloWorldFunctionunique-identifier - Arn FunctionUrlAuthType: NONE Principal: "*" Metadata: aws:cdk:path: HelloCdkStack/HelloWorldFunction/invoke-function-url CDKMetadata: Type: AWS::CDK::Metadata Properties: Analytics: v2:deflate64:unique-identifier Metadata: aws:cdk:path: HelloCdkStack/CDKMetadata/Default Condition: CDKMetadataAvailable Outputs: myFunctionUrlOutput: Value: Fn::GetAtt: - HelloWorldFunctionFunctionUrlunique-identifier - FunctionUrl Parameters: BootstrapVersion: Type: AWS::SSM::Parameter::Value<String> Default: /cdk-bootstrap/unique-identifier/version Description: Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip] Rules: CheckBootstrapVersion: Assertions: - Assert: Fn::Not: - Fn::Contains: - - "1" - "2" - "3" - "4" - "5" - Ref: BootstrapVersion AssertDescription: CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.
catatan

Setiap template yang dihasilkan berisi AWS::CDK::Metadata sumber daya secara default. AWS CDK Tim menggunakan metadata ini untuk mendapatkan wawasan tentang AWS CDK penggunaan dan menemukan cara untuk memperbaikinya. Untuk detailnya, termasuk cara memilih keluar dari pelaporan versi, lihatPelaporan versi.

Dengan mendefinisikan satu konstruksi L2, AWS CDK membuat CloudFormation template ekstensif yang berisi sumber daya Lambda Anda, bersama dengan izin dan logika lem yang diperlukan agar sumber daya Anda berinteraksi dalam aplikasi Anda.

Langkah 9: Menyebarkan tumpukan CDK Anda

Pada langkah ini, Anda menggunakan CDK CLI cdk deployperintah untuk menyebarkan tumpukan CDK Anda. Perintah ini mengambil CloudFormation template yang Anda buat dan menerapkannya AWS CloudFormation, yang menyediakan sumber daya Anda sebagai bagian dari tumpukan. CloudFormation

Dari akar proyek Anda, jalankan yang berikut ini. Konfirmasikan perubahan jika diminta:

$ cdk deploy ✨ Synthesis time: 2.69s HelloCdkStack: start: Building unique-identifier:current_account-current_region HelloCdkStack: success: Built unique-identifier:current_account-current_region HelloCdkStack: start: Publishing unique-identifier:current_account-current_region HelloCdkStack: success: Published unique-identifier:current_account-current_region This deployment will make potentially sensitive changes according to your current security approval level (--require-approval broadening). Please confirm you intend to make the following modifications: IAM Statement Changes ┌───┬───────────────────────────────────────┬────────┬──────────────────────────┬──────────────────────────────┬───────────┐ │ │ Resource │ Effect │ Action │ Principal │ Condition │ ├───┼───────────────────────────────────────┼────────┼──────────────────────────┼──────────────────────────────┼───────────┤ │ + │ ${HelloWorldFunction.Arn} │ Allow │ lambda:InvokeFunctionUrl │ * │ │ ├───┼───────────────────────────────────────┼────────┼──────────────────────────┼──────────────────────────────┼───────────┤ │ + │ ${HelloWorldFunction/ServiceRole.Arn} │ Allow │ sts:AssumeRole │ Service:lambda.amazonaws.com │ │ └───┴───────────────────────────────────────┴────────┴──────────────────────────┴──────────────────────────────┴───────────┘ IAM Policy Changes ┌───┬───────────────────────────────────┬────────────────────────────────────────────────────────────────────────────────┐ │ │ Resource │ Managed Policy ARN │ ├───┼───────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────┤ │ + │ ${HelloWorldFunction/ServiceRole} │ arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole │ └───┴───────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────┘ (NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299) Do you wish to deploy these changes (y/n)? y

Mirip dengancdk synth, Anda tidak perlu menentukan AWS CDK tumpukan karena aplikasi berisi satu tumpukan.

Selama penyebaran, CDK CLI menampilkan informasi kemajuan saat tumpukan Anda digunakan. Setelah selesai, Anda dapat pergi ke AWS CloudFormation konsol untuk melihat HelloCdkStack tumpukan Anda. Anda juga dapat pergi ke konsol Lambda untuk melihat sumber daya AndaHelloWorldFunction.

Saat penerapan selesai, CDK CLI akan menampilkan URL titik akhir Anda. Salin URL ini untuk langkah selanjutnya. Berikut adalah contohnya:

... HelloCdkStack: deploying... [1/1] HelloCdkStack: creating CloudFormation changeset... ✅ HelloCdkStack ✨ Deployment time: 41.65s Outputs: HelloCdkStack.myFunctionUrlOutput = https://<api-id>.lambda-url.<Region>.on.aws/ Stack ARN: arn:aws:cloudformation:Region:account-id:stack/HelloCdkStack/unique-identifier ✨ Total time: 44.34s

Langkah 10: Berinteraksi dengan aplikasi Anda AWS

Pada langkah ini, Anda berinteraksi dengan aplikasi Anda AWS dengan menjalankan fungsi Lambda Anda melalui URL fungsi. Saat Anda mengakses URL, fungsi Lambda Anda mengembalikan pesan. Hello World!

Untuk menjalankan fungsi Anda, akses URL fungsi melalui browser Anda atau dari baris perintah. Berikut adalah contohnya:

$ curl https://<api-id>.lambda-url.<Region>.on.aws/ "Hello World!"%

Langkah 11: Ubah aplikasi Anda

Pada langkah ini, Anda mengubah pesan yang dikembalikan oleh fungsi Lambda saat dipanggil. Anda melakukan diff menggunakan CDK CLI cdk diffperintah untuk melihat pratinjau perubahan Anda dan menerapkan untuk memperbarui aplikasi Anda. Anda kemudian berinteraksi dengan aplikasi Anda AWS untuk melihat pesan baru Anda.

Ubah myFunction instance di file tumpukan CDK Anda sebagai berikut:

TypeScript

Terletak dilib/hello-cdk-stack.ts:

// ... export class HelloCdkStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // Modify the Lambda function resource const myFunction = new lambda.Function(this, "HelloWorldFunction", { runtime: lambda.Runtime.NODEJS_20_X, // Provide any supported Node.js runtime handler: "index.handler", code: lambda.Code.fromInline(` exports.handler = async function(event) { return { statusCode: 200, body: JSON.stringify('Hello CDK!'), }; }; `), }); // ...
JavaScript

Terletak dilib/hello-cdk-stack.js:

// ... class HelloCdkStack extends Stack { constructor(scope, id, props) { super(scope, id, props); // Modify the Lambda function resource const myFunction = new lambda.Function(this, "HelloWorldFunction", { runtime: lambda.Runtime.NODEJS_20_X, // Provide any supported Node.js runtime handler: "index.handler", code: lambda.Code.fromInline(` exports.handler = async function(event) { return { statusCode: 200, body: JSON.stringify('Hello CDK!'), }; }; `), }); // ... } } module.exports = { HelloCdkStack }
Python

Terletak dihello_cdk/hello_cdk_stack.py:

# ... class HelloCdkStack(Stack): def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: super().__init__(scope, construct_id, **kwargs) # Modify the Lambda function resource my_function = _lambda.Function( self, "HelloWorldFunction", runtime = _lambda.Runtime.NODEJS_20_X, # Provide any supported Node.js runtime handler = "index.handler", code = _lambda.Code.from_inline( """ exports.handler = async function(event) { return { statusCode: 200, body: JSON.stringify('Hello CDK!'), }; }; """ ), ) # ...
Java

Terletak disrc/main/java/.../HelloCdkStack.java:

// ... public class HelloCdkStack extends Stack { public HelloCdkStack(final Construct scope, final String id) { this(scope, id, null); } public HelloCdkStack(final Construct scope, final String id, final StackProps props) { super(scope, id, props); // Modify the Lambda function resource Function myFunction = Function.Builder.create(this, "HelloWorldFunction") .runtime(Runtime.NODEJS_20_X) // Provide any supported Node.js runtime .handler("index.handler") .code(Code.fromInline( "exports.handler = async function(event) {" + " return {" + " statusCode: 200," + " body: JSON.stringify('Hello CDK!')" + " };" + "};")) .build(); // ... } }
C#

// ... namespace HelloCdk { public class HelloCdkStack : Stack { internal HelloCdkStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props) { // Modify the Lambda function resource var myFunction = new Function(this, "HelloWorldFunction", new FunctionProps { Runtime = Runtime.NODEJS_20_X, // Provide any supported Node.js runtime Handler = "index.handler", Code = Code.FromInline(@" exports.handler = async function(event) { return { statusCode: 200, body: JSON.stringify('Hello CDK!'), }; }; "), }); // ... } } }
Go

// ... type HelloCdkStackProps struct { awscdk.StackProps } func NewHelloCdkStack(scope constructs.Construct, id string, props *HelloCdkStackProps) awscdk.Stack { var sprops awscdk.StackProps if props != nil { sprops = props.StackProps } stack := awscdk.NewStack(scope, &id, &sprops) // Modify the Lambda function resource myFunction := awslambda.NewFunction(stack, jsii.String("HelloWorldFunction"), &awslambda.FunctionProps{ Runtime: awslambda.Runtime_NODEJS_20_X(), // Provide any supported Node.js runtime Handler: jsii.String("index.handler"), Code: awslambda.Code_FromInline(jsii.String(` exports.handler = async function(event) { return { statusCode: 200, body: JSON.stringify('Hello CDK!'), }; }; `)), }) // ...

Terletak dilib/hello-cdk-stack.ts:

// ... export class HelloCdkStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // Modify the Lambda function resource const myFunction = new lambda.Function(this, "HelloWorldFunction", { runtime: lambda.Runtime.NODEJS_20_X, // Provide any supported Node.js runtime handler: "index.handler", code: lambda.Code.fromInline(` exports.handler = async function(event) { return { statusCode: 200, body: JSON.stringify('Hello CDK!'), }; }; `), }); // ...

Saat ini, perubahan kode Anda belum membuat pembaruan langsung ke sumber daya Lambda yang Anda gunakan. Kode Anda menentukan status sumber daya yang diinginkan. Untuk memodifikasi sumber daya yang digunakan, Anda akan menggunakan CDK CLI untuk mensintesis status yang diinginkan ke dalam AWS CloudFormation template baru. Kemudian, Anda akan menerapkan CloudFormation template baru Anda sebagai set perubahan. Set perubahan hanya membuat perubahan yang diperlukan untuk mencapai status baru yang Anda inginkan.

Untuk melihat pratinjau perubahan Anda, jalankan cdk diff perintah. Berikut adalah contohnya:

$ cdk diff Stack HelloCdkStack Hold on while we create a read-only change set to get a diff with accurate replacement information (use --no-change-set to use a less accurate but faster template-only diff) Resources [~] AWS::Lambda::Function HelloWorldFunction HelloWorldFunctionunique-identifier └─ [~] Code └─ [~] .ZipFile: ├─ [-] exports.handler = async function(event) { return { statusCode: 200, body: JSON.stringify('Hello World!'), }; }; └─ [+] exports.handler = async function(event) { return { statusCode: 200, body: JSON.stringify('Hello CDK!'), }; }; ✨ Number of stacks with differences: 1

Untuk membuat perbedaan ini, CDK CLI kueri Akun AWS akun Anda untuk AWS CloudFormation template terbaru untuk HelloCdkStack tumpukan. Kemudian, ia membandingkan template terbaru dengan template yang baru saja disintesis dari aplikasi Anda.

Untuk mengimplementasikan perubahan Anda, jalankan cdk deploy perintah. Berikut adalah contohnya:

$ cdk deploy ✨ Synthesis time: 2.12s HelloCdkStack: start: Building unique-identifier:current_account-current_region HelloCdkStack: success: Built unique-identifier:current_account-current_region HelloCdkStack: start: Publishing unique-identifier:current_account-current_region HelloCdkStack: success: Published unique-identifier:current_account-current_region HelloCdkStack: deploying... [1/1] HelloCdkStack: creating CloudFormation changeset... ✅ HelloCdkStack ✨ Deployment time: 26.96s Outputs: HelloCdkStack.myFunctionUrlOutput = https://unique-identifier.lambda-url.<Region>.on.aws/ Stack ARN: arn:aws:cloudformation:Region:account-id:stack/HelloCdkStack/unique-identifier ✨ Total time: 29.07s

Untuk berinteraksi dengan aplikasi Anda, ulangiLangkah 10: Berinteraksi dengan aplikasi Anda AWS. Berikut adalah contohnya:

$ curl https://<api-id>.lambda-url.<Region>.on.aws/ "Hello CDK!"%

Langkah 12: Hapus aplikasi Anda

Pada langkah ini, Anda menggunakan CDK CLI cdk destroyperintah untuk menghapus aplikasi Anda. Perintah ini menghapus CloudFormation tumpukan yang terkait dengan tumpukan CDK Anda, yang mencakup sumber daya yang Anda buat.

Untuk menghapus aplikasi Anda, jalankan cdk destroy perintah dan konfirmasikan permintaan Anda untuk menghapus aplikasi. Berikut adalah contohnya:

$ cdk destroy Are you sure you want to delete: HelloCdkStack (y/n)? y HelloCdkStack: destroying... [1/1] ✅ HelloCdkStack: destroyed

Langkah selanjutnya

Selamat! Anda telah menyelesaikan tutorial ini dan telah menggunakan AWS CDK untuk berhasil membuat, memodifikasi, dan menghapus sumber daya di AWS Cloud. Anda sekarang siap untuk mulai menggunakan AWS CDK.

Untuk mempelajari lebih lanjut tentang menggunakan bahasa pemrograman pilihan Anda, lihatBekerja dengan AWS CDK perpustakaan. AWS CDK

Untuk sumber daya tambahan, lihat berikut ini:

  • Cobalah Lokakarya CDK untuk tur yang lebih mendalam yang melibatkan proyek yang lebih kompleks.

  • Lihat referensi API untuk mulai menjelajahi konstruksi CDK yang tersedia untuk layanan favorit AWS Anda.

  • Kunjungi Construct Hub untuk menemukan konstruksi yang dibuat oleh AWS dan lainnya.

  • Jelajahi Contoh menggunakan AWS CDK.

AWS CDK Ini adalah proyek sumber terbuka. Untuk berkontribusi, lihat Berkontribusi pada AWS Cloud Development Kit (AWS CDK).

PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.