- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题
我有一个独立的 aws serverless 后端项目,它利用 lambda 层概念来共享 node_modules
和其他自定义依赖项
。
在我的案例中,自定义依赖项的用例之一是拥有所有常见代码,例如用于状态代码的 HTTP_STATUS_CODE
枚举和 Api 响应 util
以及续集模型和服务稍后复制到 node_modules
并将其托管到 s3 存储桶
文件夹结构
.
├── customDependencies
│ └── nodejs
│ └── sequelizeORM
│ ├── config
│ ├── migrations
│ ├── models
│ ├── seeders
│ └── services
├── node_modules
└── src
├── functions
├── func1
├── func2
├── func3
在将函数部署到 AWS 提供商之前,我将所有文件从 customDependency
复制到 node_modules
并将此 node_modules
推送到 S3 并创建所有 lambda 函数都引用 node_modules
使用通用代码的函数示例
//func1
import {HTTP_STATUS_CODE, stringifyResponse} from "api_response_utils"
/*
api_response_utils is referenced from a lambda layer
*/
export const handler = (ctx) => {
stringifyResponse(HTTP_STATUS_CODE.SUCCESS,ctx.req.body)
}
//-----------------
//func2
import {HTTP_STATUS_CODE, stringifyResponse} from "api_utils"
export const handler = (ctx) => {
stringifyResponse(HTTP_STATUS_CODE.SUCCESS,ctx.req.body)
}
我在 azure 环境中实现此操作时遇到问题。
我想要实现的目标
我想知道是否有任何方法可以在 azure 中复制 lambda 层概念。
我尝试过的
我尝试使用此 cp -r customDependency/nodejs/* node_modules
将 customDependency/nodejs
内的所有文件复制到 node_modules
我也有serverless-webpack
作为插件安装,它使用下面给出的 webpack 配置
。
webpack.config.js
const path = require("path");
const slsw = require("serverless-webpack");
const nodeExternals = require("webpack-node-externals");
module.exports = {
context: __dirname,
mode: slsw.lib.webpack.isLocal ? "development" : "production",
entry: slsw.lib.entries,
devtool: slsw.lib.webpack.isLocal
? "source-map"
: "eval-cheap-module-source-map",
externals: [nodeExternals()],
resolve: {
extensions: [".mjs", ".json", ".ts", ".js"],
symlinks: false,
cacheWithContext: false,
},
stats: {
errorDetails: true,
},
output: {
libraryTarget: "commonjs",
path: path.join(__dirname, ".webpack"),
filename: "[name].js",
},
externalsPresets: { node: true },
module: {
rules: [
// all files with a `.ts` or `.tsx` extension will be handled by `ts-loader`
{
test: /\.(tsx?)$/,
loader: "ts-loader",
exclude: [
[
path.resolve(__dirname, "node_modules"),
path.resolve(__dirname, ".serverless"),
path.resolve(__dirname, ".webpack"),
],
],
options: {
transpileOnly: true,
experimentalWatchApi: true,
},
},
],
},
plugins: [
],
};
当我尝试无服务器包
时,webpack 无法找到自定义依赖项
例如我收到警告
无法确定模块 api_response_utils.js 的版本
后跟一个错误
我通过从 webpack
配置中删除 externals
属性修复了此错误。
这是我所做的解决方法,部署工作正常,但我想知道是否有更好的方法将AWS Lambda Layers概念复制到azure。
最佳答案
在 AWS 中,这些层是可重用的代码,可以由多个 Lambda 使用(我相信也可以跨 AWS 账户)。这里有一些限制,每个 Lambda 最多 5 层,层数应小于 250MB。
在 Azure 中,情况略有不同,您可以在函数应用程序中部署多个函数,并且函数应用程序中的所有函数都可以使用相同的包(共享代码)。代码不能在不同的功能应用程序之间共享,这是关键部分。部署包没有限制。
关于amazon-web-services - Azure 提供商中的 AWS lambda 层相当于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72005804/
我在前几天的测验中遇到了以下问题。 Consider the code fragment (assumed to be in a program in which all variables are
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 9 年前。 Improve this qu
我刚开始接触 Objective-C,一般来说是 C,所以我想这也是一个 C 问题。它更像是一个为什么的问题,而不是一个如何做的问题问题。 我注意到,在除以两个整数时,小数部分向下舍入为 0,即使结果
我是一名优秀的程序员,十分优秀!