Last active
February 13, 2023 09:27
-
-
Save zirkelc/084fcec40849e4189749fd9076d5350c to your computer and use it in GitHub Desktop.
Serverless Step Function Type Defintions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import type { AWS } from '@serverless/typescript'; | |
export interface CustomServerless extends AWS { | |
stepFunctions: { | |
stateMachines: StateMachines; | |
validate?: boolean; | |
}; | |
} | |
type StateMachines = { | |
[stateMachine: string]: { | |
id: string; | |
name: string; | |
definition: Definition; | |
tracingConfig?: TracingConfig; | |
}; | |
}; | |
type TracingConfig = { | |
enabled: boolean; | |
}; | |
type Definition = { | |
Comment?: string; | |
StartAt: string; | |
States: States; | |
}; | |
type States = { | |
[state: string]: Choice | Fail | Map | Task | Parallel | Pass | Wait; | |
}; | |
type StateBase = { | |
Catch?: Catcher[]; | |
Retry?: Retrier[]; | |
End?: boolean; | |
InputPath?: string; | |
Next?: string; | |
OutputPath?: string; | |
ResultPath?: string; | |
ResultSelector?: { [key: string]: string | { [key: string]: string } }; | |
Type: string; | |
Comment?: string; | |
}; | |
type ChoiceRuleComparison = { | |
Variable: string; | |
BooleanEquals?: number; | |
BooleanEqualsPath?: string; | |
IsBoolean?: boolean; | |
IsNull?: boolean; | |
IsNumeric?: boolean; | |
IsPresent?: boolean; | |
IsString?: boolean; | |
IsTimestamp?: boolean; | |
NumericEquals?: number; | |
NumericEqualsPath?: string; | |
NumericGreaterThan?: number; | |
NumericGreaterThanPath?: string; | |
NumericGreaterThanEquals?: number; | |
NumericGreaterThanEqualsPath?: string; | |
NumericLessThan?: number; | |
NumericLessThanPath?: string; | |
NumericLessThanEquals?: number; | |
NumericLessThanEqualsPath?: string; | |
StringEquals?: string; | |
StringEqualsPath?: string; | |
StringGreaterThan?: string; | |
StringGreaterThanPath?: string; | |
StringGreaterThanEquals?: string; | |
StringGreaterThanEqualsPath?: string; | |
StringLessThan?: string; | |
StringLessThanPath?: string; | |
StringLessThanEquals?: string; | |
StringLessThanEqualsPath?: string; | |
StringMatches?: string; | |
TimestampEquals?: string; | |
TimestampEqualsPath?: string; | |
TimestampGreaterThan?: string; | |
TimestampGreaterThanPath?: string; | |
TimestampGreaterThanEquals?: string; | |
TimestampGreaterThanEqualsPath?: string; | |
TimestampLessThan?: string; | |
TimestampLessThanPath?: string; | |
TimestampLessThanEquals?: string; | |
TimestampLessThanEqualsPath?: string; | |
}; | |
type ChoiceRuleNot = { | |
Not: ChoiceRuleComparison; | |
Next: string; | |
}; | |
type ChoiceRuleAnd = { | |
And: ChoiceRuleComparison[]; | |
Next: string; | |
}; | |
type ChoiceRuleOr = { | |
Or: ChoiceRuleComparison[]; | |
Next: string; | |
}; | |
type ChoiceRuleSimple = ChoiceRuleComparison & { | |
Next: string; | |
}; | |
type ChoiceRule = ChoiceRuleSimple | ChoiceRuleNot | ChoiceRuleAnd | ChoiceRuleOr; | |
interface Choice extends StateBase { | |
Type: 'Choice'; | |
Choices: ChoiceRule[]; | |
Default?: string; | |
} | |
interface Fail extends StateBase { | |
Type: 'Fail'; | |
Cause?: string; | |
Error?: string; | |
} | |
interface Map extends StateBase { | |
Type: 'Map'; | |
ItemsPath: string; | |
Iterator: Definition; | |
} | |
type Resource = string | { 'Fn::GetAtt': [string, 'Arn'] } | { 'Fn::Join': [string, Resource[]] }; | |
interface TaskParametersForLambda { | |
FunctionName?: Resource; | |
Payload?: { | |
'token.$': string; | |
[key: string]: string; | |
}; | |
[key: string]: unknown; | |
} | |
interface TaskParametersForStepFunction { | |
StateMachineArn: Resource; | |
Input?: { | |
'AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$': '$$.Execution.Id'; | |
[key: string]: string; | |
}; | |
Retry?: [{ ErrorEquals?: string[] }]; | |
End?: boolean; | |
} | |
interface Task extends StateBase { | |
Type: 'Task'; | |
Resource: Resource; | |
Parameters?: | |
| TaskParametersForLambda | |
| TaskParametersForStepFunction | |
| { [key: string]: string | { [key: string]: string } }; | |
} | |
interface Pass extends StateBase { | |
Type: 'Pass'; | |
Parameters?: { | |
[key: string]: string | Array<unknown> | { [key: string]: string }; | |
}; | |
} | |
interface Parallel extends StateBase { | |
Type: 'Parallel'; | |
Branches: Definition[]; | |
} | |
interface Wait extends StateBase { | |
Type: 'Wait'; | |
Next?: string; | |
Seconds: number; | |
} | |
type Catcher = { | |
ErrorEquals: ErrorName[]; | |
Next: string; | |
ResultPath?: string; | |
}; | |
type Retrier = { | |
ErrorEquals: string[]; | |
IntervalSeconds?: number; | |
MaxAttempts?: number; | |
BackoffRate?: number; | |
}; | |
type ErrorName = | |
| 'States.ALL' | |
| 'States.DataLimitExceeded' | |
| 'States.Runtime' | |
| 'States.Timeout' | |
| 'States.TaskFailed' | |
| 'States.Permissions' | |
| string; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The
events
when specified on a normal Lambda function are being created by the core Serverless Framework. That means, all events on this list are supported out of the box.However, the
events
onstepFunctions
are a plugin specific implementation ofserverless-step-functions
. That means, not necessarily all events are supported and even if the the same events are supported, they might be implemented differently. I would suggest you go to serverless-step-funcrtions and open a new issue as feature request.