标签: aws-serverless

在 AWS Cloudwatch 中查找 lambda 函数错误的日志?

我承认我还没有真正开始部署 AWS Lambda 函数,但本文是这样说的:

AWS CloudWatch 上的日志非常糟糕。我花了很长时间才找到简单应用程序的失败功能,想象一下大规模应用程序的恐怖。

在 AWS Cloudwatch 上过滤日志有什么特别困难的地方吗?例如,如果我们从 Servless 的节点模板部署 stock hello lambda,我想在日志中找到调用(错误或其他)是相当容易的?

如果有人有任何简单的最佳实践技巧,我们可以遵循这些技巧来使日志语句易于找到,那就太棒了!

amazon-web-services node.js amazon-cloudwatch serverless-framework aws-serverless

5
推荐指数
1
解决办法
1921
查看次数

Amazon Lambda不显示python日志

我的API(Python)部署在Amazon Lambda上。问题是当我请求我的API时,我收到内部服务器错误。我可以尾随Lambda日志,但看不到代码崩溃的实际错误或堆栈跟踪。当我拖尾日志时,我只会得到以下输出。

START RequestId: 62341bgd-6231-11e8-8c5b-25793532a32u Version: $LATEST
END RequestId: 62341b0d-6231-1128-8r5b-2b793032a3ed
REPORT RequestId: 6234te0b-6rte-aaa8-au5a-21t93132r3rt  Duration: 0.46 ms
Run Code Online (Sandbox Code Playgroud)

如何查看用于调试的python api的实际堆栈跟踪?

python amazon-web-services aws-lambda serverless aws-serverless

5
推荐指数
1
解决办法
1530
查看次数

AWS Lambda在HTTP请求中使用"X-Forwarded-*"标头进行故障排除

我使用无服务器开发了一个AWS Lambda代理,以便调用私有API,处理其结果并返回它.

这很简单,但是一旦在HTTP请求中设置了"X-Forwarded-For",私有API就不会返回任何内容.

我还没有找到在CloudFront中将此标头列入黑名单的方法,也没有找到在CloudFormation或API Gateway中列出黑名单的方法.

我应该在哪里寻找?

供参考,serverless.yml我使用:

service: mylambda
provider:
  name: aws
  runtime: java8
  memorySize: 1024
  timeout: 240
package:
  artifact: target/awslambda-1.0-SNAPSHOT.jar
functions:
  leboncoinlist:
    handler: com.example.awslambda.handler.HttpRequestHandler
    events:
        - http:
            path: list
            method: post
            cors: true
Run Code Online (Sandbox Code Playgroud)

amazon-cloudfront aws-lambda serverless-framework aws-serverless

5
推荐指数
1
解决办法
797
查看次数

无服务器框架功能的AWS Lambda文件系统路径?

因此,这似乎很容易,但一直很棘手。显然,无服务器与webpack捆绑在一起,然后上传到S3,然后再与Cloud Formation一起部署。

这里的问题是webpack的节点__dirname有一些问题,您可以在此处阅读:https : //github.com/webpack/webpack/issues/1599

基本上,这意味着您甚至需要考虑在使用__dirname来获取绝对路径之前(在之后target: node,),将以下内容添加到webpack配置中:

  // assume target: 'node', is here

  node: {
    __dirname: false,
  },:
Run Code Online (Sandbox Code Playgroud)

所以。大。我的问题是:

对于基于标准入门工具包的具有多个功能的无服务器项目,基本存储库中给定功能的根目录是什么?

我将上述代码添加到了webpack配置中,并且__dirname现在又可以使用了,但是我仍然无法找到存储在仓库中的文件。

仓库如下所示:

repo-root
——— src
——— ——— someFunction
——— ——— ——— some-sub-directory
——— ——— ——— ——— targetfile.json
Run Code Online (Sandbox Code Playgroud)

为了命中targetfile.json,我应在'__dirname'后面附加什么?

webpack aws-lambda serverless aws-serverless

5
推荐指数
1
解决办法
2325
查看次数

可以/建议在AWS CodeBuild中使用“ sam build”吗?

这个问题的纺出这一个。现在,我对那里的问题有了更好的了解,并且是一个可行的(如果不完美的话)解决方案,我正在提交一个更集中的后续措施(我仍然是StackOverflow的新手,请告诉我是否这违反了礼节,我应该对原文进行跟进)。

该页面建议“ 您使用AWS CodeBuild来构建,本地测试和打包无服务器应用程序 ”。但是,当我在中包含sam build命令时buildspec.yml,我得到以下日志输出,提示sam未在CodeBuild映像上安装:

[Container] 2018/12/31 11:41:49 Running command sam build --use-container 
sh: 1: sam: not found 

[Container] 2018/12/31 11:41:49 Command did not exit successfully sam build --use-container exit status 127 
[Container] 2018/12/31 11:41:49 Phase complete: BUILD Success: false 
[Container] 2018/12/31 11:41:49 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: sam build --use-container. Reason: exit status 127 
Run Code Online (Sandbox Code Playgroud)

此外,如果我使用来安装SAM pip install aws-sam-cli,则sam build --use-container …

amazon-web-services aws-codebuild aws-serverless

5
推荐指数
2
解决办法
2226
查看次数

通过 serverless 设置 API 网关的请求验证器

