aws / aws/aws-lambda-builders

Ruby Layers not properly packaged

Open
#177 3 comments 5 reactions 0 assignees View on GitHub
area/workflow/ruby_bundler maintainer/need-response
Dominant language
Python
Stars
380
Forks
161
Avg merge
1d 1h
Merged PRs (30d)
2

Description

**Description:**

When using SAM to build a Ruby layer, packaging of Gems is incorrect. Gems are bundled in `ruby
/lib/vendor/bundle/ruby/2.7.0` using the default bundler workflow, these Gems are not picked up by the runtime.

Per [documentation](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html), `GEM_PATH` (`ruby/gems/2.7.0`) should be used. Shared / custom code is packaged properly to `RUBYLIB` (`ruby/lib`).

**Steps to reproduce the issue:**
1. Create new SAM application.
2. Add Layer to template:

``` yaml
SAMBuildLayer:
Type: AWS::Serverless::LayerVersion
Properties:
ContentUri: SAMBuild
CompatibleRuntimes:
- ruby2.7
Metadata:
BuildMethod: ruby2.7
```

3. Add directory `SAMBuild` containing a `Gemfile` with valid contents.
4. Run `sam build` command.
5. Review results and/or test with a sample function.

**Observed result:**

Result of build (`.aws-sam/build`) contains `SAMBuildLayer/ruby/lib/vendor/bundle/ruby/2.7.0/gems` with bundled Gems. When attempting to run sample function, Gem is not found.

**Expected result:**

Gem should be packaged in `ruby/gems/2.7.0` and available to function when executed. I was able to build using a Makefile:

``` yaml
MakeBuildLayer:
Type: AWS::Serverless::LayerVersion
Properties:
ContentUri: MakeBuild
CompatibleRuntimes:
- ruby2.7
Metadata:
BuildMethod: makefile
```

And Makefile in `MakeBuild` directory:

```
build-MakeBuildLayer:
bundle install --path=$(ARTIFACTS_DIR)
rm -rf $(ARTIFACTS_DIR)/ruby/2.7.0/cache && rm -rf $(ARTIFACTS_DIR)/ruby/2.7.0/bin
mkdir $(ARTIFACTS_DIR)/ruby/gems
mv $(ARTIFACTS_DIR)/ruby/2.7.0 $(ARTIFACTS_DIR)/ruby/gems
```

**Additional environment details (Ex: Windows, Mac, Amazon Linux etc)**

SAM CLI, version 0.52.0

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.