一个更好的发展框架。

pspring-aws的Python项目详细描述


pspring aws

这个框架是基于pspring的框架家族的成员。它提供了用最少的代码访问aws资源的方法。boto3库在内部用于http请求。

所有默认变量都列在defaultvars.py中

此框架附带的注释/装饰符如下所示

  • @SecretValue(name="",region="",column="",columns=[])

    这是一个类装饰器,可用于在aws secrets管理器中检索secret的值。我们还可以从要检索的机密响应中指定列列表或单个列名。一个名为“getsecretvalue”的方法将在类上可用。

  • @DynamoDBTable(tableName="",primaryKey="",sortKey="",ttlColumnName="",ttl="")

    这是一个可以用dynamodb表标记的类装饰器。一旦用这个decorator标记,这个类将有getput方法的实现。 get(self,primaryKey,sortKey="",columns="",column="")方法只能用于检索特定列 put(self,data)可用于插入数据

  • @LambdaHandler(type="lambdaproxy")

    这是一个提供以下功能的类装饰器。您应该实现“handler”方法,该方法将得到增强

    1. debug,info,warn,error-这将记录一条消息,需要跟踪诸如requestid等字段。
    2. 使用requestid=“冷启动加热器”处理冷启动请求
    3. addToLogger方法可用于向所有日志消息添加字段。
    4. 返回一个200响应以及从“handler”方法返回的作为json的字典。
    5. 处理所有异常并优雅地返回500内部服务器错误。

此框架提供以下例外情况

  • lambdaexception
  • NotFoundException
  • 未经授权的异常
  • 内部服务器异常
  • 创建异常
  • 重定向异常
  • RealTimeSecretsMgrConfigProvider

    这与https://github.com/vasudevan-palani/appsync-client.git一起作为实时机密管理器工作(这意味着,您将收到有关机密mngr值作为推送事件的更改的通知)

    frompspringimportConfigurationconfig=Configuration.getConfig(__name__)Configuration.initializer([RealTimeSecretsMgrConfigProvider(secretId="mysecretId",region="us-east-1")])
  • SecretsMgrConfigProvider

    AWS中Secrets Manager的配置提供程序与pspring一起工作。配置

    frompspringimportConfigurationconfig=Configuration.getConfig(__name__)Configuration.initializer([SecretsMgrConfigProvider(secretId="mysecretId",region="us-east-1")])
  • SecretsManager

    与封装锅炉板代码的aws secrets manager交互的实用程序类

    frompspringawsimportSecretsManagersecretsmngr=SecretsManager(secretId="mysecretId")secretsmngr.getSecretValue()
  • DynamoDBTable

    与封装锅炉板代码的aws dynamodb交互的实用程序类

    frompspringawsimportDynamoDBTablesecretsmngr=DynamoDBTable(tableName="mytable",primaryKey="primaryKey",sortKey="sortKey")item=secretsmngr.get("primaryKeyValue")item=secretsmngr.put(primaryKeyValue,item)

示例:

frompspringimport*frompspringawsimport*@LambdaHandler()classMyHandler():@Autowired()def__init__(self,customerbackend:CustomerBackend,cache:DataCache):self.customerbackend=customerbackendself.cache=cachedefhandler(self,event,context):returnself.customerbackend(...)context.initialize()newhandler=MyHandler()defhandler(event,context):returnnewhandler.handler(event,context)

待办事项:

  • 支持lambda集成类型

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

推荐PyPI第三方库


热门话题
java限制C++代码访问JNI中的某些类   Android上的java DateFormat:不可解析的日期   通过json进行java迭代,并为其他请求调用多个API   Netbeans中的java JavaFX项目引发异常“输入流不能为null”   多线程Java newFixedThreadPool解释   |在java字符串中无法识别。split()方法   Java中的原始包装器类是否被视为引用类型?   Java swing。如何在intellij idea GUI设计工具中重写组件方法   数组乘矩阵   java将30GB的XML文件分割成小块XML   java通过一棵树递归找到一个节点,并返回指向该节点的路径   java如何将可观察的<Observable<List<T>>转换为可观察的<List<T>>   使用java在web服务器上更改php文件中的字符串?   java希望开发像tomcat这样的servlet容器   java希望提高编程的数学技能