实操:serverless-step-functions-local

目录

问题

依赖组件

调用流程

代码设置

1、安装依赖插件:

2、serverless.yml配置,我这里只提供stepfunction依赖的配置

3、业务代码中使用本地stepfunction

4、启动serverless offline

5、docker 安装启动stepfunction

⚠️注意

1、docker访问宿主机

2、访问offline-lambda的地址

3、启动serverless要使用sls offline start


问题

在我的业务中使用了aws stepFunction,每个节点都是一个lambda,每当工作流结点涉及有修改时,都必须要部署到aws云上才能测试,比较浪费时间,又因为我现在开发环境只有一套测试环境,如果有bug,就会影响测试的主流程,测试非常不便捷

然后我就发现了这个插件:serverless-step-functions-local,能够实现本地启动工作流,工作流的lambda节点也是访问我本机启动的lambda,完全支持本地自测

依赖组件

npm给的指导依赖是:

aws 文档也给出了两种方案在本地测试状态机 - AWS Step Functions

1、使用docker,在docker中安装amazon/aws-stepfunctions-local,相当于之前在aws云上启动的工作流,变为在docker中运行

2、使用stepfunction的JAR文件,这个是在本机上安装了stepfunction的可执行文件,看文档说明应该是要和aws cli结合使用的,没有细研究

我的场景是在代码中调用api启动stepfunction,团队中每个人都会用到,所以我采取了第一种方案,使用的docker,再结合脚本文件自动检查安装和启动stepfunction,实现0成本启动

调用流程

所以我实现的调用流程如图所示:

代码设置

1、安装依赖插件:

- serverless-step-functions
- serverless-step-functions-local 
- serverless-offline-lambda 
- serverless-offline 

2、serverless.yml配置,我这里只提供stepfunction依赖的配置

custom: serverless-offline:httpPort: 3010useInProcess: truehost: 0.0.0.0 这个一定要设置,不设置默认是localshot,表示只能localhost能访问,我一开始没设置导致docker中容器一直无法访问我的lambdastepFunctionsLocal:accountId: 101010101010region: us-east-1TaskResourceMapping: #stepfunction定义中的Resource替换为本地arn,使得其调用本地的lambdaSetupProduct: arn:aws:lambda:us-east-1:101010101010:function:${self:provider.stage}-setup-productCompleteOrder: arn:aws:lambda:us-east-1:101010101010:function:${self:provider.stage}-complete-orderSendMessage: arn:aws:lambda:us-east-1:101010101010:function:${self:provider.stage}-send-messageCatchAllFallback: arn:aws:lambda:us-east-1:101010101010:function:${self:provider.stage}-fallbackexternalInstance: truestepFunctions: //这个就是stepfunction的定义,按你的业务要求写即可

3、业务代码中使用本地stepfunction

const stepFunctions = new StepFunctions({endpoint: 'http://localhost:8083', // 连接到本地 Step Functions Local
})

4、启动serverless offline

sls offline start

5、docker 安装启动stepfunction

docker pull amazon/aws-stepfunctions-local
docker run -d \--name step-function-local \-p 8083:8083 \-e "AWS_ACCOUNT_ID=101010101010" \ #和custom.stepFunctionsLocal.accountId一致-e "AWS_DEFAULT_REGION=us-east-1" \ #和custom.stepFunctionsLocal.region 一致-e "LAMBDA_ENDPOINT=http://host.docker.internal:3002" \ #访问到本机的lambdaamazon/aws-stepfunctions-local

⚠️注意

1、docker访问宿主机

LAMBDA_ENDPOINT=http://host.docker.internal:3002

访问到本机lambda host用的是host.docker.internal,因为stepfunction是运行在docker容器中的,localhost访问的是容器内部的localhost,不能访问到宿主机上

host.docker.internal 会被自动解析为宿主机的ip

2、访问offline-lambda的地址

因为我的服务启动之后出现了好几个port,我不太清楚究竟使用哪一个,根据serverless-offline说明文档,3002是默认的lambda port

如果不确定,可以在启动本地服务之后,在js文档中调用lambda api测试,哪个port测试通了就用哪个,给个测试demo

3、启动serverless要使用sls offline start

我的服务中使用的是sls offline,但必须要加上start,因为serverless-offline留了很多钩子的入口,这个命令才会触发,比如本次场景中stepfunction machine的创建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/22801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】进程(6):环境变量

大家好,我是苏貝,本篇博客带大家了解Linux进程(6):环境变量,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 (A)PATH方法1&#…

水经微图安卓版5.3.0发布

随时随地,微图一下! 水经微图(以下简称“微图”)安卓版,新版已上线。 当前版本 当前版本号为:5.3.0-beta 如果你发现该版本中存在问题,请及时反馈给我们修订。 关于我们产品的版本控制&…

【面向就业的Liux基础】从入门到熟练,探索Linux的秘密(一)

主要帮助大家面向工作过程中Linux系统常用的命令联系,采用极致的实用主义,帮助大家节省时间。 文章目录 前言 一、linux系统 二、linux系统基本命令 1.Linux系统的目录结构 2. 常用命令介绍 3.命令演示 4.作业练习 总结 前言 主要帮助大家面向工作过程中…

微信小程序实现图生图(AI动漫特效)效果代码(触站API)

1.效果 触站AI图生图 2.本次用的是触站平台的API,我申请的适用积分,有水印(博主没钱)。如果需要没有水印的可以去买他们的资源包 3.首先我们需要去触站官网平台注册/登录账号(已注册可跳过该步骤) 4.开通API权限 我们可以在主页看到自己免费获取的500积分,用于接口调用…

微信小程序开发的详细解读

目录 小程序的ID 小程序的项目结构 小程序调试基础库 小程序调试 小程序配置文件 Pages配置 Windows配置 tabbar配置 页面配置 项目配置文件 sitemap文件配置 样式与组件 小程序常用组件 轮播图组件 图片组件 Text组件 跳转方式 滚动方式 字体图表使用 背景…

python入门3

文章目录 前言一、函数为什么要使用函数?函数定义函数定义和调用定义函数返回值定义空函数函数参数传递传递实参位置实参关键词实参默认值实参等效函数调用实参可选传递任意数量的实参任意数量关键字实参任意参数*与** 的区别使用元组和字典传参如果既有实参又有任意…

数据可视化---使用matplotlib绘制高级图表(2)

题目一:绘制人口金字塔图 编写程序。根据第8.6,绘制如下图的人口金字塔图。 运行代码: #绘制人口金字塔图 import numpy as np import pandas as pd import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] SimHei plt.rcParams[…

云服务器安装宝塔Linux面板全流程,新手教程!

云服务器如何宝塔Linux面板?阿小云以阿里云服务器为例安装宝塔Linux面板全流程,非常简单: 使用阿里云服务器安装宝塔面板教程,阿里云服务器网以CentOS操作系统为例,安装宝塔Linux面板,先远程连接到云服务器…

UML静态图-类图

概述 静态图包含类图、对象图和包图的主要目的是在系统详细设计阶段,帮助系统设计人员以一种可视化的方式来理解系统的内部结构和代码结构,包括类的细节、类的属性和操作、类的依赖关系和调用关系、类的包和包的依赖关系。 一、类图的表示法 类图(Cla…

轴承阀门5G智能工厂工业物联数字孪生平台,推进制造业数字化转型

轴承阀门5G智能工厂工业物联数字孪生平台作为其中的佼佼者,以其高效、智能、灵活的特点,为制造业的数字化转型提供了强有力的支撑。数字孪生技术,作为智能制造的重要一环,通过构建虚拟与现实相结合的数字化模型,实现了…

离散数学答疑 1

全功能连接词组: 最小全功能联结词组: C:祈使句 6->8是叫条件转化(置换)吗 反证法: 结论取反作为条件,并且在推理过程中,既推出有B也有反B,则推理成功 反证法算是间…

轻松追剧不费力:短剧小程序引领观剧新潮流

随着时代的进步和科技的发展,人们的娱乐方式也在不断变化。如今,短视频、短剧等碎片化内容正逐渐成为人们日常生活中的一部分。而短剧小程序,以其便捷、高效、内容丰富的特点,正在引领一场观剧新潮流。 一、短剧小程序的崛起 在快…

能获取淘宝商品简化链接的浏览器书签

零.冗长的商品链接 访问网页版本淘宝时,浏览器的地址栏显示的链接太长就像这样(此链接非真实商品): 于是使用如下方法 一.使用浏览器书签获取淘宝商品简化链接 1.新建书签 Chrome - 打开书签管理器(CtrlShiftO) - 左侧选择书签…

【python - 函数】

一、纯函数和非纯函数 纯函数(Pure functions):函数有一些输入(参数)并返回一些输出(调用返回结果)。 >>> abs(-2) 2 可以将内置函数 abs 描述为接受输入并产生输出的小型机器。 ab…

C# Onnx E2Pose人体关键点检测

C# Onnx E2Pose人体关键点检测 目录 效果 模型信息 项目 代码 下载 效果 模型信息 Inputs ------------------------- name:inputimg tensor:Float[1, 3, 512, 512] --------------------------------------------------------------- Outputs ---…

电商API商品数据采集接口||助力电商企业采集商品大数据提高开发效率

提高开发效率:电商API接口允许不同的应用程序之间高效地进行交互,节省了大量的人力物力成本,使得开发者可以将更多时间和精力集中于自身的核心业务。 增加数据安全性:通过对数据进行安全加密,API接口实现了对数据的保护…

JVM参数配置

JVM参数的三种表示方法 在jvm中,jvm虚拟机参数有以下三种表示方法: 标准参数(-)所有的JVM实现都必须实现这些参数的功能,而且向后兼容非标准参数(-X),默认jvm实现这些参数的功能&…

罗永浩创业史!普通人也能逆袭!2024轻资产创业项目!2024普通人的出路! 2024普通人做什么行业赚钱!

罗永浩出身草根,一路打拼至今,虽然屡屡受挫但是从未妥协,罗永浩真正的诠释了什么叫“彪悍的人生不需要解释”! 回顾罗永浩的传奇创业史: 1. 从新东方出来做牛博网--失败 2.创办老罗英语培训学校--失败 3.致敬乔布斯做锤子科技-…

写一个盲盒模拟器

最近想写一个小程序,随便写一个玩吧,先想了下功能: 1.有很多盲盒,可以选择模拟开启 2.自定义盲盒,我们可以自定义制作盲盒自己玩 3.用户界面,记录盲盒历史,可以给坏越提意见 所用技术栈&…

django 旅游服务系统-计算机毕业设计源码88939

摘 要 旅游服务系统采用采用django框架、python语言、以及Mysql数据库等技术。系统主要分为管理员和用户两部分,管理员管理主要功能包括:首页、轮播图(轮播图管理)、公告信息管理(公告信息)、资源管理&…