标签: serverless

serverless-offline:API 网关的远程 Lambda 自定义授权方

我已使用 CloudFormation 语法在 API 网关资源上声明了一个 HTTP 代理方法(详细信息请参阅之前的文章。)

\n\n

我正在尝试附加一个类型为“Request”的自定义授权者,它使用现有的 AWS Lambda 函数。无服务器文档有一个使用 CloudFormation 设置自定义授权者的不错示例。同时,无服务器离线 显然支持(源)请求范围的自定义授权者。

\n\n

在创建以下无服务器模板时,我仔细交叉引用了AWS::ApiGateway::ResourceAWS::ApiGateway::Authorizer的相关 AWS CloudFormation 文档以及相关的无服务器文档。但到目前为止,我没有从无服务器离线获得预期的输出或行为获得预期的输出或行为。

\n\n

资源是在没有授权者的情况下创建的

\n\n

当我启动以下无服务器配置时,不会为我的资源加载授权者。我没有看到我的serverless.yml文件中有什么错误或缺失。你有什么建议吗?提前致谢!

\n\n
\xe2\x9e\x9c  serverless-offline-attempt git:(master) \xe2\x9c\x97 npm start\n\n> @ start /Users/freen/src/apig/serverless-offline-attempt\n> ./node_modules/serverless/bin/serverless offline\n\nServerless: Starting Offline: dev/us-east-1.\n\nServerless: Routes defined in resources:\nServerless: ANY /upstream/{proxy*} -> http://upstream.company.cool/{proxy}\n\nServerless: Offline listening on http://localhost:3000\n
Run Code Online (Sandbox Code Playgroud)\n\n

serverless.yml

\n\n

以下模板文件包含 APIG 资源和授权者配置。

\n\n
\xe2\x9e\x9c  serverless-offline-attempt git:(master) \xe2\x9c\x97 npm start\n\n> @ start …
Run Code Online (Sandbox Code Playgroud)

aws-lambda aws-api-gateway serverless-framework serverless serverless-offline

9
推荐指数
0
解决办法
2793
查看次数

在AWS Lambda中存储单个值的最佳实践

我有一个正在生成并返回值的Lambda.此值可能会过期.因此我需要在返回之前检查值的有效性.由于生成非常昂贵(取自另一个服务),我想以某种方式存储该值.

存储这两个值(时间戳和相应值)的最佳实践是什么?

  • DynamoDB,但使用2个值的数据库服务似乎是很多开销.永远不会有更多的物品; 相同的条目只会更新.
  • 我想过S3,但是这也意味着创建一个S3-Bucket并存储一个包含信息的对象,仅用于这两个值(但可能是最"瘦"的方式?)
  • 很想更新Lambdas配置以更新环境变量(但即使这是可能的,它可能没有最佳实践?!也不确定与Lambda运行时的不一致...)

什么是最佳做法?什么是性能方面?

amazon-s3 amazon-web-services amazon-dynamodb aws-lambda serverless

8
推荐指数
2
解决办法
2650
查看次数

Cognito、API Gateway 和 Lambda 假设 Cognito 用户的身份

