标签: serverless-framework

AWS Lambda连接超时到Elasticache

我试图让无服务器与Elasticache一起工作.我写了一个基于无服务器示例/无服务器基础设施仓库的自定义CloudFormation文件.我设法将Elasticache和Lambda放在一个子网中(使用cli检查).我从输出中检索主机和端口,但每当我尝试连接node-redis时,连接超时.以下是相关部分:

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

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

无服务器框架sls与Powershell sls冲突(选择字符串)

我使用以下NPM命令安装了无服务器框架

npm install -g serverless
Run Code Online (Sandbox Code Playgroud)

当我尝试sls在Powershell中运行无服务器命令时,我得到一个奇怪的结果,提到"cmdlet Select-string".

sls --version
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有人可以帮我解决这个问题吗?

powershell node.js serverless-framework

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

找不到无服务器插件“无服务器离线”。确保它已安装并列在无服务器配置文件的“插件”部分

部署 SLS 项目时,出现以下错误:

找不到无服务器插件“无服务器离线”。确保它已安装并列在无服务器配置文件的“插件”部分

但是我确实serverless-offline正确安装了插件,请有人帮我修复它。

这是我的serverless.yml文件:

   service: email-sender

    provider:
      name: aws
      runtime: nodejs4.3

    functions:
      send:
        handler: handler.send
        events:
          - http:
              path: submissions
              method: post
              response:
                headers:
                  Content-Type: "text/json"
              cors:
                origins:
                  - '*'
    package:
      exclude:
        - node_modules/**
      include:
        - node_modules/serverless-offline/**

    plugins:
      - serverless-offline
Run Code Online (Sandbox Code Playgroud)

amazon-web-services serverless-framework

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

无服务器框架:实现完整"基础架构作为代码"的方法?

我遵循了一个出色的指南(无服务器堆栈),它创建了一个带有反应前端的典型CRUD无服务器基础架构.它正在使用AWS 的无服务器框架.

我不喜欢的是,为了引导设置,有很多手动点击GUI(主要是亚马逊的控制台界面).即,设置不受版本控制,并且不易重现.使用CI/CD进程等扩展它并不容易.在此示例中,需要手动设置以下资源:

  • AWS Cognito用户池
  • AWS Cognite用户池应用程序
  • AWS Cognito联合身份池
  • AWS DynamoDB实例
  • AWS S3存储桶(x3)(这也是托管前端)
  • AWS CloudFront分发
  • AWS Route53区域文件

从代码构建的唯一资源是无服务器函数(lambdas)本身,以及API网关实例.这就是无服务器框架使用其serverless.yml文件所做的事情.但是不会自动创建上述所有资源.有时需要引用它们使用它们的ARN,但它们不是由serverless.yml配置创建的.在生产中运行这样的系统(严重依赖于通过GUI手动创建服务)似乎存在风险.

我当时认为解决这个问题的方法是使用Terraform或Cloudformation.但无服务器框架本身已经使用Cloudformation来设置Lambdas,但不是用于其他资源.那么如何消除这种差距呢?换句话说,如何在代码中重建无服务器堆栈中描述的整个设置?

CloudFormation设置无服务器似乎很奇怪,也许是不可能的,然后它有自己的Cloudformation模板来设置lambdas.扩展无服务器框架可能更有意义,不仅要定义需要在其上创建的功能和API网关,serverless deploy还要定义其他资源,如DynamoDB或Cognito用户池.是否有人做过这样的例子或尝试?

aws-cloudformation terraform serverless-framework serverless

9
推荐指数
1
解决办法
791
查看次数

无服务器错误,当自定义命名的资源需要替换时,CloudFormation无法更新堆栈

我有以下错误.

无服务器:操作失败!

Serverless Error ---------------------------------------
An error occurred: phoneNumberTable - CloudFormation cannot update a stack when a custom-named resource requires replacing. Rename mysite-api-phonenumber-dev and update the stack again…
Run Code Online (Sandbox Code Playgroud)

我尝试删除数据库,看看它是否可以重新创建它,但它仍然给出相同的错误,不会重制数据库?我该怎么办?

我所做的最近在我的serverless.yml文件中更改了以下资源.

phoneNumberTable: #This table is used to track phone numbers used in the system
      Type: AWS::DynamoDB::Table
      Properties:
        TableName: ${self:custom.phoneNumberTable}
        AttributeDefinitions: #UserID in this case will be created once and constantly updated as it changes with status regarding the user.
          - AttributeName: phoneNumber
            AttributeType: S
        KeySchema:
          - AttributeName: phoneNumber
            KeyType: HASH …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cloudformation amazon-dynamodb serverless-framework serverless

9
推荐指数
1
解决办法
4020
查看次数

让Sequelize.js库在Amazon Lambda上运行

所以我试图在亚马逊上运行lambda并最终通过测试amazons测试控制台中的lambda来缩小错误.

我得到的错误就是这个.

{
  "errorMessage": "Please install mysql2 package manually",
  "errorType": "Error",
  "stackTrace": [
    "new MysqlDialect (/var/task/node_modules/sequelize/lib/dialects/mysql/index.js:14:30)",
    "new Sequelize (/var/task/node_modules/sequelize/lib/sequelize.js:234:20)",
    "Object.exports.getSequelizeConnection (/var/task/src/twilio/twilio.js:858:20)",
    "Object.<anonymous> (/var/task/src/twilio/twilio.js:679:25)",
    "__webpack_require__ (/var/task/src/twilio/twilio.js:20:30)",
    "/var/task/src/twilio/twilio.js:63:18",
    "Object.<anonymous> (/var/task/src/twilio/twilio.js:66:10)",
    "Module._compile (module.js:570:32)",
    "Object.Module._extensions..js (module.js:579:10)",
    "Module.load (module.js:487:32)",
    "tryModuleLoad (module.js:446:12)",
    "Function.Module._load (module.js:438:3)",
    "Module.require (module.js:497:17)",
    "require (internal/module.js:20:19)"
  ]
}
Run Code Online (Sandbox Code Playgroud)

很容易,所以我必须安装mysql2.所以我把它添加到我的package.json文件中.

{
  "name": "test-api",
  "version": "1.0.0",
  "description": "",
  "main": "handler.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 0"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "aws-sdk": "^2.153.0",
    "babel-core": "^6.26.0",
    "babel-loader": "^7.1.2", …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-rds aws-lambda serverless-framework node-mysql2

9
推荐指数
1
解决办法
2566
查看次数

使用无服务器框架请求验证

我在后端使用无服务器框架.如何实现请求验证?(不想在lambda函数中编写验证).

validation amazon-web-services aws-lambda aws-api-gateway serverless-framework

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

将存储桶策略附加到无服务器生成的存储桶

我正在尝试使用无服务器创建一个 S3 存储桶,它可以工作,但是为了操作其中的文件,我需要一个存储桶策略。我很难理解在何处以及如何添加使用在第一次无服务器部署时创建的生成的 S3bucket 名称的策略

## serverless.yml##

service: vcc-nametags-api

# Use the serverless-webpack plugin to transpile ES6
plugins:
  - serverless-webpack
  - serverless-offline
  - serverless-ding

# serverless-webpack configuration
# Enable auto-packing of external modules
custom:
  # Our stage is based on what is passed in when running serverless
  # commands. Or fallsback to what we have set in the provider section.
  stage: ${opt:stage, self:provider.stage}
  # Set our DynamoDB throughput for prod and all other non-prod stages.
  # Load our webpack …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services serverless-framework

9
推荐指数
1
解决办法
6138
查看次数

找不到模块“木偶操纵者”

在 AWS Lambda/NodeJS 运行时中,我尝试从绝对路径 ( /opt/nodejs/node_modules/puppeteer)导入。

Source 在本地运行良好,但是,一旦与 Webpack/serverless-webpack 捆绑并在 AWS Lambda 中运行,就会require('puppeteer')导致:

{"errorMessage":"Cannot find module 'puppeteer'","errorType":"Error","stackTrace":["webpackMissingModule (/var/task/src/render/handler.js:643:89)","/var/task/src/render/handler.js:643:173","next (native)","step (/var/task/src/render/handler.js:608:191)","/var/task/src/render/handler.js:608:361"]}
Run Code Online (Sandbox Code Playgroud)

我检查过:

  • AWS Lambda 层安装在/opt.
  • 路径/opt/nodejs/node_modules/puppeteer确实存在。
  • NODE_PATH 正确包括 /opt/nodejs/node_modules

node.js webpack aws-lambda serverless-framework serverless-webpack-plugin

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

从无服务器功能中获取 SQS URL?

我正在构建一个无服务器应用程序,它在资源中定义了一个 SQS 队列,如下所示:

resources:
  Resources:
    TheQueue:
      Type: "AWS:SQS:Queue"
      Properties:
        QueueName: "TheQueue"
Run Code Online (Sandbox Code Playgroud)

我想从其中一个函数中向这个队列发送消息。如何从函数内部访问 URL?我想把它放在这里:

const params = {
    MessageBody: 'message body here',
    QueueUrl: 'WHATS_THE_URL_HERE',
    DelaySeconds: 5
};
Run Code Online (Sandbox Code Playgroud)

amazon-sqs serverless-framework serverless

9
推荐指数
1
解决办法
2593
查看次数