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

gefragt vor 2 Jahren2416 Aufrufe
2 Antworten
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
EXPERTE
beantwortet vor 2 Jahren
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
  
beantwortet vor 2 Jahren

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen