实操:serverless-step-functions-local

目录

问题

依赖组件

调用流程

代码设置

1、安装依赖插件:

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

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

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: 3010
        useInProcess: true
        host: 0.0.0.0 这个一定要设置,不设置默认是localshot,表示只能localhost能访问,我一开始没设置导致docker中容器一直无法访问我的lambda
    stepFunctionsLocal:
        accountId: 101010101010
        region: us-east-1
        TaskResourceMapping: #stepfunction定义中的Resource替换为本地arn,使得其调用本地的lambda
            SetupProduct: arn:aws:lambda:us-east-1:101010101010:function:${self:provider.stage}-setup-product
            CompleteOrder: arn:aws:lambda:us-east-1:101010101010:function:${self:provider.stage}-complete-order
            SendMessage: arn:aws:lambda:us-east-1:101010101010:function:${self:provider.stage}-send-message
            CatchAllFallback: arn:aws:lambda:us-east-1:101010101010:function:${self:provider.stage}-fallback
        externalInstance: true
    stepFunctions: //这个就是stepfunction的定义,按你的业务要求写即可

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

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" \ #访问到本机的lambda
    amazon/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的创建

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2006NOIP普及组真题 4. 数列

线上OJ: 【06NOIP普及组】数列 思考: 这道题大概率是一道可以使用“瞪眼法”找到规律的题目。我们尝试把数据补充的更多,以便于寻找规律 当 k3 时,k的幂次为1, 3, 9, 27, 81… 从上述推理中,我们发现要输出的幂次和中…

MES系统的功能、架构及应用价值

MES系统生产过程控制的主要方面涵盖了生产计划与控制、生产调度与排程、数据采集与监控、质量控制与管理、物料管理与控制以及设备管理与维护等多个方面。这些功能共同构成了MES系统的核心价值,帮助企业实现生产过程的数字化、智能化和精细化管理。 一、工厂使用MES…

新宏观范式和产业趋势下,纷享销客如何助力企业出海?

出海,已不再是企业的“备胎”,而是必须面对的“大考”!在这个全球化的大潮中,有的企业乘风破浪,勇攀高峰,也有的企业在异国他乡遭遇了“水土不服”。 面对“要么出海,要么出局”的抉择&#xff…

24年海南三支一扶报名流程步骤详解

一、考试时间安排: 报名时间:6月1日8:00至6月7日18:00 准考证打印时间:6月17日8:00 考试时间:6月22日 二、招聘人数 海南省计划招募390名高校毕业生 三、笔试内容: 笔试内容:综合能力和素质(满分…

达摩院AI早癌筛查技术闪耀联合国,癌症早治时代来临?

全文预计1200字左右,预计阅读需要6分钟。 5月30日,在日内瓦举行的联合国AI大会上,各国的代表性企业拿出最优秀的AI成果进行分享。其中代表中国的是阿里巴巴集团的下属机构-达摩院,其在现场播放的一段影像,让在场的所有…

C++之类的三种继承修饰符(public、private、protected)总结

1、前言 前文博客介绍了修饰符public、private、protected在类中成员变量和函数访问权限限制的总结,主要如下: public(公有): 公有成员在类的内部和外部都可以被访问。 private(私有): 私有成员只能在类的内…

nginx隐藏版本号、错误信息页面隐藏nginx软件、修改 HTTP 头信息中的connection 字段,防止回显具体版本号、curl命令

目录 安装之后隐藏 配置文件 源代码配置安装之前隐藏 修改nginx.h文件中的 13、14行 修改 HTTP 头信息中的connection 字段,防止回显具体版本号 配置文件49行 错误页面程序返回版本号、nginx隐藏 配置文件36行 ​编辑 安装nginx 相关选项说明 curl命令测试…

好用的linux链接工具

工具下载链接: FinalShell SSH工具,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux,版本4.3.10,更新日期2023.12.31 - FinalShell官网FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分满足开发,运维需求.特色功…

mac电脑安卓设备文件传输助手:MacDroid pro 中文激活版

MacDroid Pro是一款专为Mac电脑和Android设备设计的软件,旨在简化两者之间的文件传输和数据管理,双向文件传输:支持从Mac电脑向Android设备传输文件,也可以将Android设备上的文件轻松传输到Mac电脑上。完整的文件访问和管理&#…

python的一种集成开发工具:PyCharm开发工具

一. 简介 本文简单了解两种 python语言所使用的 集成开发环境: PyCharm、vscode。 python语言学习中,可以任意选中这两个集成开发环境的一种就可以。本文先来简单学习 PyCharm开发工具安装与使用。 二. python的一种集成开发工具:PyChar…

智慧交通视频AI监控识别解决方案

背景分析 随着社会的进步和科技的不断发展,互联网技术和AI视觉分析技术日益成熟,为传统交通监控领域带来了新的发展机遇。AI视觉分析技术的引入,不仅提升了交通监控的智能化和自动化水平,还显著减轻了交管部门的工作负担&#xf…

wafw00f一键检测目标防火墙信息(KALI工具系列十五)

目录 1、KALI LINUX简介 2、wafw00f工具简介 3、在KALI中使用lbd 3.1 查看可检测的防火墙对象 3.2 目标防火墙种类检测 3.3 目标防火墙详细信息检测 3.4 将检查结果输出 4、总结 1、KALI LINUX简介 Kali Linux 是一个功能强大、多才多艺的 Linux 发行版,广…

5步3分钟0基础搭建,轻松搭建《雾锁王国》私人服务器

继《幻兽帕鲁》游戏爆火之后,与它同类型的《雾锁王国》也是强力刷屏,不分伯仲,在 Steam 上的评分一直稳定在“特别好评”,让小伙伴们很“上头”。就在两者游戏玩家反响爆火的同时,官方服务器人数爆满,卡顿频…

TK防关联引流系统:全球TikTok多账号运营的神器

在TikTok的生态中,高效运营多个账号已成为品牌全球推广的必经之路。为此,TK防关联引流系统应运而生,它是一款专为TikTok设计的效率神器,助您迅速搭建并管理全球多账号矩阵。该系统由先进的“防关联智能终端”硬件和智能的“TK防关…

80个GitHub上c/c++学习项目推荐——拎几个出来写进简历

1.《30天自制C服务器》 ①语言:c ②来源:GitHub 目前star:4.8k ③项目地址:https://github.com/yuesong-feng/30dayMakeCppServer ④类型:免费 2.《btop》(命令行资源监视器) ①语言:c ②…

【活动】GPT-4O:AI语言生成技术的新里程碑

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 GPT-4O:AI语言生成技术的新里程碑引言GPT系列简史回顾GPT-1: 初露锋…

基础篇01——SQL的基本语法和分类

MySQL数据库安装与基本使用 安装教程参见:通过zip安装MySQL 通过命令行启动和停止MySQL服务命令 前提:安装MySQL成功之后 启动服务:net start mysql 停止服务:net stop mysql 通过命令行连接mysql 可以通过mysql的客户端命令行…

vivo X200系列即将发布:首发将搭载天玑最新芯片9400

随着智能手机技术的不断进步,vivo作为全球知名的智能手机制造商,一直在为用户带来创新和惊喜。最近,vivo的粉丝们有理由感到兴奋,因为最新的消息称,vivo X200系列即将发布,并且将首发搭载天玑最新的9400处理…

寺庙小程序-H5网页开发

大家好,我是程序员小孟。 现在有很多的产品或者工具都开始信息话了,寺庙或者佛教也需要小程序吗? 当然了! 前面我们还开发了很多寺庙相关的小程序。 今天要介绍的是一款寺庙系统,该系统可以作为小程序、H5网页、安…

jenkins插件之plot

plot是一个生成图表的插件,这里我用于可视化phploc统计的数据 插件安装 进入 Dashboard --> 系统管理 --> 插件管理 --> Available plugins 搜索plot安装生成phploc分析数据 Dashboard --> 您的项目 --> Configuration点击 Build Steps点击 增加构…