首页 > 解决方案 > 无法通过 Lambda 测试 Stepfunction 执行

问题描述

我正在尝试测试Step Function使用 AWS 模拟调用的 lambda 函数,但它给出了UnknownEndpoint: Inaccessible host: states.local-env.amazonaws.com

这是我的示例 lambda 函数:

const AWS = require("aws-sdk");
const stepFunctions = new AWS.StepFunctions({region: 'local-env'});

exports.handler = async (event, context, config) => {

    const response = {
        statusCode: 200,
        body: event,
    };
    var params = {
        stateMachineArn: process.env.StateMachineARN, 
        input: JSON.stringify(event.body),
        name: 'Testing2'
    };

    stepFunctions.startExecution(params, function(err, data) {
        if (err) console.log(err, err.stack);
    });

    return response;
};

还有我的测试文件:

const index = require('./index')
var AWS = require('aws-sdk-mock');
const AWS_SDK = require('aws-sdk');

AWS.mock('StepFunctions', 'startExecution', function (params, callback){
  callback(null, "successfully started the execution");
});

const isTest = process.env.JEST_WORKER_ID;
const config = {
  convertEmptyValues: true,
  ...(isTest && {endpoint: 'localhost:8000', sslEnabled: false,region:'local-env'})
};


describe('Test Step Function Invocation', function () {
    it('verifies successful response', async () => {
      process.env.StateMachineARN = 'arn:aws:states:us-east-1:12345678:stateMachine:Testing';

      var event = { 
        "payload": "my_payload", 
        "data": "some-data", 
        "MVId": "00156"
      };

      const result = await index.handler(event,{},config);

      expect(result.statusCode).toEqual(200);
      expect(result.body).toBe(event);

    });
});

AWS.restore('StepFunctions');

我一直在文档和其他资源中搜索此内容,但尚未找到任何解决方案。

标签: node.jsamazon-web-servicestestingaws-lambdajestjs

解决方案


推荐阅读