Pengujian Fungsi Langkah dan AWS SAM CLI lokal - AWS Step Functions

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

Pengujian Fungsi Langkah dan AWS SAM CLI lokal

Dengan AWS Step Functions dan AWS Lambda berjalan di mesin lokal Anda, Anda dapat menguji mesin status dan fungsi Lambda tanpa men-deploy kode Anda ke AWS.

Untuk informasi lain, lihat topik berikut:

Langkah 1: Siapkan AWS SAM

CLI Lokal AWS Serverless Application Model (AWS SAM) memerlukan AWS Command Line Interface, AWS SAM, dan Docker agar dapat diinstal.

  1. Instal CLI AWS SAM.

    catatan

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

  2. Buka dokumentasi Quick Start AWS SAM. 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 coba AWS SAM CLI Local

Sekarang setelah Anda menginstal AWS SAM dan membuat 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 simillar sebagai 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 menampilkan simillar respon sebagai berikut:

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

Masukkan CTRL+C untuk mengakhiri API Lambda.

Langkah 3: Mulai AWS SAM CLI Local

Setelah Anda menguji kemampuan bekerja fungsi tersebut, mulai AWS SAM CLI Local. Di sam-app direktori, masukkan perintah berikut:

sam local start-lambda

Ini dimulai AWS SAM CLI lokal 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

File JAR

Jika Anda menggunakan versi .jar file Step Functions Local, mulai Step Functions dan tentukan endpoint 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 versi Docker dari Step Functions Local, 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) dan 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 Status yang Mereferensikan Fungsi AWS SAM CLI Local Anda

Setelah Step Functions Local berjalan, buat mesin state yang mereferensikan HelloWorldFunction yang Anda inisialisasi. Langkah 1: Siapkan 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"

Tindakan ini akan menciptakan sebuah mesin status dan menyediakan 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, mulai eksekusi. Anda harus mereferensikan ARN endpoint dan state machine saat menggunakan perintah berikut: aws stepfunctions

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" }

Kini Step Functions berjalan secara lokal, Anda dapat berinteraksi dengan 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 rincian 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": "{}" }