我正在构建一个 React 应用程序,使用 API Gateway、lambda 和 cognito(基本上从https://serverless-stack.com教程开始)。我想为我的 DynamoDb 设置细粒度的访问控制(即通过基于登录用户限制对 DynamoDb 表的访问的 IAM 策略 - 如https://docs.aws.amazon.com/IAM/latest/UserGuide/ reference_policies_examples_dynamodb_rows.html )

AFAIK,一个 lambda 函数承担一个服务角色,如 serverless.yml 文件中定义的那样,它本身与附加到登录的 cognito 用户的 AIM 策略无关。我知道使用aim_authorizer,我可以获得登录用户的信息。

我的问题:是否可以让 lambda 代表给定的认知用户执行 AWS 调用,从而遵守附加到该用户的 IAM 策略?(有点类似于 serverless-stack 教程如何与 S3 交互)

欢迎所有建议。

aws-lambda serverless

8
推荐指数
1
解决办法
267
查看次数

Serverless-webpack 部署脚本在 Webpack 4.8 中“挂起”,而在 3.12 中运行正常。

我正在使用无服务器和无服务器 webpack。webpack配置非常简单:

const path = require('path');
const nodeExternals = require('webpack-node-externals');

module.exports = {
    entry: {
        lambda: './lambda.js',
    },
    output: {
        libraryTarget: 'commonjs',
        path: path.join(__dirname, '.webpack'),
        filename: '[name].js',
    },
    target: 'node',
    externals: [nodeExternals()],
    module: {
        rules: [{
            test: /\.js$/,
            loader: 'babel-loader',
            include: __dirname,
            exclude: /node_modules/,
        }, {
            test: /\.json$/,
            loader: 'json-loader',
        }],
    },
    stats: "verbose",
};
Run Code Online (Sandbox Code Playgroud)

无服务器.yml:

plugins:
    - serverless-webpack
    - serverless-secrets-plugin
    - serverless-plugin-split-stacks
    - serverless-offline  

custom:
    webpack:
        webpackConfig: ./webpack.config.js
    stage: ${opt:stage, self:provider.stage}

provider:
    name: aws
    runtime: nodejs8.10

functions: …
Run Code Online (Sandbox Code Playgroud)

javascript node.js webpack serverless-framework serverless

8
推荐指数
0
解决办法
541
查看次数

找不到模块 'source-map-support/register

我按照 webpack4 示例来设置配置:https : //github.com/serverless-heaven/serverless-webpack/tree/master/examples/babel-webpack-4 因为我收到错误“找不到模块源-地图支持/注册”。

我已经研究了已经创建的问题:

https://github.com/serverless-heaven/serverless-webpack/issues/357

https://github.com/serverless-heaven/serverless-webpack/issues/228

现在我的配置是:

.babelrc
{
"comments": false,
"sourceMaps": "both",
"presets": ["env","stage-2"],
"plugins": ["source-map-support"]
}
Run Code Online (Sandbox Code Playgroud) webpack.config.js:
const path = require('path');
const nodeExternals = require('webpack-node-externals');
const slsw = require('serverless-webpack');

module.exports = {
  entry: slsw.lib.entries,
  mode: slsw.lib.webpack.isLocal ? 'development' : 'production',
  output: {
    libraryTarget: 'commonjs2',
    path: path.join(__dirname, '.webpack'),
    filename: '[name].js',
    sourceMapFilename: '[file].map',

  },
  optimization: {
    // We no not want to minimize our code.
    minimize: false,
  },
  performance: {
    // Turn off size warnings for …
Run Code Online (Sandbox Code Playgroud)

node.js webpack serverless serverless-webpack-plugin serverless-offline

8
推荐指数
2
解决办法
5435
查看次数

无服务器webpack不捆绑handlers.js

我是webpack和无服务器的新手,所以如果这看起来微不足道,请原谅我.我从npm serverless-webpack复制了这些代码.

我尝试使用serverless webpack --out dist,但我的命令行无法识别webpack.如果我尝试serverless deploy <opts> <opt>,那么它编译并捆绑成.serverless但缺少必要的JS文件.

webpack.config.js

var path = require('path');
var slsw = require('serverless-webpack');
var nodeExternals = require('webpack-node-externals');

module.exports = {
  context: path.resolve(__dirname, './src'),
  entry: slsw.lib.entries,
  target: 'node',
  externals: [nodeExternals()],
  output: {
    libraryTarget: 'commonjs',
    path: path.resolve(__dirname, '.webpack'),
    filename: '[name].js',
  },
  module: {
    rules: [
      {
        test: /\.jsx$/,
        loader: ["babel-loader"],
        include: __dirname,
        exclude: /node_modules/
      }
    ]
  }
};
Run Code Online (Sandbox Code Playgroud)

Serverless.yml

service: hello-world
frameworkVersion: '>=1.2.0 <2.0.0'
provider:
  name: aws
  runtime: nodejs8.10 …
Run Code Online (Sandbox Code Playgroud)

webpack serverless

8
推荐指数
1
解决办法
700
查看次数

在本地运行 AWS SAM CLI 时启用 CORS

每当我尝试通过浏览器通过 POST 访问无服务器 lambda 函数时,我都会收到错误消息

对预检请求的响应未通过访问控制检查:请求的资源上不存在 >'Access-Control-Allow-Origin' 标头。

当它是一个/GET它工作正常我读过它是因为它没有发送飞行前请求。当我把它改成POST这个的时候就是失败了。

我正在运行的命令:

sam local start-api

我的 template.yaml 是:

...

Resources:
    PropertiesFunction:
        Type: AWS::Serverless::Function
        Properties:
            CodeUri: target/service-0.0.1-SNAPSHOT.jar
            Handler: com.aws.PropertiesHandler::handleRequest
            Runtime: java8
            Events:
                PropertiesApi:
                    Type: Api
                    Properties:
                        Path: /properties
                        Method: post

...
Run Code Online (Sandbox Code Playgroud)

如何在这些端点上启用 CORS?

amazon-web-services aws-lambda aws-api-gateway aws-sam-cli serverless

8
推荐指数
3
解决办法
4893
查看次数

无服务器:通过调用方法触发并忘记无法正常工作

我有一个无服务器的 lambda函数,在其中我想触发(调用)一个方法而忘记它

我用这种方式做

   // myFunction1
   const params = {
    FunctionName: "myLambdaPath-myFunction2", 
    InvocationType: "Event", 
    Payload: JSON.stringify(body), 
   };

   console.log('invoking lambda function2'); // Able to log this line
   lambda.invoke(params, function(err, data) {
      if (err) {
        console.error(err, err.stack);
      } else {
        console.log(data);
      }
    });


  // my function2 handler
  myFunction2 = (event) => {
   console.log('does not come here') // Not able to log this line
  }
Run Code Online (Sandbox Code Playgroud)

我注意到,直到并且除非我执行Promise returnin myFunction1,否则它不会触发myFunction2,但是不应该设置lambda InvocationType = "Event"意味着我们希望此操作被触发并忘记并且不关心回调响应吗?

我在这里想念什么吗?

非常感谢您的帮助。

javascript aws-lambda serverless aws-lambda-edge aws-serverless

8
推荐指数
1
解决办法
68
查看次数

AWS Step Functions - 谷歌云平台有这样的解决方案吗?

目前,我正在研究将复杂的 Web 应用程序从 AWS 迁移到 GCP 的可能性和正确方法。通用计算和网络服务从一个提供商映射到另一个提供商实际上没有问题,但我想知道 GCP 是否有类似于AWS Step Functions 的服务?我已经看过 Google Dataflow和 Google Cloud Tasks。第二个似乎是这样的,但我不确定它是否是最佳解决方案。

所以问题是谷歌的哪些服务提供了与 AWS Step Functions 相同的功能?如果没有这样的 - 那么你会推荐哪些服务的组合来实现分布式任务(主要是云功能)的有效编排。谢谢!

amazon-web-services web google-cloud-platform aws-step-functions serverless

8
推荐指数
2
解决办法
4844
查看次数

Express.js 应用程序无服务器,使用 Lambda 或函数 - 一个好主意?

免责声明:我承认这更像是一个广泛的最佳实践问题,而不是一个特定的编程问题,但是,我相信 SO 群是它的最佳受众。我知道这个类似的问题(我应该在无服务器应用程序中使用 Express.js 吗?),但答案似乎没有回答我的问题。

出于典型原因,我想将 Express.js 从 AWS Lightsail/EC2 迁移到无服务器,而 Lambda 是我的首选武器。但是,将整个框架连同其上的应用程序一起视为函数可能有点笨重,因此可能不适合在 AWS Lambda 或 Google/Azure Functions 上运行。虽然我确信这是可行的,但这是个好主意吗?这种设置不会降低效率并使处理诸如会话状态之类的事情变得复杂,最终会破坏无服务器功能的目的吗?

express aws-lambda azure-functions serverless aws-serverless

8
推荐指数
1
解决办法
1365
查看次数