标签: serverless-framework

无服务器框架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
查看次数

在GCP云功能上运行R和包

我一直在使用AWS Lambda通过打包依赖项(CRAN包)并将其与AWS Lambda一起部署来执行一些R代码.与在实例上运行相比,这有助于我在大量数据集上运行一小部分R代码.我在AWS LAMBDA上引用了这篇文章GENOMICS Lambda在Python上使用RPY2执行.

我正在探索在Google Cloud Functions上运行R代码的可能性,因为我使用Big Query来查询某些数据.

我看到Google Cloud Functions现在仅支持NodeJS.从NodeJS执行R脚本的方法很少. NPM Stackoverflow

但我需要打包所有必要的包来运行我的R代码.在AWS上,我通过使用AWS AMI来安装所有R软件包,然后创建一个将部署的Zip.

我想知道是否有人尝试使用Google Cloud功能包运行R代码.

r google-cloud-platform serverless-framework google-cloud-functions

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

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

部署 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
查看次数

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

在 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万
查看次数

如何在 Jest 中为无服务器 Nodejs Lambda 模拟 AWS DynamoDB?

我写了一个 lambda 如下。

处理程序.js

const aws = require('aws-sdk');
const dynamoDb = new aws.DynamoDB.DocumentClient();

const testHandler = async event => {
  // some code
  // ...
  const user = await getUser(userId)
  // ...
  // some code
}

const promisify = foo => new Promise((resolve, reject) => {
  foo((error, result) => {
    if (error) {
      reject(error)
    } else {
      resolve(result)
    }
  })
})

const getUser = (userId) => promisify(callback =>
  dynamoDb.get({
    TableName: 'test-table',
    Key: {
      "PK": `${userId}`,
      "SK": `${userId}`
    }
  }, callback)) …
Run Code Online (Sandbox Code Playgroud)

mocking node.js jestjs aws-lambda serverless-framework

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

在具有多个微服务的 monorepo 中使用 bitbucket 管道进行选择性服务部署

我们有一个无服务器框架项目,在单一存储库中包含不同的微服务。该项目的结构如下所示:

project-root/
|-services/
  |-service1/
    |-handler.py
    |-serverless.yml
  |-service2/
  ...
  |-serviceN/
...
|-bitbucket-pipelines.yml
Run Code Online (Sandbox Code Playgroud)

如您所见,每个服务都有自己的部署文件(serverless.yml)。

我们只想部署在推送/合并中已修改的服务,并且由于我们使用的是 bitbucket-pipelines,所以我们更喜欢使用其功能来实现此目标。

经过一些研究后,我们发现了changesets可以限制目录中已更改文件的步骤的属性。因此,对于每项服务,我们可以在 bitbucket-pipelines.yml 中添加如下内容:

- step:
   name: step1
   script:
      - echo "Deploy service 1"
      - ./deploy service1
   condition:
      changesets:
         includePaths:
            # only files directly under service1 directory
            - "service1/**"
Run Code Online (Sandbox Code Playgroud)

这看起来是一个完美的匹配,但这种方法的问题是我们必须为存储库中的每个服务编写一个步骤,并且如果我们添加更多服务,我们将不得不添加更多步骤,这会影响可维护性和可读性。

有什么方法可以for使用参数化步骤进行循环,其中输入参数是服务名称?

另一方面,我们可以制作一个自定义脚本来处理条件并让部署本身检测更改。即使我们更喜欢 bitbucket-native 方法,我们也愿意接受其他选择;在脚本中执行此操作的最佳方法是什么?

continuous-integration bitbucket continuous-deployment serverless-framework bitbucket-pipelines

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

从不同事件触发的 lambda 的打字稿语法

使用无服务器框架,我定义了一个 lambda,可以每小时触发一次或通过 SNS 触发

  ...
  functions: {
    fooAction: {
      handler: 'handler.fooAction',
      events: [
        {
          schedule: 'rate(1 hour)',
        },
        {
          sns: {
            topicName: 'fooTopic',
          },
        },
      ],
    },
   ...
  }
  ...
Run Code Online (Sandbox Code Playgroud)

定义函数时正确的打字稿语法是什么fooAction

我努力了

import { SNSHandler, ScheduledHandler} from 'aws-lambda';
...
export const fooAction: ScheduledHandler | SNSHandler = async (evt) => { ... };
Run Code Online (Sandbox Code Playgroud)

evt决心any

amazon-sns typescript aws-lambda serverless-framework aws-event-bridge

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

如何解决Serverless框架3中的授权者问题?

当我使用 Serverless Framework 2 时,我定义了授权者,如下所示。

sample:
  handler: sample.handler
  events:
    - http:
        path: sample
        method: get
        cors: true
        authorizer: verify-token
Run Code Online (Sandbox Code Playgroud)

但无服务器框架 3 不支持它。现在,我收到以下错误。

Incorrect type. Expected "Aws.HttpAuthorizer".yaml-schema: Serverless Framework Configuration
Run Code Online (Sandbox Code Playgroud)

我查看了他们已弃用的文档但我找不到解决方案。如何解决这个问题?

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

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

为什么AWS Lambda CFN S3响应在删除事件时返回403?

我正在使用无服务器来部署我使用自定义资源迁移RDS数据库的应用程序.

我部署时一切正常,但是当我删除堆栈后一小时后自定义资源超时,并显示消息"自定义资源无法在预期时间内稳定".对预先签名的AWS S3 URL的请求将返回403错误代码AccessDenied.

我的第一个发送的,成功的响应主体到预先签名的URL(在创建时):

{
    "Status": "SUCCESS",
    "RequestId": "bd487606-8017-49f2-99af-b29b2bbad40b",
    "LogicalResourceId": "SheltersDBMigrationTrigger",
    "StackId": "arn:aws:cloudformation:us-east-1:848139458219:stack/update-shelters-dev/c08a80e0-2e4e-11e9-87a6-124d1eab42ba",
    "PhysicalResourceId": "DB_MIGRATION"
}
Run Code Online (Sandbox Code Playgroud)

我的第二个发送,失败的响应正文到预先签名的URL(删除时):

{
    "Status": "SUCCESS",
    "RequestId": "2d166d36-7c0c-4848-9eb5-aedaf5e9172c",
    "LogicalResourceId": "SheltersDBMigrationTrigger",
    "StackId": "arn:aws:cloudformation:us-east-1:848139458219:stack/update-shelters-dev/c08a80e0-2e4e-11e9-87a6-124d1eab42ba",
    "PhysicalResourceId": "DB_MIGRATION"
}
Run Code Online (Sandbox Code Playgroud)

lambda.go:

func handler(ctx context.Context, event cfn.Event) (rid string, data map[string]interface{}, err error) {
  rid = "DB_MIGRATION"

  if event.RequestType != cfn.RequestCreate {
    return
  }

  db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@(%s)/", os.Getenv("DB_MASTER_USER"), os.Getenv("DB_MASTER_PASSWORD"), os.Getenv("DB_ADDRESS")))
  if err != nil {
    panic(err)
  }
  defer db.Close()

  defer func() …
Run Code Online (Sandbox Code Playgroud)

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

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