帮助创建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的基本知识。在
有用来源
- 在
阅读有关AWS API网关的更多信息: https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html。在
在 - 在
阅读有关AWS websocket API的更多信息: https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-overview.html
在
安装
项目被构建并上传到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
- 秘密密钥
- 默认区域
或者:
- 美国焊接学会简介
- 默认区域
运行测试
然后使用pytest
python测试库从根目录运行测试:
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
- 初始构建。没有项目文件,只有一个半空的项目。在
标签:
- 项目
标签: