Canned Actions¶
AWS StepFunction Visual Editor provides a “low code”, “drag and drop” development experience. As developer, we would like to take the same benefit, but in codes.
All available canned actions are defined in aws_stepfunction.actions.${action_name}
name space. Feel free to submit feature request to support more canned actions.
[14]:
import aws_stepfunction as sfn
from rich import print
sfn.task_context.aws_account_id = "111122223333"
sfn.task_context.aws_region = "us-east-1"
[15]:
task_lambda_invoke = sfn.actions.lambda_invoke(
func_name="my_lbd_func",
)
task_lambda_invoke.end = True
print(task_lambda_invoke.serialize())
{ 'Type': 'Task', 'Resource': 'arn:aws:states:::lambda:invoke', 'End': True, 'Parameters': {'Payload.$': '$', 'FunctionName': 'arn:aws:lambda:us-east-1:111122223333:my_lbd_func'}, 'OutputPath': '$.Payload', 'Retry': [ { 'ErrorEquals': ['Lambda.ServiceException', 'Lambda.AWSLambdaException', 'Lambda.SdkClientException'], 'IntervalSeconds': 2, 'BackoffRate': 2, 'MaxAttempts': 3 } ] }
[16]:
task_ecs_run_task = sfn.actions.ecs_run_task(
task_def="my-task:1",
)
task_ecs_run_task.end = True
print(task_ecs_run_task.serialize())
{ 'Type': 'Task', 'Resource': 'arn:aws:states:::ecs:runTask.sync', 'End': True, 'Parameters': { 'LaunchType': 'FARGATE', 'Cluster': 'arn:aws:ecs:REGION:ACCOUNT_ID:cluster/MyECSCluster', 'TaskDefinition': 'arn:aws:ecs:us-east-1:111122223333:task-definition/my-task:1' } }
[17]:
task_glue_start_job_run = sfn.actions.glue_start_job_run(
job_name="my_etl_job"
)
task_glue_start_job_run.end = True
print(task_glue_start_job_run.serialize())
{ 'Type': 'Task', 'Resource': 'arn:aws:states:::glue:startJobRun.sync', 'End': True, 'Parameters': {'JobName': 'my_etl_job'} }
[18]:
task_sns_publish = sfn.actions.sns_publish(
topic="my_topic",
message={"body": "something happens"},
)
task_sns_publish.end = True
print(task_sns_publish.serialize())
{ 'Type': 'Task', 'Resource': 'arn:aws:states:::sns:publish', 'End': True, 'Parameters': { 'TopicArn': 'arn:aws:sns:us-east-1:111122223333:my_topic', 'Message': {'body': 'something happens'} } }
[18]: