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.