Можно ли выполнять синхронные вызовы функции AWS Step через AWS API Gateway? - PullRequest
0 голосов
/ 09 июля 2020

Есть ли способ сделать синхронный запрос к функции AWS Step через AWS API-шлюз?

Или можно использовать AWS State Machine только для запуска асинхронных заданий?

Настройка, запускающая асинхронное задание, может включать следующее:

  ApiGatewayMethodStartExecution:
    Type: 'AWS::ApiGateway::Method'
    Properties:
      ...
      Integration:
        Type: AWS
        Uri: arn:aws:apigateway:eu-north-1:states:action/StartExecution
        RequestTemplates: 
          application/json: !Sub 
            - |
              ....
            - StateMachineArn: !Ref AStateMachine

  ApiGatewayMethodGetResult:
    Type: 'AWS::ApiGateway::Method'
    Properties:
      ...
      Integration:
        Type: AWS
        Uri: arn:aws:apigateway:eu-north-1:states:action/DescribeExecution
        RequestTemplates: 
          application/json: !Sub 
            - |
              ....
            - StateMachineArn: !Ref AStateMachine

  AStateMachine:
    Type: 'AWS::StepFunctions::StateMachine'
    ...

Ответы [ 2 ]

2 голосов
/ 14 июля 2020

Нет, если вы вызываете пошаговую функцию напрямую. Однако вы можете имитировать c это поведение, заключив функцию step в AWS Lambda. Настройте конечную точку как прокси-сервер Lambda. Имейте AWS лямбда-триггер и / AWS пошаговую функцию, и пусть AWS лямбда отслеживает пошаговую функцию, чтобы определить, когда она завершена. После завершения попросите AWS Lambda получить / вернуть что угодно, которое будет отправлено вызывающей стороне конечной точки. Все эти механизмы должны выполняться быстро, потому что у вас есть жесткий тайм-аут в 30 секунд на API-шлюзе.

У меня много ситуаций, когда пошаговая функция запускается вызовами конечных точек. Обычно у меня конечная точка вызывает Lambda, которая затем запускает функцию шага, возвращающуюся после запуска функции шага. Затем я предоставляю вторую конечную точку, которую могут использовать вызывающие абоненты, чтобы узнать статус того, что делала эта пошаговая функция.

1 голос
/ 14 июля 2020

AWS API-шлюз будет иметь ~ 30 seconds тайм-аут согласно ограничениям квоты для любых интеграций.

Следовательно, они предназначены только для запуска асинхронных заданий IMHO.

...