Я пытаюсь настроить простое многоступенчатое задание с помощью шагов AWS Функции с Serverless Framework, который включает в качестве первого шага лямбда, генерирующая вывод json, и в качестве второго шага задача Fargate, которая должна получить json в качестве входных данных.
В основном лямбда генерирует следующий вывод:
{
'payload': 'Some payload as a string'
}
Мне нужно передать этот вывод в качестве входных данных для задачи Fargate, в качестве переменной среды или любого другого метода, но я не могу понять, какой синтаксис мне следует использовать. Я пробовал следующее:
stepFunctions:
stateMachines:
MyStateMachine:
name: MyStateMachine
loggingConfig:
level: ALL
includeExecutionData: true
destinations:
- Fn::GetAtt: [StateMachineLogGroup, Arn]
definition:
StartAt: LambdaStep
States:
LambdaStep:
Type: Task
Resource:
Fn::GetAtt: [lambda_step, Arn]
ResultPath: $
Next: FargateStep
FargateStep:
Type: Task
Resource: arn:aws:states:::ecs:runTask.sync
Parameters:
Cluster: "#{ECSCluster}"
TaskDefinition: "#{FargateTaskDefinition}"
LaunchType: FARGATE
NetworkConfiguration:
AwsvpcConfiguration:
Subnets:
- "#{PublicSubnetOne}"
- "#{PublicSubnetTwo}"
AssignPublicIp: ENABLED
Overrides:
ContainerOverrides:
- Name: my-fargate-container
Environment:
- Name: LAMBDA_RESULT
Value: $.payload
Next: Done
Done:
Type: Succeed
Но в журналах контейнера переменная среды LAMBDA_RESULT
просто установлена в $.payload
, что означает, что синтаксис пути json не разрешается из входных данных.
Я тоже пробовал это
Overrides:
ContainerOverrides:
- Name: my-fargate-container
Environment:
- Name: LAMBDA_RESULT
Value: $$.payload
и это
FargateStep:
Type: Task
Resource: arn:aws:states:::ecs:runTask.sync
InputPath: $.payload # <-- added this
Parameters:
Cluster: "#{ECSCluster}"
TaskDefinition: "#{FargateTaskDefinition}"
LaunchType: FARGATE
NetworkConfiguration:
AwsvpcConfiguration:
Subnets:
- "#{PublicSubnetOne}"
- "#{PublicSubnetTwo}"
AssignPublicIp: ENABLED
Overrides:
ContainerOverrides:
- Name: my-fargate-container
Environment:
- Name: LAMBDA_RESULT
Value: $.payload
Next: Done
Никто не работал. Любой рабочий пример того, как правильно передавать данные из Lambda в задачу Fargate с помощью пошаговых функций?