The goal of r2lambda is to make it easier to go from an R
script to a deployed AWS Lambda
function.
Requirements
- docker is required to build, tag, and push the image.
Installation
You can install the development version of r2lambda like so:
# install_packages("remotes")
remotes::install_github("discindo/r2lambda")
Setup
r2lambda
assumes credentials for connecting to AWS services are available in the R
session. This can be done via an .Renviron
file that should set enironmental variables like so:
AWS_ACCESS_KEY_ID = "YOUR AWS ACCESS KEY ID"
AWS_SECRET_ACCESS_KEY = "YOUR AWS SECRET ACCESS KEY"
AWS_PROFILE = "YOUR AWS PROFILE"
AWS_REGION = "YOUR AWS REGION"
But since r2lambda
uses paws
under the hood, all authentication methods supported by paws
are available in r2lambda
. See here for details on setting credentials, region, profile, etc.
Workflow
Build a docker image for the lambda function
runtime_function <- "parity"
runtime_path <- system.file("parity.R", package = "r2lambda")
renvlock_path <- system.file("renv.lock", package = "r2lambda")
dependencies <- NULL
# Might take a while, its building a docker image
build_lambda(
tag = "parity1",
runtime_function = runtime_function,
runtime_path = runtime_path,
renvlock_path = renvlock_path,
dependencies = dependencies
)
Test the lambda docker image locally
payload <- list(number = 2)
tag <- "parity1"
test_lambda(tag = "parity1", payload)
Deploy to AWS Lambda
# Might take a while, its pushing it to a remote repository
deploy_lambda(tag = "parity1")
Invoke deployed lambda
invoke_lambda(
function_name = "parity1",
invocation_type = "RequestResponse",
payload = list(number = 2),
include_logs = FALSE
)
#> Lambda response payload:
#> {"parity":"even"}
Code of Conduct
Please note that the r2lambda project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.