Python 获取当前程序脚本文件的路径

当前脚本/模块文件的路径,使用内置变量 __file__。注意“file”两端是各两个下划线。

当前工作目录,使用 os.getcwd() 方法。

For the directory of the script being run:

import pathlib
pathlib.Path(__file__).parent.resolve()

For the current working directory:

Python 创建多级目录(文件夹)

Python 创建文件夹,支持多级目录。

def make_dirs(dir_path):
    # 去除首尾空白符和右侧的路径分隔符
    dir_path = dir_path.strip().rstrip(os.path.sep)

    if dir_path:
        if not os.path.exists(dir_path):  # 如果目录已存在, 则忽略,否则才创建
            os.makedirs(dir_path)

AWS Lambda 为 Python 函数添加部署第三方库依赖项软件包

一种是和系统无相关性的程序包,例如一些纯 Python 代码写的程序包,即在本地开发环境和 Lambda 运行时环境中使用的程序包文件一样。
参见 AWS Lambda 准备无平台相关性的 Python 依赖项软件包

另一种是和系统有相关性的程序包,例如一些软件包根据系统不同,会用到不同的二进制文件。
参见 AWS Lambda 准备有平台相关性的 Python 依赖项程序包 (native code)

AWS Lambda 准备有平台相关性的 Python 依赖项程序包

native code

使用 docker 在 Amazon lambda runtime 环境

mkdir lambda_headless_chrome_python
cd lambda_headless_chrome_python

  • 创建下面的 Dockerfile。

Dockerfile

FROM lambci/lambda:build-python3.6

ENV AWS_DEFAULT_REGION ap-northeast-1
ENV APP_DIR /var/task

ADD . .

CMD pip install -r requirements.txt -t $APP_DIR && \
  zip -9 deploy_package.zip lambda_function.py && \
  zip -r9 deploy_package.zip *
  • 创建 docker 镜像并打包。
docker build -t lambda_headless_chrome .
docker run -v "${PWD}":/var/task lambda_headless_chrome
  • 现在您有一个 zip 文件deploy_package.zip 可以上传到 lambda。

使用 SAM

如果使用了 AWS Chalice 部署项目,且依赖包的体积不大,可以直接使用 Chalice 部署。会自动准备适配 Lambda 环境的依赖包,作为项目代码的一部分,整体压缩打包更新到 Lambda。

签名算法名称

Signature algorithm. Could be one of these values :

  • HS256: HMAC using SHA-256 hash algorithm

  • HS384: HMAC using SHA-384 hash algorithm

  • HS512: HMAC using SHA-512 hash algorithm

  • RS256: RSASSA using SHA-256 hash algorithm

  • RS384: RSASSA using SHA-384 hash algorithm

  • RS512: RSASSA using SHA-512 hash algorithm

  • ES256: ECDSA using P-256 curve and SHA-256 hash algorithm

  • ES384: ECDSA using P-384 curve and SHA-384 hash algorithm

  • ES512: ECDSA using P-521 curve and SHA-512 hash algorithm