discindo / r2lambda

Deploy an R script as AWS lambda from the R console
https://discindo.github.io/r2lambda/
GNU General Public License v3.0
33 stars 3 forks source link
aws aws-lambda r

r2lambda

R-CMD-check Codecov test
coverage

The goal of {r2lambda} is to make it easier to go from an R script to a deployed AWS Lambda function.

Requirements

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.