Tutorial: Menguji alur kerja menggunakan Step Functions dan AWS SAM CLILokal - AWS Step Functions

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tutorial: Menguji alur kerja menggunakan Step Functions dan AWS SAM CLILokal

Dengan keduanya AWS Step Functions and AWS Lambda berjalan di mesin lokal Anda, Anda dapat menguji mesin status dan fungsi Lambda Anda tanpa menerapkan kode Anda AWS.

Untuk informasi selengkapnya, lihat topik berikut.

Langkah 1: Mengatur AWS SAM

AWS Serverless Application Model (AWS SAM) CLI Lokal membutuhkan AWS Command Line Interface, AWS SAM, dan Docker akan diinstal.

  1. Instal AWS SAM CLI.

    catatan

    Sebelum menginstal AWS SAM CLI, Anda perlu menginstal AWS CLI dan Docker. Lihat Prasyarat untuk menginstal AWS SAM CLI.

  2. Pergi melalui AWS SAMDokumentasi Mulai Cepat. Pastikan untuk mengikuti langkah-langkah berikut:

    Hal ini menciptakan direktori sam-app, dan membangun lingkungan yang mencakup fungsi Hello World Lambda berbasis Python.

Langkah 2: Uji AWS SAM CLILokal

Sekarang Anda telah menginstal AWS SAM dan menciptakan fungsi Hello World Lambda, Anda dapat menguji fungsinya. Di sam-app direktori, masukkan perintah berikut:

sam local start-api

Langkah ini meluncurkan instans lokal dari fungsi Lambda Anda. Anda akan melihat output yang serupa dengan yang berikut:

2019-01-31 16:40:27 Found credentials in shared credentials file: ~/.aws/credentials 2019-01-31 16:40:27 Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET] 2019-01-31 16:40:27 You can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions changes will be reflected instantly/automatically. You only need to restart SAM CLI if you update your AWS SAM template 2019-01-31 16:40:27 * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)

Buka browser dan masukkan yang berikut ini:

http://127.0.0.1:3000/hello

Ini akan menghasilkan respons yang mirip dengan yang berikut:

{"message": "hello world", "location": "72.21.198.66"}

CTRLMasukkan+C untuk mengakhiri LambdaAPI.

Langkah 3: Mulai AWS SAM CLILokal

Sekarang setelah Anda menguji bahwa fungsinya berfungsi, mulailah AWS SAM CLILokal. Di sam-app direktori, masukkan perintah berikut:

sam local start-lambda

Ini dimulai AWS SAM CLILokal dan menyediakan endpoint untuk digunakan, mirip dengan output berikut:

2019-01-29 15:33:32 Found credentials in shared credentials file: ~/.aws/credentials 2019-01-29 15:33:32 Starting the Local Lambda Service. You can now invoke your Lambda Functions defined in your template through the endpoint. 2019-01-29 15:33:32 * Running on http://127.0.0.1:3001/ (Press CTRL+C to quit)

Langkah 4: Mulai Step Functions Local

JARBerkas

Jika Anda menggunakan versi .jar file Step Functions Local, mulai Step Functions dan tentukan titik akhir Lambda. Di direktori tempat Anda mengekstrak .jar file, masukkan perintah berikut:

java -jar StepFunctionsLocal.jar --lambda-endpoint http://localhost:3001

Saat Step Functions Local dimulai, ia memeriksa lingkungan, lalu kredensial dikonfigurasikan di file ~/.aws/credentials Anda. Secara default, itu mulai menggunakan ID pengguna fiktif, dan terdaftar sebagai. region us-east-1

2019-01-29 15:38:06.324: Failed to load credentials from environment because Unable to load AWS credentials from environment variables (AWS_ACCESS_KEY_ID (or AWS_ACCESS_KEY) and AWS_SECRET_KEY (or AWS_SECRET_ACCESS_KEY)) 2019-01-29 15:38:06.326: Loaded credentials from profile: default 2019-01-29 15:38:06.326: Starting server on port 8083 with account 123456789012, region us-east-1

Docker

Jika Anda menggunakan Step Functions Local versi Docker, luncurkan Step Functions dengan perintah berikut:

docker run -p 8083:8083 amazon/aws-stepfunctions-local

Untuk informasi tentang menginstal Step Functions versi Docker, lihat Menyiapkan Step Functions Lokal (Versi yang Dapat Diunduh) di Docker.

catatan

Anda dapat menentukan titik akhir melalui baris perintah atau dengan menetapkan variabel lingkungan jika Anda meluncurkan Step Functions dari file .jar. Untuk versi Docker, Anda harus menentukan titik akhir dan kredensial dalam file teks. Lihat Mengatur Opsi Konfigurasi untuk Step Functions Lokal.

Langkah 5: Buat Mesin Negara yang Mereferensikan Anda AWS SAM CLIFungsi Lokal

Setelah Step Functions Local berjalan, buat mesin status yang mereferensikan HelloWorldFunction yang Anda inisialisasi. Langkah 1: Mengatur AWS SAM

aws stepfunctions --endpoint http://localhost:8083 create-state-machine --definition "{\ \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Local function\",\ \"StartAt\": \"HelloWorld\",\ \"States\": {\ \"HelloWorld\": {\ \"Type\": \"Task\",\ \"Resource\": \"arn:aws:lambda:us-east-1:123456789012:function:HelloWorldFunction\",\ \"End\": true\ }\ }\ }\" --name "HelloWorld" --role-arn "arn:aws:iam::012345678901:role/DummyRole"

Ini akan membuat mesin status dan memberikan Amazon Resource Name (ARN) yang dapat Anda gunakan untuk memulai eksekusi.

{ "creationDate": 1548805711.403, "stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld" }

Langkah 6: Mulai Eksekusi Mesin Status Lokal Anda.

Setelah Anda membuat mesin negara, mulailah eksekusi. Anda harus mereferensikan endpoint dan state machine ARN saat menggunakan aws stepfunctions perintah berikut:

aws stepfunctions --endpoint http://localhost:8083 start-execution --state-machine arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld --name test

Ini memulai eksekusi bernama test mesin HelloWorld negara Anda.

{ "startDate": 1548810641.52, "executionArn": "arn:aws:states:us-east-1:123456789012:execution:HelloWorld:test" }

Sekarang Step Functions berjalan secara lokal, Anda dapat berinteraksi dengannya menggunakan AWS CLI. Misalnya, untuk mendapatkan informasi tentang eksekusi ini, gunakan perintah berikut:

aws stepfunctions --endpoint http://localhost:8083 describe-execution --execution-arn arn:aws:states:us-east-1:123456789012:execution:HelloWorld:test

describe-executionMemanggil eksekusi memberikan detail yang lebih lengkap, mirip dengan output berikut:

{ "status": "SUCCEEDED", "startDate": 1549056334.073, "name": "test", "executionArn": "arn:aws:states:us-east-1:123456789012:execution:HelloWorld:test", "stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "stopDate": 1549056351.276, "output": "{\"statusCode\": 200, \"body\": \"{\\\"message\\\": \\\"hello world\\\", \\\"location\\\": \\\"72.21.198.64\\\"}\"}", "input": "{}" }