Menggunakan AWS SAM untuk membangun alur kerja Step Functions - AWS Step Functions

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

Menggunakan AWS SAM untuk membangun alur kerja Step Functions

Anda dapat menggunakan AWS Serverless Application Model Step Functions untuk membangun alur kerja dan menyebarkan infrastruktur yang Anda butuhkan, termasuk fungsi Lambda, APIs dan peristiwa, untuk membuat aplikasi tanpa server.

Anda juga dapat menggunakan AWS Serverless Application Model CLI bersama dengan AWS Toolkit for Visual Studio Code sebagai bagian dari pengalaman terintegrasi untuk membangun dan menyebarkan AWS Step Functions mesin status. Anda dapat membuat aplikasi nirserver dengan AWS SAM, kemudian membangun mesin status Anda di VS Code IDE. Kemudian Anda dapat memvalidasi, mengemas, dan menyebarkan sumber daya Anda.

Tip

Untuk menerapkan contoh aplikasi tanpa server yang memulai alur kerja Step Functions menggunakan AWS SAM, lihat Menerapkan dengan di Workshop. AWS SAM AWS Step Functions

Mengapa menggunakan Step Functions dengan AWS SAM?

Bila Anda menggunakan Step Functions dengan AWS SAM Anda dapat:

  • Mulai menggunakan template AWS SAM sampel.

  • Membangun mesin status Anda ke dalam aplikasi nirserver.

  • Gunakan substitusi variabel untuk mengganti ARNs ke mesin status Anda pada saat penerapan.

    AWS CloudFormationmendukung DefinitionSubstitutionsyang memungkinkan Anda menambahkan referensi dinamis dalam definisi alur kerja Anda ke nilai yang Anda berikan di CloudFormation template Anda. Anda dapat menambahkan referensi dinamis dengan menambahkan substitusi ke definisi alur kerja Anda menggunakan notasi. ${dollar_sign_brace} Anda juga perlu mendefinisikan referensi dinamis ini di DefinitionSubstitutions properti untuk StateMachine sumber daya di CloudFormation template Anda. Substitusi ini diganti dengan nilai aktual selama proses pembuatan CloudFormation tumpukan. Untuk informasi selengkapnya, lihat DefinitionSubstitutions dalam AWS SAM template.

  • Tentukan peran mesin status Anda menggunakan templat AWS SAM kebijakan.

  • Memulai eksekusi mesin status dengan API Gateway, EventBridge peristiwa, atau pada jadwal dalam template Anda AWS SAM .

Integrasi Step Functions dengan spesifikasi AWS SAM

Anda dapat menggunakan Templat AWS SAM Kebijakan untuk menambahkan izin ke mesin status Anda. Dengan izin ini, Anda dapat mengatur fungsi Lambda dan sumber daya AWS lainnya untuk membentuk alur kerja yang kompleks dan kuat.

Integrasi Step Functions dengan SAM CLI

Step Functions terintegrasi dengan AWS SAM CLI. Gunakan ini untuk mengembangkan mesin status Anda ke dalam aplikasi nirserver dengan cepat.

Coba Buat mesin status Step Functions menggunakan AWS SAM tutorial untuk mempelajari cara menggunakan AWS SAM untuk membuat mesin negara.

Fungsi AWS SAM CLI yang didukung meliputi:

Perintah CLI Deskripsi
init sam

Menginisialisasi Aplikasi Tanpa Server dengan template. AWS SAM Dapat digunakan dengan templat SAM untuk Step Functions.

validasi sam Memvalidasi AWS SAM template.
paket sam

Paket AWS SAM aplikasi. Ini membuat file ZIP kode dan dependensi Anda, dan kemudian mengunggahnya ke Amazon S3. Kemudian mengembalikan salinan templat AWS SAM Anda, menggantikan referensi ke artefak lokal dengan lokasi Amazon S3 tempat perintah mengunggah artefak.

deploy sam Menyebarkan AWS SAM aplikasi.
terbitan sam

Publikasikan AWS SAM aplikasi ke AWS Serverless Application Repository. Perintah ini mengambil AWS SAM template yang dikemas dan menerbitkan aplikasi ke wilayah yang ditentukan.

catatan

Saat menggunakan AWS SAM lokal, Anda dapat meniru Lambda dan API Gateway secara lokal. Namun, Anda tidak dapat meniru Step Functions secara lokal menggunakan. AWS SAM

DefinitionSubstitutions dalam AWS SAM template

Anda dapat menentukan mesin negara menggunakan CloudFormation templat denganAWS SAM. Dengan menggunakan AWS SAM, Anda dapat mendefinisikan inline mesin status di templat atau di file terpisah. AWS SAMTemplate berikut mencakup mesin negara yang mensimulasikan alur kerja perdagangan saham. Mesin negara ini menggunakan tiga Lambda fungsi untuk memeriksa harga saham dan menentukan apakah akan membeli atau menjual saham. Transaksi ini kemudian dicatat dalam Amazon DynamoDB tabel. ARNs Untuk Lambda fungsi dan DynamoDB tabel dalam template berikut ditentukan menggunakan DefinitionSubstitutions.

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: | step-functions-stock-trader Sample SAM Template for step-functions-stock-trader Resources: StockTradingStateMachine: Type: AWS::Serverless::StateMachine Properties: DefinitionSubstitutions: StockCheckerFunctionArn: !GetAtt StockCheckerFunction.Arn StockSellerFunctionArn: !GetAtt StockSellerFunction.Arn StockBuyerFunctionArn: !GetAtt StockBuyerFunction.Arn DDBPutItem: !Sub arn:${AWS::Partition}:states:::dynamodb:putItem DDBTable: !Ref TransactionTable Policies: - DynamoDBWritePolicy: TableName: !Ref TransactionTable - LambdaInvokePolicy: FunctionName: !Ref StockCheckerFunction - LambdaInvokePolicy: FunctionName: !Ref StockBuyerFunction - LambdaInvokePolicy: FunctionName: !Ref StockSellerFunction DefinitionUri: statemachine/stock_trader.asl.json StockCheckerFunction: Type: AWS::Serverless::Function Properties: CodeUri: functions/stock-checker/ Handler: app.lambdaHandler Runtime: nodejs18.x Architectures: - x86_64 StockSellerFunction: Type: AWS::Serverless::Function Properties: CodeUri: functions/stock-seller/ Handler: app.lambdaHandler Runtime: nodejs18.x Architectures: - x86_64 StockBuyerFunction: Type: AWS::Serverless::Function Properties: CodeUri: functions/stock-buyer/ Handler: app.lambdaHandler Runtime: nodejs18.x Architectures: - x86_64 TransactionTable: Type: AWS::DynamoDB::Table Properties: AttributeDefinitions: - AttributeName: id AttributeType: S

Kode berikut adalah definisi mesin negara dalam file stock_trader.asl.json yang digunakan dalam Buat mesin status Step Functions menggunakan AWS SAM tutorial. Definisi mesin negara ini berisi beberapa DefinitionSubstitutions dilambangkan dengan notasi. ${dollar_sign_brace} Misalnya, alih-alih menentukan ARN Lambda fungsi statis untuk tugas Check Stock Value tersebut, ${StockCheckerFunctionArn} substitusi digunakan. Substitusi ini didefinisikan dalam DefinitionSubstitutions properti template. DefinitionSubstitutionsadalah peta pasangan kunci-nilai untuk sumber daya mesin negara. DalamDefinitionSubstitutions, $ {StockCheckerFunctionArn} memetakan ke ARN StockCheckerFunction sumber daya menggunakan fungsi CloudFormation intrinsik. !GetAtt Saat Anda menyebarkan AWS SAM template, DefinitionSubstitutions dalam template diganti dengan nilai sebenarnya.

{ "Comment": "A state machine that does mock stock trading.", "StartAt": "Check Stock Value", "States": { "Check Stock Value": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "${StockCheckerFunctionArn}" }, "Next": "Buy or Sell?" }, "Buy or Sell?": { "Type": "Choice", "Choices": [ { "Variable": "$.stock_price", "NumericLessThanEquals": 50, "Next": "Buy Stock" } ], "Default": "Sell Stock" }, "Buy Stock": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "${StockBuyerFunctionArn}" }, "Retry": [ { "ErrorEquals": [ "Lambda.ServiceException", "Lambda.AWSLambdaException", "Lambda.SdkClientException", "Lambda.TooManyRequestsException" ], "IntervalSeconds": 1, "MaxAttempts": 3, "BackoffRate": 2 } ], "Next": "Record Transaction" }, "Sell Stock": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "${StockSellerFunctionArn}" }, "Next": "Record Transaction" }, "Record Transaction": { "Type": "Task", "Resource": "arn:aws:states:::dynamodb:putItem", "Parameters": { "TableName": "${DDBTable}", "Item": { "Id": { "S.$": "$.id" }, "Type": { "S.$": "$.type" }, "Price": { "N.$": "$.price" }, "Quantity": { "N.$": "$.qty" }, "Timestamp": { "S.$": "$.timestamp" } } }, "End": true } } }

Langkah selanjutnya

Anda dapat mempelajari selengkapnya tentang penggunaan Step Functions AWS SAM dengan sumber daya berikut:

Anda juga dapat mendesain dan membangun alur kerja Anda di infrastruktur sebagai kode (IAc) menggunakan pembuat visual, seperti Workflow Studio in. Infrastructure Composer Lihat informasi yang lebih lengkap di Menggunakan Workflow Studio Infrastructure Composer untuk membangun alur kerja Step Functions.