一个更好的发展框架。
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标记,这个类将有
get
和put
方法的实现。get(self,primaryKey,sortKey="",columns="",column="")
方法只能用于检索特定列put(self,data)
可用于插入数据@LambdaHandler(type="lambdaproxy")
这是一个提供以下功能的类装饰器。您应该实现“handler”方法,该方法将得到增强
- debug,info,warn,error-这将记录一条消息,需要跟踪诸如requestid等字段。
- 使用requestid=“冷启动加热器”处理冷启动请求
- addToLogger方法可用于向所有日志消息添加字段。
- 返回一个200响应以及从“handler”方法返回的作为json的字典。
- 处理所有异常并优雅地返回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集成类型