标签: serverless-framework

无服务器框架中的最佳实践

我是无服务器框架的新手.学习无服务器时的最佳实践. 这里

我有一个关于"在Lambda代码之外初始化外部服务"的问题.怎么实现呢?例如:在handler.js中的代码下面

const getOneUser = (event, callback) => {
  let response = null;
  // validate parameters
  if (event.accountid && process.env.SERVERLESS_SURVEYTABLE) {
    let docClient = new aws.DynamoDB.DocumentClient();
    let params = {
      TableName: process.env.SERVERLESS_USERTABLE,
      Key: {
        accountid: event.accountid,
      }
    };
    docClient.get(params, function(err, data) {
      if (err) {
        // console.error("Unable to get an item with the request: ", JSON.stringify(params), " along with error: ", JSON.stringify(err));
        return callback(getDynamoDBError(err), null);
      } else {
        if (data.Item) { // got response
          // compose response
          response = …
Run Code Online (Sandbox Code Playgroud)

node.js amazon-dynamodb serverless-framework

2
推荐指数
1
解决办法
1929
查看次数

如何安排AWS Lambda cron在当月最后一天的晚上11:30运行?

我希望我的Lambda函数能够在每个月的最后一天晚上11:30运行.

我正在使用无服务器框架所以我需要的是正确的Schedule表达式(这里的文档信息)

任何帮助非常感谢.

注意:不幸的是,我不能在月初这样做,因为依赖于从仅计算"本月"数据的第三方工具中提取数据.

cron amazon-web-services aws-lambda serverless-framework

2
推荐指数
1
解决办法
805
查看次数

使用AWS Lambda仅使用角色访问S3

我有一个用Java I编写的Lambda函数,我想让它访问S3(putObject).

我不想在我的Lambda函数中使用或存储凭据以访问S3.相反,我想使用IAM角色.

如何在我的Java代码(将由Lambda运行)中编写AWS S3客户端,该代码不需要任何凭据并假设Lambda具有适当的角色?

amazon-s3 amazon-web-services aws-sdk aws-lambda serverless-framework

2
推荐指数
1
解决办法
1103
查看次数

在本地测试Elasticache和无服务器AWS Lambda

我正在使用无服务器使用nodejs模板创建lambda函数。

  1. 要连接到我的Elasticache Redis,我设置了一个VPC,并将安全组和子网ID以及该区域添加到了我的lambda中serverless.yml
  2. 我部署了它并确认可以设置并从Redis获取密钥。

当我尝试时serverless invoke local -f functionName,它总是超时,因此我必须部署它进行测试。

是否可以在本地进行测试serverless

amazon-web-services node.js amazon-elasticache aws-lambda serverless-framework

2
推荐指数
1
解决办法
777
查看次数

无服务器框架'dev'和'prod'分离

我正在使用无服务器框架编写后端服务.

分离"Dev"和"Prod"环境的最佳方法是什么?

假设我希望我的开发配置文件部署在某个区域,而我的prod配置文件则部署在另一个区域?有没有办法在无服务器框架中实现这一目标?

我想做的事情如下:

serverless deploy --profile dev (--> use serverless-dev.yml)
serverless deploy --profile prod (--> use serverless-prod.yml)
Run Code Online (Sandbox Code Playgroud)

amazon-web-services serverless-framework

2
推荐指数
1
解决办法
1704
查看次数

调试部署失败的GCloud Functions

刚刚开始使用GCloud Functions,我遇到了问题.我已将我的一个项目更新为功能就绪,并使用谷歌local-emulator(@ google-cloud/functions-emulator)来调试和测试我的新功能.一切顺利,模拟器部署进行得很顺利.```

$ functions deploy doThing --trigger-http --timeout=540s
Copying file:///var/folders/nw/.../T/us-central1-doThing-....zip...
Waiting for operation to finish...done.
Deploying function.......done.
Function doThing deployed.
Run Code Online (Sandbox Code Playgroud)

```

但是当我尝试使用实际的相同的东西gcloud beta functions我得到一个构建错误没有任何理由或明显的方式来调试它:

```

$ gcloud beta functions deploy doThing --stage-bucket test-bucket --trigger-http --timeout=360s
Copying file:///var/folders/nw/.../T/tmpUJvuxd/fun.zip [Content-Type=application/zip]...
| [1 files][  7.5 MiB/  7.5 MiB]
Operation completed over 1 objects/7.5 MiB.
Deploying function (may take a while - up to 2 minutes)...failed.
ERROR: (gcloud.beta.functions.deploy) OperationError: code=13, message=Error in the build environment
Run Code Online (Sandbox Code Playgroud)

```

在GClould日志中,我没有得到任何其他细节==> …

node.js gcloud serverless-framework

2
推荐指数
1
解决办法
1134
查看次数

如何在响应中同时发送 cookie 和重定向?(无服务器框架)

下面是我用来在单个响应中设置 cookie 和重定向链接的代码,但只有其中一个可以工作。如果 statusCode 是 301/302,则重定向正在发生,但未设置 cookie。如果 statusCode 是 200 cookie 设置但重定向不起作用。有谁知道如何在单个请求中同时使用两者?我应该更改 StatusCode 某些状态代码不允许设置 cookie 吗?

const response = {
    statusCode: 302,
        headers: {
          "Access-Control-Allow-Origin" : "*",
          "Access-Control-Allow-Credentials" : true,
          "Set-Cookie": 'data='+data,
          "Location":"http://localhost:8040/#/dashboard",
        },
        body: JSON.stringify({
          message: data,
        }),
      };
      callback(null, response);
Run Code Online (Sandbox Code Playgroud)

我正在使用 nodejs 的无服务器框架。

这是响应的屏幕截图 在此处输入图片说明

但在 cookie 中注意是 der在此处输入图片说明

javascript cookies node.js serverless-framework

2
推荐指数
1
解决办法
5896
查看次数

如何在 serverless.yml 中为 DynamoDb 设置标签

我想为 Dynamo DB 设置标签,我们是否有一个 serverless.yml 配置,就像我们有它的功能一样

functions:
  createUsers:
    tags:
      key: value
Run Code Online (Sandbox Code Playgroud)

amazon-dynamodb aws-lambda serverless-framework

2
推荐指数
1
解决办法
911
查看次数

减少无服务器框架发送的节点模块zip的大小

我正在使用无服务器框架编写一些nodejs函数。该package.json文件需要一些依赖项:

{
  "name": "adam-test-sls",
  "version": "0.1.0",
  "description": "Test package to play with sls/lambda",
  "main": "handler.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Adam Matan <adam@binaris.com>",
  "license": "UNLICENSED",
  "dependencies": {
    "aws-sdk": ">= 2.0.9",
    "json": "^9.0.6",
    "underscore": "^1.8.3",
    "uuid": "^3.1.0"
  },
  "devDependencies": {
    "eslint": "^4.2.0",
    "eslint-config-airbnb": "^15.0.2",
    "eslint-config-airbnb-base": "^11.2.0",
    "eslint-plugin-import": "^2.7.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

node-modules目录的大小几乎为50mb:

# du -smc node_modules
47  node_modules
47  total
Run Code Online (Sandbox Code Playgroud)

压缩时间约为9.5MB,部署时间超过35秒:

# time serverless deploy function --function hello -v …
Run Code Online (Sandbox Code Playgroud)

dependencies node.js npm aws-lambda serverless-framework

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

AWS AppSync订阅参数

AppSync GraphQL订阅的参数可以用于什么?根据文档上的实时数据页面:

使用GraphQL订阅的一个重要部分是了解何时以及如何使用参数,因为细微的更改将允许您修改客户端通知发生的突变的方式和时间.(...)在默认示例中,客户端可以在传递特定eventId参数时订阅注释

但是,我找不到任何方法来访问订阅参数.我有不同的"渠道"评论,我希望用户能够单独订阅,可选择使用密码.我设置的订阅会响应所有渠道中的评论.

有没有办法通过映射模板或类似方法"过滤"通过订阅的数据?如果没有,订阅参数的预期用途是什么?过滤必须在客户端完成吗?

amazon-web-services graphql serverless-framework serverless aws-appsync

2
推荐指数
1
解决办法
3234
查看次数