🍳

Lambda関数のプロジェクトを外部モジュール含めZip化する

2022/02/22に公開

指定されたlambda_function.pyのあるディレクトリのパスから、その直下にあるrequirements.txtに書かれた外部モジュールをこのディレクトリにインストールします。

コード

use std::env;
use std::process::{Command};


fn run(command: &str, arguments: Vec<&str>) {
    Command::new(command)
        .args(arguments)
        .output()
        .expect("failed to execute process");
}

fn main() {
    let args: Vec<String> = env::args().collect();

    let path = &args[1];
    let requirements_path = &format!("./{}/requirements.txt", path);

    run("pip3", vec!["install", "-r", requirements_path, "-t", path]);

    if cfg!(windows) {
        run("powershell", vec!["compress-archive", path, path])
    } else {
        run("zip", vec!["-r", &format!("./{}.zip", path), path])
    }
}

使い方

[package]
name = "lfzipper"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
$ cargo build

デスクトップにでも置いて使ってください。

$ lfzipper <path>   # windows
$ ./lfzipper <path> # macos and linux

Discussion