Значение null в 'stateMachineArn' не удовлетворяет ограничению: элемент не должен быть нулевым - PullRequest
0 голосов
/ 18 июня 2019

Я следовал Шаговым функциям AWS и добавил Шаговые функции AWS.

Но когда я использовал приведенный ниже код, чтобы попытаться вызвать пошаговые функции,

import { ajax } from 'rxjs/ajax';

// ...
ajax.post(
  url,
  {
    input: JSON.stringify({
      formId: action.payload.formId,
      fields: action.payload.fields,
    }),
  },
  { 'Content-Type': 'application/json' },
).pipe(
  map(res => actions.sendRequestSucceed(res)),
  catchError(actions.sendRequestFailed),
)

Возвращает ошибку:

response: {
    message: "1 validation error detected: Value null at 'stateMachineArn' failed to satisfy constraint: Member must not be null"
    __type: "com.amazon.coral.validate#ValidationException"
}

1 Ответ

0 голосов
/ 18 июня 2019

Мне понадобилось время, чтобы понять.

Сначала нужно настроить API Gateway, вы можете следовать этому руководству .

enter image description here

Обратите внимание, что действие равно StartExecution.

Вот StartExecution Документ API .

{
   "input": "string",
   "name": "string", (Optional)
   "stateMachineArn": "string"
}

После добавления stateMachineArn, который можно найти в разделе «Функции шага» -> «Конечные машины»

enter image description here

в коде

ajax.post(
  url,
  {
    input: JSON.stringify({
      formId: action.payload.formId,
      fields: action.payload.fields,
    }),
    stateMachineArn: 'arn:aws:states:us-west-2:000000000000:stateMachine:SendFormStateMachine',
  },
  // ...

Тогда это работает.

Также обратите внимание, что StartExecution input принимает только строку. Если вам нужно передать объект, вы можете использовать JSON.stringify.

...