SAM CLI- Using "sam build" - Build includes non required folders

0

How can you force 'sam build' commands to not include sub directories such as /node_modules and tests. These get added to each function and take an incredible amount of time to 'build' and 'deploy'. Am I missing a step to stop these folders being included? using SAM CLI v1.55.0

asked 2 years ago2884 views
2 Answers
0

Have you tried .npmignore as mentioned on this Github thread - https://github.com/aws/serverless-application-model/issues/308 - "sam build command uses npm to package up the build folder (for nodejs projects), so you can use .npmignore to tell it which files should be excluded from the build"

profile pictureAWS
EXPERT
answered 2 years ago
0

I have found in my template.yaml file under each resource you can declare a CodeUri - it appears to only build files from this directory. This works well for my use case as I have a seperate lambda layer I use which holds all dependencies needed. I will now just structure my lambdas under seperate directories and share code where needed. Snippet of tamplate.yaml:

  listProvisioningTemplates:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: src/provisioning/listProvisioningTemplates/
      Handler: index.handler
      Layers:
        - !Ref awsCommandsLayer
      Runtime: nodejs16.x
      Architectures:
        - x86_64
      MemorySize: 128
      Timeout: 100
      Description: A Lambda function that returns a static string.
      Policies:
        # Give Lambda basic execution Permission to the helloFromLambda
        - AWSLambdaBasicExecutionRole
    #Metadata:
    #  BuildMethod: makefile

Folder Structure

AWS-SAM-DIR:
  -src:
    -provisioning:
      -listProvisioningTemplates:
        index.js
  -template.yaml
  
answered 2 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions