🍳
Lambda関数のプロジェクトを外部モジュール含めZip化する
指定された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