我想通过无服务器设置 API 网关的请求验证器。我为请求验证器尝试了两种不同的设置。但是,这两种方法都失败了。我已经总结了我所做的,所以如果有什么问题,请告诉我。

  1. 我在 swagger(OAS3.0) 中编写了 API 规范。因此我尝试使用OAS扩展来实现Request Validator的设置。在我sls deploy使用下面的swagger.yaml和之后serverless.yml,没有将 中描述的验证模式x-amazon-apigateway-request-validators添加到请求验证器选项中。 https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions-request-validator.html

在此处输入图片说明

swagger.yaml 在下面:

openapi: 3.0.0

info:
  description: xxx
  version: '0.1'
  title: xxx API
x-amazon-apigateway-request-validators:
  body-only:
    validateRequestBody: true,
    validateRequestParameters: false
  except-body:
    validateRequestBody: false,
    validateRequestParameters: true
  all:
    validateRequestBody: true,
    validateRequestParameters: true
tags:
  - name: auth
    description: xxx
paths:
  /login:
    post:
      tags:
        - auth
      summary: xxx
      description: ''
      x-amazon-apigateway-request-validator: all
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthResponse'
        '400':
          description: fail
          content:
            application/json …
Run Code Online (Sandbox Code Playgroud)

swagger aws-api-gateway serverless-framework serverless aws-serverless

5
推荐指数
1
解决办法
1130
查看次数

无服务器-在Lambda函数中运行Express实例,好还是坏?

在学习无服务器框架时,我遇到了一些教程,展示了如何在Lambda中运行Express实例。在我看来,这似乎有点过分,违背了Lambda函数的目的。

该方法通常涉及在Lambda中运行Express实例,并将API网关请求代理到Express路由器以进行内部处理。

对我而言,简单的方法是仅在API网关中创建一个API,并将单个请求路由到Lambda进行处理。我想念什么吗?

考虑到Lambdas的执行时间为15分钟,就内存而言,仅分解Express实例不是很昂贵吗?此外,限制并发执行Lambda 100次会产生瓶颈,不是吗?在这种情况下,EC2实例是否会更合适?像这样使用Lambda似乎太过分了。

我在Lambda中运行Express实例的唯一两个好处是:

  1. 在迁移使用Express编写的现有应用程序的情况下,允许将应用程序缓慢分解为API Gateway端点。
  2. 路由的内部处理,而不是依赖于API网关请求/响应模型(代理到Express路由器)。

如果我丢失了某些东西,这种方法有什么好处?

一些促进这种方法的资源:

aws-lambda serverless-framework serverless aws-serverless

5
推荐指数
1
解决办法
517
查看次数

在 serverless.yaml 上出现以下错误:无法读取块映射条目;多行键可能不是隐式键

我正在尝试将 lambda 函数与serverless.yml文件一起部署到 AWS,但它抛出以下错误

以下是YAML文件中定义的函数

functions:
 s3-thumbnail-generator:
 handler:handler.s3_thumbnail_generator  
   events:
     - s3:
       bucket: ${self:custom.bucket}
       event: s3.ObjectCreated:*
       rules:
       - suffix: .png

plugins:
  - serverless-python-requirements  
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

无法读取块映射条目;多行键可能不是 serverless.yml" 中第 45 行第 10 列的隐式键:

我需要了解如何在 YAML 文件中解决此问题才能将函数部署到 AWS?

yaml aws-lambda aws-serverless

5
推荐指数
1
解决办法
1万
查看次数

如何使用 ssh 隧道将谷歌数据工作室连接到 AWS 上的 postgres serverless?

我在 AWS 无服务器上有我的数据库,我只能通过 ssh 隧道在 VPC 外部连接到它,我需要从 Google Data Studio 连接,有人有任何解决方案吗?

postgresql amazon-web-services ssh-tunnel google-data-studio aws-serverless

5
推荐指数
1
解决办法
900
查看次数

无服务器离线抛出“配置错误”或“无法读取未定义的属性‘选项’”

我正在尝试使用 NodeJS、AWS Lambda、API Gateway、RDS 和 PostgreSQL 部署无服务器 REST API。

到目前为止,我已经成功设置了 PostgreSQL RDS,在开始编写函数来处理对数据库的请求之前,我认为最好先在本地测试一个小函数以检查请求是否得到正确处理。

所以在项目的根目录下,我安装了 serverless-offline:

npm install serverless-offline

它在安装类型时发出了几个警告:

npm WARN 已弃用 @hapi/pez@4.1.2:此版本已弃用,不再支持或维护

(如果这些信息无关紧要,我很抱歉,我是新手,不知道什么是重要的,什么不重要。)

然后我配置了我的serverless.yml

service: serverless-node-postgres-rds-rest-api

app: serverless-app

frameworkVersion: '2'

provider:
  name: aws
  runtime: nodejs12.x
  lambdaHashingVersion: 20201221

plugins:
  - serverless-offline

configValidationMode: error

functions:
  hello:
    handler: handler.hello
    events:
      - httpApi:
          path: hello
          method: get
Run Code Online (Sandbox Code Playgroud)

这是handler.js

'use strict';

module.exports.hello = async (event) => {
  return {
    statusCode: 200,
    body: JSON.stringify(
      {
        message: 'Go Serverless v1.0! Your function executed …
Run Code Online (Sandbox Code Playgroud)

node.js aws-serverless serverless-offline

5
推荐指数
1
解决办法
856
查看次数