Envek / aws-sam-typescript-layers-example

Example project for developing AWS Lambda functions on TypeScript with all goodies: local development, tests, debugging, shared layers (3rd party and your own), and deploy.

Home Page:https://evilmartians.com/chronicles/serverless-typescript-a-complete-setup-for-aws-sam-lambda

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Local emulator with shared dependencies from a yarn workspace (monorepo)

R-Iqbal opened this issue · comments

We are having difficulty setting up a local environment, running with sam local start-api which uses a shared dependency from our yarn workspace.

Steps

  1. I have updated the make file to use yarn and replaced any instance of prefix with cwd
  2. Added our local package, @claimsgate/core to the dependencies property in package.json

example.ts

  • ClaimsGatePermissions.Funnels.canEditPages.id is just a string literal value.
import "source-map-support/register";
import { APIGatewayProxyEvent, APIGatewayProxyResult } from "aws-lambda";
import { ClaimsGatePermissions } from "@claimsgate/core";
/**
 * A simple example includes a HTTP get method.
 */
export const exampleHandler = async (event: APIGatewayProxyEvent): Promise<APIGatewayProxyResult> => {
  // All log statements are written to CloudWatch
  console.debug(ClaimsGatePermissions.Funnels.canEditPages.id);

  return {
    statusCode: 200,
    body: JSON.stringify({
      message: ClaimsGatePermissions.Funnels.canEditPages.id,
    }),
  };
};

The following error is thrown when invoking the function.

FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\Users\\Rayyan\\Desktop\\Work\\Media Advancements\\Projects\\claimsgate\\packages\\aws\\node_modules\\@claimsgate\\core\\node_modules\\@claimsgate\\core-types\\node_modules\\@firebase\\database-compat\\node_modules\\@firebase\\database\\dist\\node-esm\\src\\core\\AppCheckTokenProvider.d.ts'

Is there something we are missing here? Historically in other packages of ours, to use a local dependency from our monorepo, we have always been able to add it to package.json and just begin using its functionality. If there was an issue, it would only be during a deployment pipeline?

Any advice would be much appreciated!

It appears that just having the package @claimsgate/core added to the package.json will cause the issue we are experiencing. Even if the example.ts makes no references to the package.

I believe this is an issue with path resolution with yarn classic on Windows but it's hard to figure out...

Can you run the AWS SAM locally in a docker environment?