Mitja O
06/14/2021, 12:02 PMRoss Coundon
06/14/2021, 12:18 PMFrank
Mitja O
06/14/2021, 1:10 PMFrank
sst.Api
construct to create an API endpoint? Let me know and I can shared some code to show to use the code referenced in the GitHub comment above.Mitja O
06/15/2021, 10:45 AMFrank
sst.Api
, can you do something like:
export class MainStack extends sst.Stack {
constructor(scope: <http://sst.App|sst.App>, id: string, props?: sst.StackProps) {
super(scope, id, props);
const prismaData = buildPrisma();
new sst.Api(this, "MyApi", {
defaultFunctionProps: {
layers: [...prismaData.layers],
bundle: {
externalModules: prismaData.externalModules,
}
},
routes: {
"GET /": "src/lambda.main",
},
});
}
buildPrisma() {
const layer_root = ".build/layer"
const layer_node = path.join(layer_root, "nodejs")
const to_copy = [
"node_modules/@prisma/client",
"node_modules/@prisma/engines/migration-engine-rhel-openssl-1.0.x",
"node_modules/@prisma/engines/query-engine-rhel-openssl-1.0.x",
"node_modules/@prisma/engines/package.json",
"node_modules/@prisma/engines/dist",
"node_modules/prisma",
"node_modules/.prisma",
]
execSync(`rm -rf ${layer_root}`)
for (let src of to_copy) {
const parent = path.join(src, "../")
execSync(`mkdir -p ${layer_node}/${parent}`)
console.log(`Copying ${src} to ${layer_node}/${parent}`)
execSync(`cp -a ${src} ${layer_node}/${parent}`)
}
const to_delete = [
"node_modules/prisma/query-engine-rhel-openssl-1.0.x",
"node_modules/prisma/query-engine-debian-openssl-1.1.x",
"node_modules/.prisma/query-engine-rhel-openssl-1.0.x",
"node_modules/.prisma/query-engine-debian-openssl-1.1.x",
]
for (let src of to_delete) {
execSync(`rm -rf ${src}`)
}
const layer = new lambda.LayerVersion(stack, "Prisma", {
code: lambda.Code.fromAsset(layer_root),
compatibleRuntimes: [lambda.Runtime.NODEJS_14_X],
})
execSync(`rm -rf ${layer_root}`)
return {
layers: [layer],
externalModules: [
"@prisma/client",
"prisma",
".prisma/client",
"@prisma/engines",
],
}
}
}
Frank
buildPrisma()
to build the layer, and by setting it in defaultFunctionProps
, all Lambda functions in the Api will be using this layer.Frank
Mitja O
06/16/2021, 2:26 PMAz
08/24/2021, 5:32 PM"node_modules/@prisma/engines/migration-engine-rhel-openssl-1.0.x",
"node_modules/@prisma/engines/query-engine-rhel-openssl-1.0.x",