标签: serverless

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

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

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

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

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

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

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

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

我有一个无服务器的 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
查看次数

无服务器错误 - 没有文件匹配包含/排除模式

我正在尝试使用 python 进行一些骨架部署。这是我的 serverless.yaml

我的文件夹结构是

serverless-test
|_lambdas
|____handler.py
|_layers
|____common
|_________somefunction.py
Run Code Online (Sandbox Code Playgroud)
service: serverless-test

frameworkVersion: '2'

provider:
  name: aws
  runtime: python3.8
  lambdaHashingVersion: 20201221

  stage: test
  region: us-west-2

functions:
  hello:
    handler: lambdas/handler.hello
Run Code Online (Sandbox Code Playgroud)

这很好用。现在,一旦我添加图层,我就会收到以下错误

No file matches include / exclude patterns

service: serverless-test

frameworkVersion: '2'

provider:
  name: aws
  runtime: python3.8
  lambdaHashingVersion: 20201221

  stage: test
  region: us-west-2

functions:
  hello:
    handler: lambdas/handler.hello
    layers:
      - {Ref: CommonLambdaLayer}

layers:
  common:
    path: layers/common
    name: common-module
    description: common set of functions
Run Code Online (Sandbox Code Playgroud)

我还尝试添加包含和排除模式。但这并没有解决我的问题

service: serverless-test

frameworkVersion: '2'

provider:
  name: aws …
Run Code Online (Sandbox Code Playgroud)

serverless-architecture serverless aws-serverless

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

在 CDN 上部署 React 应用程序,在服务器上部署 API 后端?

使用 CloudFlare 等 CDN 提供商在边缘托管 SPA 应用程序(即 React),但在常规 VPS/专用服务器上提供 SPA 应用程序使用的 API 后端,是否有任何重要的好处?

更常见的方法似乎是在 CDN 上托管 SPA,并拥有 AWS Lambda 或 Cloudflare Workers 等无服务器后端。我的应用程序和后端目前都在美国数据中心的 DigitalOcean 之类的 VPS 上提供服务,但分析显示我的用户也来自地球的另一半。

是否值得将 React 应用程序从 VPS 服务器迁移到 CDN?

谢谢

cdn cloudflare single-page-application reactjs serverless

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

AWS:无法在一次更新中执行多个 GSI 创建或删除

所以我在无服务器部署过程中遇到了这个问题:

\n
ServerlessError: An error occurred: MyDdbTable - Cannot perform more than one GSI creation or deletion in a single update.\n
Run Code Online (Sandbox Code Playgroud)\n

我的DDB表配置是这样的: \n serverless.yml中的配置

\n
      AttributeDefinitions:\n          - AttributeName: externalId\n            AttributeType: S\n          - AttributeName: code\n            AttributeType: S\n          - AttributeName: accountId\n            AttributeType: S\n        KeySchema:\n          - AttributeName: externalId\n            KeyType: HASH\n          - AttributeName: code\n            KeyType: RANGE\n        GlobalSecondaryIndexes:\n          - IndexName: gsi-account-id\n            KeySchema:\n              - AttributeName: accountId\n                KeyType: HASH\n              - AttributeName: code\n                KeyType: RANGE\n            Projection:\n              ProjectionType: ALL\n          - IndexName: externalId\n            KeySchema:\n              - AttributeName: externalId\n                KeyType: HASH\n …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-dynamodb serverless aws-serverless

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

FaunaDB 应用程序返回 401 但凭据正常

我想尝试 FaunaDB,所以我制作了一个 NodeJS 应用程序。我按照教程制作了一个像 Twitter 这样的应用程序。但是,当我尝试访问数据库时,我收到 403 未经授权的消息。我已经检查了我的安全密钥,但仍然遇到相同的错误。任何帮助,将不胜感激。

.env 文件:

KEY=randomString
PORT=5000
Run Code Online (Sandbox Code Playgroud)

索引.js:

require("dotenv").config();
const app = require("express")();
const faunadb = require("faunadb");

const client = new faunadb.Client({
    secret: process.env.KEY,
});

const {
    Paginate,
    Get,
    Select,
    Match,
    Index,
    Create,
    Collection,
    Lambda,
    Var,
    Join,
    Ref,
} = faunadb.query;

app.listen(5000, () => console.log(`API on http://localhost:${process.env.PORT}`));

app.get("/tweet/:id", async (req, res) => {
    try {
        const doc = await client.query(
            Get(
                Ref(
                    Collection("tweets"),
                    req.params.id
                )
            )
        )
        res.send(doc);

    } catch (err) {
        res.send(err)
    }
}); …
Run Code Online (Sandbox Code Playgroud)

node.js faunadb serverless

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

无服务器中一个端点的多种授权者类型

我正在为我的API尝试无服务器和授权者。我有一个用例,其中有两个不同的应用程序,一个iOS和一个Angular。iOS应用程序使用具有联合身份的开发人员身份验证,因为它使用第三方api进行身份验证,而Angular应用程序使用Cognito用户池进行身份验证。

因此,我可以使用User Pool授权者指定一个函数,并且该函数运行良好,对于我的开发人员身份验证用户,我正在使用AWS_IAM授权器,并且该函数也运行良好。

但是现在,我希望我的开发人员通过身份验证,并且我的用户池用户能够访问相同的api网关端点。那么,如何为一个端点使用两种不同类型的授权者?

任何在这方面有经验的人都可以为我指明正确的方向?

aws-lambda aws-api-gateway serverless

7
推荐指数
1
解决办法
1766
查看次数

无服务器yml上的CORS

我有一个React应用程序,试图从AWS访问无服务器。但是我有下面的错误

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.test.com' is therefore not allowed access. The response had HTTP status code 502.
Run Code Online (Sandbox Code Playgroud)

端点网址为https://key.execute-api.ap-southeast-2.amazonaws.com/dev/samplefunction

在serverless.yml上的设置是

login:
    handler: login.login
    events:
      - http:
          path: login
          method: post
          cors:
            origin: 'https://admin.differentdomain.com'
            headers:
              - MY_CUSTOM_HEADER
              - Content-Type
              - X-Amz-Date
              - Authorization
              - X-Api-Key
              - X-Amz-Security-Token
Run Code Online (Sandbox Code Playgroud)

我还有其他地方需要进行CORS配置吗?

serverless-framework serverless aws-serverless

7
推荐指数
1
解决办法
2129
查看次数

使用GraalVM在AWS Lambda中运行Java

是否有能力使用GraalVM在AWS Lambda函数中运行Java?我阅读了许多关于使用GraalVM AOT(提前)编译功能的Java应用程序冷启动的文章,并减少了持续时间,我想尝试在我的AWS Lambda项目中使用它.

java amazon-web-services aws-lambda graalvm serverless

7
推荐指数
1
解决办法
3171
查看次数

如何将 CloudWatch Lambda Insights 添加到无服务器配置?

如何将 CloudWatch Lambda Insights 添加到无服务器配置?我不想手动执行此操作,因此我希望这是一个选项。

我添加了这样的跟踪:

tracing:
    lambda: true
Run Code Online (Sandbox Code Playgroud)

但这只能启用 AWS X-ray 而不是其他选项。

在此处输入图片说明

aws-lambda serverless

7
推荐指数
1
解决办法
552
查看次数