3 个不稳定版本
0.2.0 | 2020年1月1日 |
---|---|
0.1.1 | 2019年4月20日 |
0.1.0 | 2019年4月20日 |
#15 in #负载均衡器
22 个月的下载量
22KB
385 行
actix_lambda
在 AWS Lambda 下运行/测试 Actix 服务器的辅助库
目前,它仅包括一个简单的辅助函数 run
,该函数将整个应用程序作为 lambda 函数运行,以及 lambda_test
,它将单个 应用程序负载均衡器 事件输入到 Lambda 应用程序中。
用法
use actix_web::{http::Method, HttpRequest, HttpResponse, web};
fn root_handler(request: HttpRequest) -> HttpResponse {
return HttpResponse::Ok().body("Hello world");
}
fn config(cfg: &mut web::ServiceConfig) {
cfg.route("/", web::get().to(root_handler));
// More route handlers
}
fn main() {
actix_lambda::run(config);
}
#[test]
fn lambda_test() {
actix_lambda::test::lambda_test(main);
}
除了 Rust 代码外,还有一些使用 CloudFormation 和 Troposphere 的 Python 代码,以支持使用此工具构建堆栈。要部署此应用程序,请按照以下步骤操作:
- 拥有一个 CLI 配置的 AWS 账户
rustuptarget add x86_64-unknown-linux-musl
brew install filosottile/musl-cross/musl-cross
(或执行 Linux 相似的步骤 以获取 Musl 跨编译器)mkdir.cargo&&echo'[target.x86_64-unknown-linux-musl]\nlinker= "x86_64-linux-musl-gcc"' > .cargo/config
cargobuild --release --targetx86_64-unknown-linux-musl
- 这可能失败,尤其是如果您使用的是使用 OpenSSL 的某些东西。有关信息,请参阅 https://www.andrew-thorburn.com/cross-compiling-a-simple-rust-web-app/#compiling
- cd <从此处复制辅助程序目录的副本>
pip install-r requirements.txt
python cf.py<path to your app'sroot>
- 这将根据您的应用程序创建一个名为CloudFormation的堆栈,并对ALB的目标组和监听器进行一些自定义配置,以解决上游的bug
现在您应该可以从脚本输出的URL运行您的应用程序。
待办事项
- 将Actix应用程序拆分为多个Lambda函数的机制
- 改进了具有多种不同请求的测试函数
- 一旦https://forums.aws.amazon.com/thread.jspa?threadID=294551得到解决,就将Troposphere的工作重写为纯CloudFormation的Rust
依赖关系
~45MB
~1M SLoC