From 620e839648e74745b376abb71030ffed5bed03dd Mon Sep 17 00:00:00 2001 From: Karl Gutwin Date: Fri, 29 May 2020 12:36:57 -0400 Subject: [PATCH] Add an R-only layer for mixing R with other runtimes --- awspack/build.sh | 4 ++-- r/build.sh | 8 +++++--- recommended/build.sh | 2 +- runtime/build.sh | 3 +-- template.yaml | 12 ++++++++++++ 5 files changed, 21 insertions(+), 8 deletions(-) diff --git a/awspack/build.sh b/awspack/build.sh index ecbaed0..f1b2332 100755 --- a/awspack/build.sh +++ b/awspack/build.sh @@ -16,7 +16,7 @@ BUILD_DIR=${BASE_DIR}/build/ rm -rf ${BUILD_DIR} mkdir -p ${BUILD_DIR}/layer/ -docker run -v ${BUILD_DIR}/layer/:/var/awspack -v ${BASE_DIR}/entrypoint.sh:/entrypoint.sh \ +docker run --user $(id -u) -v ${BUILD_DIR}/layer/:/var/awspack -v ${BASE_DIR}/entrypoint.sh:/entrypoint.sh \ lambda-r:build-${VERSION} /entrypoint.sh -sudo chown -R $(whoami):$(whoami) ${BUILD_DIR}/layer/ + chmod -R 755 ${BUILD_DIR}/layer/ diff --git a/r/build.sh b/r/build.sh index 44d003e..2439e52 100755 --- a/r/build.sh +++ b/r/build.sh @@ -16,6 +16,8 @@ R_DIR=/opt/R/ rm -rf ${BUILD_DIR} -mkdir -p ${BUILD_DIR}/bin/ -docker run -v ${BUILD_DIR}/bin/:/var/r lambda-r:build-${VERSION} -sudo chown -R $(whoami):$(whoami) ${BUILD_DIR}/bin/ +mkdir -p ${BUILD_DIR}/layer/R/ +docker run --user $(id -u) -v ${BUILD_DIR}/layer/R:/var/r lambda-r:build-${VERSION} + +cd ${BUILD_DIR}/layer/ +rm -r R/doc/manual/ diff --git a/recommended/build.sh b/recommended/build.sh index ae60575..35f18fc 100755 --- a/recommended/build.sh +++ b/recommended/build.sh @@ -8,7 +8,7 @@ BUILD_DIR=${BASE_DIR}/build/ rm -rf ${BUILD_DIR} mkdir -p ${BUILD_DIR}/layer/R.orig/ cd ${BUILD_DIR}/layer/ -cp -r ${BASE_DIR}/../r/build/bin/* R.orig/ +cp -r ${BASE_DIR}/../r/build/layer/R/* R.orig/ mkdir -p R/library recommended=(boot class cluster codetools foreign KernSmooth lattice MASS Matrix mgcv nlme nnet rpart spatial survival) diff --git a/runtime/build.sh b/runtime/build.sh index 1705368..b0da572 100755 --- a/runtime/build.sh +++ b/runtime/build.sh @@ -9,8 +9,7 @@ rm -rf ${BUILD_DIR} mkdir -p ${BUILD_DIR}/layer/R/ cp ${BASE_DIR}/src/* ${BUILD_DIR}/layer/ cd ${BUILD_DIR}/layer/ -cp -r ${BASE_DIR}/../r/build/bin/* R/ -rm -r R/doc/manual/ +cp -r ${BASE_DIR}/../r/build/layer/* . #remove some libraries to save space recommended=(boot class cluster codetools foreign KernSmooth lattice MASS Matrix mgcv nlme nnet rpart spatial survival) for package in "${recommended[@]}" diff --git a/template.yaml b/template.yaml index 92c75e4..de397a8 100755 --- a/template.yaml +++ b/template.yaml @@ -11,6 +11,18 @@ Globals: Layers: - !Ref RuntimeLayer Resources: + RLayer: + Type: AWS::Serverless::LayerVersion + Properties: + LayerName: !Sub r-${Version} + ContentUri: r/build/layer/ + LicenseInfo: MIT + RLayerPermission: + Type: AWS::Lambda::LayerVersionPermission + Properties: + Action: lambda:GetLayerVersion + LayerVersionArn: !Ref RLayer + Principal: "*" RuntimeLayer: Type: AWS::Serverless::LayerVersion Properties: