帮助创建websocketapi的AWS CDK包。

b-aws-websocket-api的Python项目详细描述


B、 AwsWebsocketApi

一个基于AWS CDK的python库,帮助您创建基于websocket的api。在

说明

在AWS中创建api非常具有挑战性。要创建部署阶段, API、资源、方法等。有人可能会认为创建基于websocket的 API更难。这个基于AWS CDK的python库试图解决这个问题 提供有关如何创建websocket的资源和示例会带来不便 正确的API方法。我们花了无数的时间来完善它,但是 在AWS环境中总会有一些“陷阱”。在

备注

旨在使生命科学现代化 通过与其他公司分享其IT知识 社区。这是一个开放源代码库 任何人都可以。欢迎改进和拉取请求。在

相关技术

  • Python3
  • 美国焊接学会CDK
  • AWS云形成
  • AWS API网关
  • 网络插座

假设

本项目假设如下:

  • 你有基本的python编程知识。在
  • 你有基本的AWS知识。在
  • 你有websockets的基本知识。在

有用来源

安装

项目被构建并上传到PyPi。用pip安装。在

pip install b-aws-websocket-api

或者直接通过源代码安装。在

^{pr2}$

用法和示例

创建一个堆栈来保存资源:

fromaws_cdk.coreimportStackstack=Stack(...)

创建API:

fromb_aws_websocket_api.ws_apiimportWsApiapi=WsApi(scope=stack,id='TestWsApi',description='Test description.',name='TestWsApi',route_selection_expression='$request.body.action',)

创建阶段(通常称为prod):

fromb_aws_websocket_api.ws_stageimportWsStagestage=WsStage(scope=stack,id='TestStage',ws_api=api,stage_name='prod',auto_deploy=True,)

创建lambda函数以处理传入请求(帧):

fromb_aws_websocket_api.ws_functionimportWsFunctionfromaws_cdk.aws_lambdaimportCode,Runtimebackend=WsFunction(scope=stack,id='TestFunction',function_name='TestFunction',code=Code.from_inline('def handler(*args, **kwargs):\n''    return {\n''        "isBase64Encoded": False,\n''        "statusCode": 200,\n''        "headers": {},\n''        "body": "{\\"message\\": \\"success\\"}"\n''    }\n'),handler='index.handler',runtime=Runtime.PYTHON_3_6,)

创建lambda集成(稍后将需要路由):

fromb_aws_websocket_api.ws_lambda_integrationimportWsLambdaIntegrationintegration=WsLambdaIntegration(scope=stack,id='TestIntegration',integration_name='TestIntegration',ws_api=api,function=backend)

创建由lambda函数支持的自定义路由:

fromb_aws_websocket_api.ws_routeimportWsRouteroute=WsRoute(scope=stack,id='TestRoute',ws_api=api,route_key='test',authorization_type='NONE',route_response_selection_expression='$default',target=f'integrations/{integration.ref}',)

最后部署API:

fromb_aws_websocket_api.ws_deploymentimportWsDeploymentdeployment=WsDeployment(scope=stack,id='TestDeployment',ws_stage=stage)

别忘了解决资源的依赖关系!在

deployment.node.add_dependency(route)deployment.node.add_dependency(stage)

现在执行cdk deploy *,享受新的websocketapi!在

测试

该项目具有可以运行的测试。 注意,测试本质上是集成测试,因为它们 测试如何在AWS环境中创建资源。因为资源 是在AWS中创建和测试的,您必须遵守所有适用的 运行测试时充电。在

设置环境

在运行测试集环境变量之前:

  • 访问密钥ID
  • 秘密密钥
  • 默认区域

或者:

  • 美国焊接学会简介
  • 默认区域

运行测试

然后使用pytestpython测试库从根目录运行测试:

pytest b_aws_websocket_api_test

注意,集成测试通常需要一段时间才能完成(从5到30 平均分钟)。在

贡献

发现虫子了?要添加或建议新功能吗? 欢迎任何形式的捐助。你可以联系我们 直接在github平台中创建pull请求或问题。 让我们一起实现世界现代化。在

发布历史记录

0.0.9

  • 更新有关测试的自述文档。在

0.0.8

  • 添加CI/CD管道。在
  • 更新历史文件。在
  • 重构测试。在
  • 更新自述文件。在

0.0.7

  • 修复阶段日志组名称。在

EH.0.3以上
  • 在测试管理器中移动导入。在

0.0.5

  • 修复自述文件。在

0.0.4

  • 更新名称。在

0.0.3

  • 删除idea文件。在

0.0.2

  • 添加了项目文件。添加了测试。在

0.0.1

  • 初始构建。没有项目文件,只有一个半空的项目。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java禁用主窗口但显示模块   java Eclipse jre 1.5>1.8   java测试Eclipse4RCP应用程序。提供必要的物品   当我键入命令时,java spiget会识别它,但当我按enter键时,什么也不会发生   引用数组中的对象的C++ java   Java Axis Web服务重载控制   java如何实现重载方法以正确识别变量   java将数组元素与下一个数组进行比较,并在该元素为新元素时重新开始   java gradle依赖项的“编译组”是什么?不同的组件做什么?   java为什么哈希代码比类似的方法慢?   Struts 2中的java HttpServletRequest和静态方法threadsafety   我想用JavaSwing中的JButtons制作一个六边形表格   jaxb通过多个标记名选项将XML映射到Java   如何在centOS上安装Apache Tomcat   java优化N Queens代码以避免堆栈溢出   java如何找到AST表达式的底部