如何解决我可以在状态机定义文件中使用全局变量吗?
我正在使用 AWS SAM 开发一个无服务器项目,该项目由 lambda 和状态机资源组成(请参阅下面的 SAM 模板)。我想知道是否有一种方法可以在我的状态机定义文件中定义“全局”变量,就像我们如何将 Globals 用于 SAM 模板一样。
我想这样做的原因是为了缩短我的状态机定义。现在有状态使用完全相同的属性,例如我的 Fargate 任务的 NetworkConfiguration
块:
deFinition.asl.json
{
"StartAt": "Generate Config","States": {
"Generate Config": {
"Type": "Task","Resource": "${GenerateConfigFunctionArn}","Next": "ETL"
},"ETL": {
"Type": "Task","Resource": "arn:aws:states:::ecs:runTask.sync","Next": "ETL","Parameters": {
"LaunchType": "FARGATE","Cluster": "arn:aws:ecs:region:11111111:cluster/clustername","TaskDeFinition": "arn:aws:ecs:region:11111111:task-deFinition/taskdef","NetworkConfiguration": {
"AwsvpcConfiguration": {
"subnets": [
"subnet-00d610225d369486e"
],"SecurityGroups": [
"sg-016650ff9ecd28a9a"
],"AssignPublicIp": "ENABLED"
}
},"Overrides": {
"ContainerOverrides": [
{
"Name": "Phase-1-start","Environment": [
{
"Name": "COMMAND","Value": "etl"
}
]
}
]
}
}
},"Well_Calc": {
"Type": "Task","End": true,"Value": "calculation"
}
]
}
]
}
}
}
}
}
SAM template
AWstemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Resources:
MySAMPOC:
Type: AWS::Serverless::StateMachine
Properties:
DeFinitionUri: stateMachine/deFinition.asl.json
DeFinitionSubstitutions:
GenerateConfigFunctionArn: !GetAtt GenerateConfigFunction.Arn
GenerateConfigFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: functions/generate_config
Handler: app.lambda_handler
Runtime: python3.8
状态机定义是否支持使用全局(或类似的)?
解决方法
全局变量目前不支持 AWS::Serverless::StateMachine
。您可以考虑的一些替代选项:
- 对某些值使用
DefinitionSubstitutions
:https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-statemachine.html#sam-statemachine-definitionsubstitutions - Step Function 现在在开发工具中支持 YAML,因此从 JSON 切换到 YAML 至少会节省一些缩进和大括号。 https://aws.amazon.com/about-aws/whats-new/2021/03/aws-step-functions-adds-tooling-support-for-yaml/
- 使用 CDK 定义您的状态机。您可以创建封装通用属性的自定义构造。显然这不是 SAM,但您可以将 SAM 资源与 CDK 应用程序集成或考虑将应用程序的一部分迁移到 CDK。 https://docs.aws.amazon.com/cdk/api/latest/docs/aws-stepfunctions-readme.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。