StepFunctions.getExecutionHistory Ошибка с AWS SDK на узле Лямбда, «Тип ресурса недопустим в этом контексте: StateMachine»

#amazon-web-services #aws-lambda #aws-sdk #aws-step-functions #aws-state-machine

#amazon-веб-сервисы #aws-лямбда #aws-sdk #aws-пошаговые функции #aws-государственная машина

Вопрос:

Я работаю с AWS SDK в узле env lambda; Я пытаюсь получить историю выполнения для проверки запущенных государственных машин перед вызовом запуска.

Итак, я импортировал SDK и могу запустить государственную машину

 const AWS = require('aws-sdk'); const StepFunctions = new AWS.StepFunctions();  const startParams = {  stateMachineArn: 'STATE MACHINE ARN',  input: JSON.stringify({}), };  StepFunctions.startExecution(startParams, (error, data) =gt; {  if (error) {  console.log(  'THERE WAS AN ERROR STARTING THE STATE MACHINE. DETAILS IN THE FOLLOWING LOG'  );  console.log({ error });  } else {  console.log('Step function triggered successfully.');  console.log({ data });  } });   

вывод на консоль

 Step function triggered successfully.  

Однако результаты выглядят следующим образом, когда я пытаюсь получить историю выполнения государственных машин с тем же ARN.

 const AWS = require('aws-sdk'); const StepFunctions = new AWS.StepFunctions();  const retrieveParams = {  executionArn: 'STATE MACHINE ARN',  maxResults: 10,  reverseOrder: true, };  StepFunctions.getExecutionHistory(retrieveParams, (error, data) =gt; {  if (error) {  console.log(  'THERE WAS AN ERROR RETRIEVING EXECUTION HISTORY. DETAILS IN THE FOLLOWING LOG'  );  console.log({ error });  } else {  console.log('Execution history retrieved successfully.');  console.log({ data });  } });   

консольный выход 1

 THERE WAS AN ERROR RETRIEVING EXECUTION HISTORY. DETAILS IN THE FOLLOWING LOG  

консольный выход 2

 {  error: InvalidArn: Invalid Arn: 'Resource type not valid in this context: stateMachine'  at Request.extractError (/opt/nodejs/node_modules/aws-sdk/lib/protocol/json.js:52:27)  at Request.callListeners (/opt/nodejs/node_modules/aws-sdk/lib/sequential_executor.js:106:20)  at Request.emit (/opt/nodejs/node_modules/aws-sdk/lib/sequential_executor.js:78:10)  at Request.emit (/opt/nodejs/node_modules/aws-sdk/lib/request.js:688:14)  at Request.transition (/opt/nodejs/node_modules/aws-sdk/lib/request.js:22:10)  at AcceptorStateMachine.runTo (/opt/nodejs/node_modules/aws-sdk/lib/state_machine.js:14:12)  at /opt/nodejs/node_modules/aws-sdk/lib/state_machine.js:26:10  at Request.lt;anonymousgt; (/opt/nodejs/node_modules/aws-sdk/lib/request.js:38:9)  at Request.lt;anonymousgt; (/opt/nodejs/node_modules/aws-sdk/lib/request.js:690:12)  at Request.callListeners (/opt/nodejs/node_modules/aws-sdk/lib/sequential_executor.js:116:18)  at Request.emit (/opt/nodejs/node_modules/aws-sdk/lib/sequential_executor.js:78:10)  at Request.emit (/opt/nodejs/node_modules/aws-sdk/lib/request.js:688:14)  at Request.transition (/opt/nodejs/node_modules/aws-sdk/lib/request.js:22:10)  at AcceptorStateMachine.runTo (/opt/nodejs/node_modules/aws-sdk/lib/state_machine.js:14:12)  at /opt/nodejs/node_modules/aws-sdk/lib/state_machine.js:26:10  at Request.lt;anonymousgt; (/opt/nodejs/node_modules/aws-sdk/lib/request.js:38:9) {  code: 'InvalidArn',  time: 2021-12-08T22:19:25.017Z,  requestId: 'REDACTED',  statusCode: 400,  retryable: false,  retryDelay: 63.25312941163477  } }  

Комментарии:

1. Можете ли вы поделиться своим опытом казни? вы можете замаскировать чувствительную часть, такую как AccountId. Также, случайно, вы не пытаетесь получить события для экспресс-выполнения?

2. Конечно! Мой ARN-это arn:aws:штаты:США-восток-2:———-:StateMachine:Дублирование-Уведомление-Рабочий процесс, И это стандартный рабочий процесс, а не экспресс

3. Так что это не executionArn, как я :execution: в нем не вижу, вместо ARN государственной машины paasig вам нужно получить Arn для выполнения и передать его.

4. Вы мне очень помогли! Вы заставили меня понять, что я искал индивидуальное выполнение с этим синтаксисом. Не указано состояние выполнения». Я был в состоянии выполнять ` » Функции отчима. listExecutions() « И просто дайте ему ARN для шаговой машины. Спасибо!!