AWR

This R package makes the AWS SDK for Java jar files available to be used in downstream R packages.

Lifecycle

Please note that this package was originally created in 2015, when the Python integration in R was much less mature, so using the Java SDK made sense. Since then, using the Python SDK is much easier than relying on the Java SDK from R, so thus this package will be deprecated in the future, and I rather suggest using the botor R package (using the boto3 Python package in the background) when possible:

https://cran.r-project.org/package=botor

This package is still maintained for the near future to provide support for the R packages depending on it, especially AWR.Kinesis that will still need Java support due to the MultiLangDaemon.

Why the name?

This is an R package bundling AWS files, but S is so 1992.

What is it good for?

The AWS Java SDK is useful for R package developers working with AWS so that they can easily import this package to get access to the Java jar files. Quick example on using the Amazon S3 Java client:

> ## adding the jars to the Java classpath
> library(rJava)

> ## creating a client in Java
> kc <- .jnew("com.amazonaws.services.s3.AmazonS3Client")
> ## listing the account name
> kc$getS3AccountOwner()$getDisplayName()
[1] "foobar"

For a more complete (yet simple) example implementation, see the AWR.KMS package hosted on CRAN and GitHub, or AWR.Kinesis at GitHub

Installation

CRAN version

Although the package is hosted on CRAN, so installation is as easy as:

install.packages('AWR')

But due to the large size of the Java SDK and the related CRAN policy, it only includes the very lightweight wrapper around the jar files and not the actual Java SDK files.

To install the required Java files, you can download the most recent compiled version from https://sdk-for-java.amazonwebservices.com/latest/aws-java-sdk.zip, then extract the jar files either directly to the installed AWR package’s java folder, or at any other folder on your computer and use rJava::.jaddClassPath to reference those.

Compiling from source can be done by downloading the sources from https://github.com/aws/aws-sdk-java and following the instructions using maven – a quick example that was used in automated builds for older version of AWR:

VERSION=1.11.189

wget -q https://github.com/aws/aws-sdk-java/archive/$VERSION.tar.gz
tar xzf $VERSION.tar.gz
rm $VERSION.tar.gz

cd aws-sdk-java-$VERSION
DATE=`date -r pom.xml +'%Y-%m-%d %H:%M'`

# the folder structure changed over time and different dependencies were also required, so this these checks
if [ -d aws-java-sdk ]; then
    cd aws-java-sdk
    mvn dependency:copy-dependencies > /dev/null
    cp target/dependency/*.jar ../../
    cd ..
else
    # wget https://maven.repository.redhat.com/ga/net/sf/saxon/saxon9he/9.4.0.4/saxon9he-9.4.0.4.jar
    # mvn install:install-file -Dfile=saxon9he-9.4.0.4.jar -DgroupId=net.sf.saxon \
    #     -DartifactId=saxon9he -Dversion=9.4.0.4 -Dpackaging=jar
    mvn clean package  -DskipTests -Dmaven.test.skip=true -Dgpg.skip=true
    mvn dependency:copy-dependencies
    cp target/dependency/*.jar ../
    cp target/*.jar ../
fi

cd ..
rm -rf aws-sdk-java-$VERSION
cd ../..

If you just want to quickly install even an older version of the Java SDK, you can also use the drat repo created a long time ago on GitLab:

install.packages('AWR', repos = 'https://daroczig.gitlab.io/AWR')

Note that this will overwrite your AWR installation.

Changelog

This R package is a very thin layer on the top of the AWS Java SDK, so please consult https://github.com/aws/aws-sdk-java/blob/master/CHANGELOG.md directly for the list of changes.