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 package或aws 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参数指定它。如果你 决定使用您自己的映像它必须安装pipenv和possum!
使用--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.lock或requirements.txt 存在时,外部包将被安装到构建目录中。这个 然后,构建目录的全部内容将被压缩到一个可部署的 兰姆达神器。
所有工件都将上传到提供的s3 bucket中。进口的 将使用每个lambda函数的s3位置更新模板 如果提供了-o参数,则写入stdout或文件。
生成的部署模板可以与sam deploy一起使用,或者 aws cloudformation deploy以部署应用程序。