Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Anda dapat menggunakan AWS Cloud Development Kit (AWS CDK) Infrastruktur sebagai kerangka Kode (IAC), untuk membuat AWS Step Functions mesin negara yang berisi AWS Lambda fungsi.
Anda akan menentukan AWS infrastruktur menggunakan salah satu CDKbahasa yang didukung. Setelah menentukan infrastruktur, Anda akan mensintesis aplikasi ke AWS CloudFormation template dan menyebarkannya ke AWS akun Anda.
Anda akan menggunakan metode ini untuk mendefinisikan mesin status Step Functions yang berisi fungsi Lambda, dan kemudian menjalankan mesin status dari penggunaan Step Functions. AWS Management Console
Sebelum Anda memulai tutorial ini, Anda harus mengatur AWS CDK lingkungan pengembangan seperti yang dijelaskan dalam Memulai Dengan AWS CDK - Prasyarat dalam Panduan Pengembang.AWS Cloud Development Kit (AWS CDK) Kemudian, instal AWS CDK dengan perintah berikut di AWS CLI:
npm install -g aws-cdk
Tutorial ini menghasilkan hasil yang sama sepertiMenggunakan AWS CloudFormation untuk membuat alur kerja di Step Functions. Namun, dalam tutorial ini, AWS CDK tidak mengharuskan Anda untuk membuat IAM peran; AWS CDK melakukannya untuk Anda. Bagian AWS CDK versi juga mencakup Status alur kerja yang berhasil langkah untuk mengilustrasikan cara menambahkan langkah tambahan ke mesin status Anda.
Tip
Untuk menerapkan contoh aplikasi tanpa server yang memulai Step Functions alur kerja menggunakan AWS CDK dengan TypeScript, lihat Menerapkan dengan AWS CDK
Langkah 1: Siapkan AWS CDK proyek
-
Di direktori home Anda, atau direktori lain jika Anda mau, jalankan perintah berikut untuk membuat direktori untuk yang baru AWS CDK aplikasi.
penting
Pastikan untuk memberi nama
step
direktori. Bagian AWS CDK Template aplikasi menggunakan nama direktori untuk menghasilkan nama untuk file sumber dan kelas. Jika Anda menggunakan nama yang berbeda, aplikasi Anda tidak akan cocok dengan tutorial ini.mkdir step && cd step
-
Inisialisasi aplikasi dengan menggunakan perintah cdk init. Tentukan template yang diinginkan (“aplikasi”) dan bahasa pemrograman seperti yang ditunjukkan pada contoh berikut.
cdk init --language typescript
Langkah 2: Gunakan AWS CDK untuk membuat mesin negara
Pertama, kami akan menyajikan potongan kode individual yang mendefinisikan Lambda fungsi dan Step Functions mesin negara. Kemudian, kami akan menjelaskan cara menyatukannya di AWS CDK aplikasi. Akhirnya, Anda akan melihat cara mensintesis dan menyebarkan sumber daya ini.
Untuk membuat Lambda Fungsi
Berikut ini AWS CDK kode mendefinisikan Lambda fungsi, menyediakan kode sumbernya inline.
const helloFunction = new lambda.Function(this, 'MyLambdaFunction', {
code: lambda.Code.fromInline(`
exports.handler = (event, context, callback) => {
callback(null, "Hello World!");
};
`),
runtime: lambda.Runtime.NODEJS_18_X,
handler: "index.handler",
timeout: cdk.Duration.seconds(3)
});
Anda dapat melihat dalam kode contoh singkat ini:
-
Nama logis fungsi,
MyLambdaFunction
. -
Kode sumber untuk fungsi, disematkan sebagai string dalam kode sumber AWS CDK aplikasi.
-
Atribut fungsi lainnya, seperti runtime yang akan digunakan (Node 18.x), titik masuk fungsi, dan batas waktu.
Untuk membuat mesin status
Mesin negara kami memiliki dua status: a Lambda tugas fungsi, dan Status alur kerja yang berhasil negara. Fungsi tersebut mengharuskan kita membuat Step Functions Status alur kerja tugasyang memanggil fungsi kita. Status Tugas ini digunakan sebagai langkah pertama dalam mesin negara. Status sukses ditambahkan ke mesin status menggunakan next()
metode status Tugas. Kode berikut pertama memanggil fungsi bernamaMyLambdaTask
, kemudian menggunakan next()
metode untuk mendefinisikan status sukses bernamaGreetedWorld
.
const stateMachine = new sfn.StateMachine(this, 'MyStateMachine', {
definition: new tasks.LambdaInvoke(this, "MyLambdaTask", {
lambdaFunction: helloFunction
}).next(new sfn.Succeed(this, "GreetedWorld"))
});
Untuk membangun dan menyebarkan AWS CDK aplikasi
Dalam Anda yang baru dibuat AWS CDK proyek, edit file yang berisi definisi tumpukan agar terlihat seperti kode contoh berikut. Anda akan mengenali definisi dari Lambda fungsi dan Step Functions mesin negara dari bagian sebelumnya.
-
Perbarui tumpukan seperti yang ditunjukkan pada contoh berikut.
Perbarui
lib/step-stack.ts
dengan kode berikut.import * as cdk from 'aws-cdk-lib'; import * as lambda from 'aws-cdk-lib/aws-lambda'; import * as sfn from 'aws-cdk-lib/aws-stepfunctions'; import * as tasks from 'aws-cdk-lib/aws-stepfunctions-tasks'; export class StepStack extends cdk.Stack { constructor(app: cdk.App, id: string) { super(app, id); const helloFunction = new lambda.Function(this, 'MyLambdaFunction', { code: lambda.Code.fromInline(` exports.handler = (event, context, callback) => { callback(null, "Hello World!"); }; `), runtime: lambda.Runtime.NODEJS_18_X, handler: "index.handler", timeout: cdk.Duration.seconds(3) }); const stateMachine = new sfn.StateMachine(this, 'MyStateMachine', { definition: new tasks.LambdaInvoke(this, "MyLambdaTask", { lambdaFunction: helloFunction }).next(new sfn.Succeed(this, "GreetedWorld")) }); } }
-
Simpan file sumber, lalu jalankan
cdk synth
perintah di direktori utama aplikasi.AWS CDK menjalankan aplikasi dan mensintesis AWS CloudFormation Template dari itu. AWS CDK kemudian menampilkan template.
catatan
Jika Anda TypeScript terbiasa membuat AWS CDK proyek, menjalankan
cdk synth
perintah dapat mengembalikan kesalahan berikut.TSError: ⨯ Unable to compile TypeScript: bin/step.ts:7:33 - error TS2554: Expected 2 arguments, but got 3.
Ubah
bin/step.ts
file seperti yang ditunjukkan pada contoh berikut untuk mengatasi kesalahan ini.#!/usr/bin/env node import 'source-map-support/register'; import * as cdk from 'aws-cdk-lib'; import { StepStack } from '../lib/step-stack'; const app = new cdk.App(); new StepStack(app, 'StepStack'); app.synth();
-
Untuk menerapkan fungsi Lambda dan mesin status Step Functions ke akun AWS Anda, masalah.
cdk deploy
Anda akan diminta untuk menyetujui kebijakan IAM yang AWS CDK telah dihasilkan.
Langkah 3: Mulai eksekusi mesin negara
Setelah Anda membuat mesin negara Anda, Anda dapat memulai eksekusi.
Untuk memulai eksekusi mesin status
-
Buka konsol Step Functions
dan pilih nama mesin status yang Anda buat AWS CDK. -
Pada halaman mesin status, pilih Mulai eksekusi.
Kotak dialog Mulai eksekusi ditampilkan.
(Opsional) Masukkan nama eksekusi khusus untuk mengganti default yang dihasilkan.
Nama dan pencatatan non-ASCII
Step Functions menerima nama untuk mesin negara, eksekusi, aktivitas, dan label yang berisi karakter non-ASCII. Karena karakter seperti itu tidak akan berfungsi dengan Amazon CloudWatch, kami sarankan hanya menggunakan karakter ASCII sehingga Anda dapat melacak metrik. CloudWatch
-
Pilih Mulai Eksekusi.
Eksekusi state machine Anda dimulai, dan halaman baru yang menunjukkan eksekusi yang sedang berjalan ditampilkan.
-
Konsol Step Functions mengarahkan Anda ke halaman yang berjudul dengan ID eksekusi Anda. Halaman ini dikenal sebagai halaman Detail Eksekusi. Di halaman ini, Anda dapat meninjau hasil eksekusi saat eksekusi berlangsung atau setelah selesai.
Untuk meninjau hasil eksekusi, pilih status individual pada tampilan Grafik, lalu pilih tab individual di Detail langkah panel untuk melihat detail setiap status termasuk input, output, dan definisi masing-masing. Untuk detail tentang informasi eksekusi yang dapat Anda lihat di halaman Rincian Eksekusi, lihatIkhtisar detail eksekusi.
Langkah 4: Bersihkan
Setelah Anda menguji mesin status Anda, kami sarankan Anda menghapus mesin status dan fungsi Lambda terkait untuk membebaskan sumber daya di mesin Anda. Akun AWS Jalankan cdk destroy
perintah di direktori utama aplikasi Anda untuk menghapus mesin status Anda.
Langkah selanjutnya
Untuk mempelajari lebih lanjut tentang mengembangkan AWS infrastruktur menggunakan AWS CDK, lihat AWS CDK Panduan Pengembang.
Untuk informasi tentang menulis AWS CDK aplikasi dalam bahasa pilihan Anda, lihat:
Untuk informasi lebih lanjut tentang modul AWS Construct Library yang digunakan dalam tutorial ini, lihat berikut AWS CDK Ihtisar Referensi API: