5 个版本

0.0.5 2020年1月11日
0.0.4 2019年10月2日
0.0.3 2019年9月12日
0.0.2 2019年6月17日
0.0.1 2019年6月16日

#82#serverless

每月下载量 23
vinyl-embly 中使用

MIT 许可证

50KB
1K SLoC

embly

一个用于协作和扩展的无服务器 Web 应用程序框架。

有关 embly 的更多背景和详细信息,请阅读这里这里

Hello World

创建一个新文件夹,并添加以下文件和目录结构

├── embly.hcl
└── hello
    ├── Cargo.toml
    └── src
        └── main.rs

现在添加以下文件内容

embly.hcl:

function "hello" {
  runtime = "rust"
  path    = "./hello"
}

gateway {
  type = "http"
  port = 8765
  route "/" {
    function = "${function.hello}"
  }
}

hello/Cargo.toml:

[package]
name = "hello"
version = "0.0.1"
edition = "2018"

[dependencies]
embly = "0.0.5"

hello/src/main.rs:

extern crate embly;
use embly::{
  http::{run_catch_error, Body, Request, ResponseWriter},
  prelude::*,
  Error,
};

async fn execute(_req: Request<Body>, mut w: ResponseWriter) -> Result<(), Error> {
  w.write_all(b"Hello World")?; // writing our hello response bytes
  Ok(()) // if an error is returned the server will respond with an HTTP error
}

// this function is run first
fn main() {
  run_catch_error(execute); // this is the embly::http::run function that is specific to http responses
}

现在您可以使用 embly dev 命令在本地上运行您的项目进行本地开发,尽管快速开始的方式是使用 docker

docker run -v /var/run/docker.sock:/var/run/docker.sock  -v $(pwd):/app -p 8765:8765 -it embly/embly embly dev

有关如何在安装部分运行 embly 的更多信息。

Embly 命令

$ embly
Usage: embly [--version] [--help] <command> [<args>]

Available commands are:
    build     Build an embly project
    bundle    Create a bundled project file
    db        Run various database maintenace tasks. 
    dev       Develop a local embly project
    run       Run a local embly project

安装

embly 使用 docker 下载和运行构建镜像。建议您在 docker 容器中运行 embly 并使其有权访问 docker 套接字。如果您位于 embly 项目的根目录中,您可以通过以下方式启动开发服务器

docker run -v /var/run/docker.sock:/var/run/docker.sock  -v $(pwd):/app -p 8765:8765 -it embly/embly embly dev

如果您想在本地上运行 embly,您需要安装 cargogo。以下命令序列应该可以正常工作

go get github.com/embly/embly/cmd/embly
cargo install embly-wrapper
cargo install lucetc

embly 最初是 wasabi,它更专注于在 WebAssembly 运行时内提供完整的操作系统功能。该代码可在这里找到


lib.rs:

Embly 是一个无服务器 WebAssembly 运行时。它运行小的隔离函数。函数可以做几件事情

  • 接收字节
  • 发送字节
  • 启动一个新函数

此库用于从 Embly 运行的程序中访问 embly 功能。

使用 embly crate 的“前言”

导入 io::Read 和 io::Write

pub use std::io::Read as _;
pub use std::io::Write as _;

依赖项

~6.5MB
~128K SLoC