@architect/plugin-go
v0.0.2
Published
Go runtime + workflow integration for Architect
Keywords
Readme
@architect/plugin-go
Go runtime + workflow integration for Architect
Install
Into your existing Architect project:
npm i @architect/plugin-go --save-devAdd the following to your Architect project manifest (usually app.arc):
@aws
runtime go # sets Go as the the default runtime for your entire project
@plugins
architect/plugin-goOr, if you'd prefer to add a single Go Lambda to start, forego the above runtime go setting in your project manifest, and add the following to a single Lambda:
# src/http/get-index/config.arc
@aws
runtime goUsage
Now, simply author and port Lambdas in the src tree (with appropriate Cargo files). For example:
// src/http/get-index/src/main.rs
#[macro_use]
extern crate json;
use json::{stringify};
use lambda_http::{run, service_fn, Body, Error, Request, Response};
#[tokio::main]
async fn main() -> Result<(), Error> {
run(service_fn(function_handler)).await
}
async fn function_handler(_event: Request) -> Result<Response<Body>, Error> {
let body = object!{
ok: true,
};
let resp = Response::builder()
.status(200)
.header("content-type", "application/json")
.body(stringify(body).into())
.map_err(Box::new)?;
Ok(resp)
}The above function will be automatically compiled by Architect to ./.build/http/get-index/ with cargo build (for local development) and cargo lambda build (for final deployment to Lambda) commands. (The destination build directory is configurable, see below.)
When working locally, Sandbox automatically detects changes to your Go handlers and re-compiles them for you.
Configuration
Lambda architecture
By default, Architect Go uses the Lambda architecture available in all regions: x86_64. However, if your app is deployed in a region that supports arm64, we strongly suggest configuring that like so in your project manifest:
@aws
architecture arm64Caveat: due to the way Architect runtime plugins work under the hood, Architect Go only respects the project's global architecture setting. If your project includes non-go Lambdas that need to use a different architecture, their architecture should be configured individually via
config.arc.
Project manifest settings
The following higher-level settings are also available in your Architect project manifest with the @go settings pragma:
build- customize the build directory; defaults to.build- Note: make sure you add this directory to your
.gitignore
- Note: make sure you add this directory to your
Example:
@go
# Build into `./dist`
build distBuild output
cargo features fairly verbose output logging, which is disabled by default. To enable it, pass the CLI flag --verbose|-v or --debug|-d.
