python aws无服务器应用程序的打包工具。

possum的Python项目详细描述


python aws sam->;pyawssam->;pawssam->;possum

安装

possum可以从python包索引安装:

$ pip install possum

possum需要python 3.6+pipenv(必须安装pipenv) 单独安装,不与possum一起安装)。

关于

possum是一个用于基于python的无服务器应用程序的打包工具。 使用aws无服务器应用程序模型(aws sam)。

sam packageaws cloudformation package选项具有 python lambda函数的限制:它们没有 打包外部依赖项。这意味着开发人员 总是自己创建那些lambda工件,上传它们 到s3,然后部署。

possum旨在替代基本的包函数。 该工具基于我对无服务器aws应用程序的方法 (固执己见)可能不适合所有各方。

AWS证书

possum使用boto3 sdk将工件上传到s3。你可以设置你的 aws访问和环境变量中的密钥,如中所述 BOTO3文件。posom还接受aws的配置文件名 通过-p/--profile参数的凭据文件。

$ possum '<s3-bucket-name>' --profile '<my-profile-name>'

基本用法

从包含无服务器的存储库目录运行possum 申请。

$ possum '<s3-bucket-name>'

上面的命令将打包python lambda函数并上传 假设模板文件名为template.yaml,则将它们转换为s3。你 可以用-t/--template参数指定模板的名称:

$ possum '<s3-bucket-name>' -t my-template.yml

生成的部署模板将打印在屏幕上。

默认情况下,possum会将new工件上传到您选择的s3目录中 名为possum-0123456789的bucket,其中数值是当前值 时间戳。

如果要覆盖此默认值并指定要上载的目录路径 新工件,使用正斜杠将其附加到s3 bucket名称:

$ possum '<s3-bucket-name>/<my_path>'

您还可以指定将部署模板写入文件的方式 将名称传递给-o/--output-template参数:

$ possum '<s3-bucket-name>' -o deployment.yaml

possum使用函数目录的散列来确定更改是否 自上次运行命令以来发生。散列和s3uri保存在 ~/.possum目录,用于用possum打包的每个项目。

若要强制possum生成所有函数并跳过哈希检查,请使用 -c/--clean参数。

您可以查看使用possum的选项和说明 -h参数:

$ possum -h
usage: possum [-h] [-t template] [-o output] [-p profile_name] [-c] [--docker]
          [--docker-image image_name] [-v]
          s3_bucket

Possum is a utility to package Python-based serverless applications using the
Amazon Serverless Application model with per-function dependencies.

positional arguments:
  s3_bucket             The S3 bucket to upload artifacts. You may optionally
                        pass a path within the bucket to store the Lambda
                        artifacts (defaults to 'possum-{timestamp}').

optional arguments:
  -h, --help            show this help message and exit
  -t template, --template template
                        The filename of the SAM template.
  -o output, --output-template output
                        Optional filename for the output template.
  -p profile_name, --profile profile_name
                        Optional profile name for AWS credentials.
  -c, --clean           Build all Lambda packages, ignoring previous run.
  --docker              Build Lambda packages within a Docker container
                        environment.
  --docker-image image_name
                        Specify a Docker image to use (defaults to
                        'possum:latest').
  -v, --version         Display version information.

Docker支持

一些python包的安装根据底层系统的不同而不同 (例如cryptography.io)。以确保安装的依赖项 完全兼容lambda环境,您可以选择在 码头集装箱。

此项目中包含的Dockerfile将创建兼容的默认值 要使用的图像。从与 Dockerfile生成图像:

$ docker build . -t possum:latest

此图像基于lambci/lambda:build-python3.6。你可以建立你的 拥有自定义图像并使用--docker-image参数指定它。如果你 决定使用您自己的映像它必须安装pipenvpossum

使用--docker参数在容器中启动possum:

$ possum '<s3-bucket-name>' --docker

无服务器应用程序存储库示例

下面是一个带有多个lambda的无服务器python应用程序的示例 单个存储库中的函数:

my_prjoect/
    |
    |___template.yaml
    |
    |___function1/
    |   |
    |   |___function1.py
    |
    |___function2/
        |
        |___function2.py
        |___Pipfile
        |___Pipfile.lock

对于模板中定义的每个aws lambda函数,possum引用 函数目录路径的Properties:CodeUri键。

如果函数的^{tt19},possum将显示一个警告$ 值与python*不匹配。你需要把剩下的打包 功能独立。

每个函数目录的内容将复制到临时 生成目录。如果a Pipfile/Pipfile.lockrequirements.txt 存在时,外部包将被安装到构建目录中。这个 然后,构建目录的全部内容将被压缩到一个可部署的 兰姆达神器。

所有工件都将上传到提供的s3 bucket中。进口的 将使用每个lambda函数的s3位置更新模板 如果提供了-o参数,则写入stdout或文件。

生成的部署模板可以与sam deploy一起使用,或者 aws cloudformation deploy以部署应用程序。

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

推荐PyPI第三方库


热门话题
java正在寻找Java8中的内置函数以忽略异常   javascript JQuery更改Div的颜色   java PostgreSQL使用JDBC写入inet列   java为什么体重指数计算结果不正确?   java禁用linux中的log4j控制台日志记录   java我可以让我的JMS主题在新订阅者连接时通知发布者(使用ActiveMQ)   基于三个浮点输入的java过滤器JTable?   Java OpenGL/LWJGL体素纹理   在SpringBoot java应用程序中,有没有一种方法可以通过不同的机器使用hostIP作为主机远程连接到redis服务器   java Struts 2 s:提交按钮语法以在映射中设置值   java源代码:setDomainEnv。windows 7中的cmd文件   缺少货币计算java的返回语句   JavaHibernate没有注意到从其他源进行的数据库更新   无法在OpenCV/Java中生成负矩阵   Java不做循环   java无法使用类对象写入文件ArrayList   jpa使用数组作为调用Java的存储过程的输入   java使用文件提供程序检索内容Uri失败   需要java程序来创建方法模板