Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyebarkan fungsi Lambda dengan AWS CDK
Ini AWS Cloud Development Kit (AWS CDK) adalah kerangka infrastruktur sebagai kode (IAC) yang dapat Anda gunakan untuk mendefinisikan infrastruktur AWS cloud dengan menggunakan bahasa pemrograman pilihan Anda. Untuk menentukan infrastruktur cloud Anda sendiri, pertama-tama Anda menulis aplikasi (dalam salah satu bahasa yang didukung CDK) yang berisi satu atau lebih tumpukan. Kemudian, Anda mensintesisnya ke CloudFormation template dan menyebarkan sumber daya Anda ke templat Anda Akun AWS. Ikuti langkah-langkah dalam topik ini untuk menerapkan fungsi Lambda yang mengembalikan peristiwa dari titik akhir Amazon API Gateway.
Con AWS struct Library, disertakan dengan CDK, menyediakan modul yang dapat Anda gunakan untuk memodelkan sumber daya yang Layanan AWS disediakan. Untuk layanan populer, perpustakaan menyediakan konstruksi yang dikuratori dengan default cerdas dan praktik terbaik. Anda dapat menggunakan modul aws_lambda untuk menentukan fungsi Anda dan sumber daya pendukung hanya dengan beberapa baris kode.
Prasyarat
Sebelum memulai tutorial ini, instal AWS CDK dengan menjalankan perintah berikut.
npm install -g aws-cdk
Langkah 1: Siapkan AWS CDK proyek
Buat direktori untuk AWS CDK aplikasi baru Anda dan inisialisasi proyek.
catatan
Template AWS CDK aplikasi menggunakan nama direktori proyek untuk menghasilkan nama untuk file sumber dan kelas. Dalam contoh ini, direktori diberi namahello-lambda. Jika Anda menggunakan nama direktori proyek yang berbeda, aplikasi Anda tidak akan cocok dengan instruksi ini.
AWS CDK v2 menyertakan konstruksi stabil untuk semua Layanan AWS dalam satu paket yang dipanggilaws-cdk-lib. Paket ini diinstal sebagai dependensi saat Anda menginisialisasi proyek. Saat bekerja dengan bahasa pemrograman tertentu, paket diinstal ketika Anda membangun proyek untuk pertama kalinya.
Langkah 2: Tentukan AWS CDK tumpukan
Tumpukan CD K adalah kumpulan dari satu atau lebih konstruksi, yang mendefinisikan AWS sumber daya. Setiap tumpukan CDK mewakili tum CloudFormation pukan di aplikasi CDK Anda.
Untuk menentukan tumpukan CDK Anda, ikuti instruksi untuk bahasa pemrograman pilihan Anda. Tumpukan ini mendefinisikan sebagai berikut:
-
Nama logis fungsi:
MyFunction -
Lokasi kode fungsi, ditentukan dalam
codeproperti. Untuk informasi selengkapnya, lihat Kode Handler di Refer AWS Cloud Development Kit (AWS CDK) ensi API. -
Nama logis REST API:
HelloApi -
Nama logis titik akhir API Gateway:
ApiGwEndpoint
Perhatikan bahwa semua tumpukan CDK dalam tutorial ini menggunakan Node.js runtime untuk fungsi Lambda. Anda dapat menggunakan bahasa pemrograman yang berbeda untuk tumpukan CDK dan fungsi Lambda untuk menggunakan kekuatan setiap bahasa. Misalnya, Anda dapat menggunakan TypeScript untuk tumpukan CDK untuk menggunakan manfaat pengetikan statis untuk kode infrastruktur Anda. Anda dapat menggunakan fungsi Lambda JavaScript untuk memanfaatkan fleksibilitas dan perkembangan cepat dari bahasa yang diketik secara dinamis.
Langkah 3: Buat kode fungsi Lambda
-
Dari root proyek Anda (
hello-lambda), buat/lib/lambda-handlerdirektori untuk kode fungsi Lambda. Direktori ini ditentukan dalamcodeproperti AWS CDK tumpukan Anda. -
Buat file baru yang disebut
index.jsdi/lib/lambda-handlerdirektori. Tempel kode berikut ke file. Fungsi mengekstrak properti tertentu dari permintaan API dan mengembalikannya sebagai respons JSON.exports.handler = async (event) => { // Extract specific properties from the event object const { resource, path, httpMethod, headers, queryStringParameters, body } = event; const response = { resource, path, httpMethod, headers, queryStringParameters, body, }; return { body: JSON.stringify(response, null, 2), statusCode: 200, }; };
Langkah 4: Terapkan AWS CDK tumpukan
-
Dari root proyek Anda, jalankan perintah cdk synth:
cdk synthPerintah ini mensintesis AWS CloudFormation template dari tumpukan CDK Anda. Template adalah file YAML sekitar 400 baris, mirip dengan berikut ini.
catatan
Jika Anda mendapatkan kesalahan berikut, pastikan bahwa Anda berada di root direktori proyek Anda.
--app is required either in command-line, in cdk.json or in ~/.cdk.jsoncontoh CloudFormation templat
Resources: MyFunctionServiceRole3C357FF2: 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: HelloLambdaStack/MyFunction/ServiceRole/Resource MyFunction1BAA52E7: Type: AWS::Lambda::Function Properties: Code: S3Bucket: Fn::Sub: cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region} S3Key: ab1111111cd32708dc4b83e81a21c296d607ff2cdef00f1d7f48338782f92l3901.zip Handler: index.handler Role: Fn::GetAtt: - MyFunctionServiceRole3C357FF2 - Arn Runtime: nodejs24.x ... -
Jalankan perintah cdk deploy:
cdk deployTunggu sementara sumber daya Anda dibuat. Output akhir menyertakan URL untuk titik akhir API Gateway Anda. Contoh:
Outputs: HelloLambdaStack.ApiGwEndpoint77F417B1 =https://abcd1234.execute-api.us-east-1.amazonaws.com/prod/
Langkah 5: Uji fungsinya
Untuk memanggil fungsi Lambda, salin titik akhir API Gateway dan tempelkan ke browser web atau jalankan perintah: curl
curl -shttps://abcd1234.execute-api.us-east-1.amazonaws.com/prod/
Respons adalah representasi JSON dari properti yang dipilih dari objek peristiwa asli, yang berisi informasi tentang permintaan yang dibuat ke titik akhir API Gateway. Contoh:
{
"resource": "/",
"path": "/",
"httpMethod": "GET",
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Accept-Language": "en-US,en;q=0.9",
"CloudFront-Forwarded-Proto": "https",
"CloudFront-Is-Desktop-Viewer": "true",
"CloudFront-Is-Mobile-Viewer": "false",
"CloudFront-Is-SmartTV-Viewer": "false",
"CloudFront-Is-Tablet-Viewer": "false",
"CloudFront-Viewer-ASN": "16509",
"CloudFront-Viewer-Country": "US",
"Host": "abcd1234.execute-api.us-east-1.amazonaws.com",
...
Langkah 6: Bersihkan sumber daya Anda
Titik akhir API Gateway dapat diakses publik. Untuk mencegah biaya tak terduga, jalankan perintah cdk estroy untuk menghapus tumpukan dan semua sumber daya terkait.
cdk destroy
Langkah selanjutnya
Untuk informasi tentang menulis AWS CDK aplikasi dalam bahasa pilihan Anda, lihat berikut ini: