как вызвать AWS пошаговую функцию из интерфейса javascript - PullRequest
0 голосов
/ 20 января 2020

Я определил пошаговую функцию AWS, определенную следующим образом, в моем файле serverless.yml.

functions:
  create:
    handler: create.main
    events:
      - http:
          path: notes
          method: post
          cors: true
          #authorizer: aws_iam
 findMatchingAlerts:
    handler: findMatchingAlerts.main
    events:
      - http:
          path: findMatchingAlerts
          method: post
          cors: true
          #authorizer: aws_iam
stepFunctions:
  stateMachines:
    hellostepfunc1:
      name: CreateNewListingAndSendNotificationStateMachine
      events:
        - http:
            path: CreateNewListing
            method: post
        - http:
            path: FindMatchingAlerts
            method: post
      definition:
        Comment: "Step function for inserting a new listing, looking up user alert filter, and sending out email notifications"
        StartAt: CreateNewListing
        States:
          CreateNewListing:
            Type: Task
            Resource: "arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:${self:service}-${opt:stage}-create"
            Next: FindMatchingAlerts
          FindMatchingAlerts:
            Type: Task
            Resource: "arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:${self:service}-${opt:stage}-findMatchingAlerts"
            End: true

И CreateNewListing, и FindMatchingAlerts - две лямбда-функции.

Вот что я хочу сделать: у меня есть интерфейс пользователя с кнопкой, которая при нажатии вызывает функцию шага, и я передаю соответствующие входы в функцию шага для обработки, и в настоящее время у меня есть что-то вроде этого:

 return API.post("notes", "/CreateNewListing", {
      body: input
    });

Однако я могу выполнить функцию шага с консоли AWS. Но когда я пытаюсь соединить мою переднюю кнопку с функцией шага, я получаю значение Error: network error при каждом нажатии кнопки, поэтому я предполагаю, что вызов функции шага неверен.

Может кто-нибудь мне помочь? Спасибо.

1 Ответ

0 голосов
/ 27 февраля 2020

1.Вы должны будете создать роль IAM для шлюза API. 2. Прикрепить политику к роли IAM. 3. Создать API-интерфейс шлюза API -> Создать метод публикации / получения -> выбрать тип интеграции: Aws Выбор службы AWS Регион AWS Служба: пошаговые функции Метод HTTP: POSt Действие: StartExecution Роль выполнения: указать роль и задать другие параметры.

4. Развернуть API шлюза API

Проверка связи между API-шлюзом и пошаговыми функциями На странице / execute - POST - Выполнение метода выберите Test.

На странице / execute - POST - Method Test скопируйте следующий запрос параметры в разделе «Тело запроса», используя ARN существующего конечного автомата (или создайте новый конечный автомат), а затем выберите «Тест».

{
   "input": "{}",
   "name": "MyExecution",
   "stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld"
}

refrence

https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-api-gateway.html

...