标签: serverless

在生产中禁用 sls 插件(每个阶段有不同的插件?)

我的插件有问题serverless-offline。我希望它只能在本地开发(开发阶段)时访问,而不能在任何其他阶段访问

我的serverless.yml看起来像这样:

service: foo
provider:
  # ...
  stage: dev

plugins:
  - serverless-offline

custom:
  stage: "${opt:stage, self:provider.stage}"
  # ...
Run Code Online (Sandbox Code Playgroud)

它工作正常(在我的本地计算机上)

我尝试过这个解决方案(将插件作为自定义变量传递),但它不起作用

service: foo
provider:
  # ...
  stage: dev

custom:
  stage: "${opt:stage, self:provider.stage}"
  plugins:
    dev:
      - serverless-offline
  # ...

plugins: ${self:custom.plugins.${self:custom.stage}}
Run Code Online (Sandbox Code Playgroud)

运行时sls offline start它给我一个错误Serverless command "offline" not found


我已将 serverless-offline 包含为devDependencies(package.json) - 在生产中,当插件包含在 serverless.yml 中时,它会给出错误Serverless command "offline" not found

如何解决这种问题(现在我必须在部署之前将其注释掉)?

lambda amazon-web-services serverless

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

为什么多线程在 AWS Lambda 函数中不能完美运行?

public class LambdaFunctionHandler implements RequestHandler<Object, String> {

    @Override
    public String handleRequest(Object input, Context context) {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                System.out.println("Hello");
            }
        }
    Thread thread1 = new Thread(runnable);
    thread1.start();
    Thread thread2 = new Thread(runnable);
    thread2.start();
    Thread thread3 = new Thread(runnable);
    thread3.start();
    Thread thread4 = new Thread(runnable);
    thread4.start();

    }}
Run Code Online (Sandbox Code Playgroud)

我已经正常尝试过,效果很好。但在 lambda 函数上,它将无法正常工作。线程在线程完全执行之前死亡。当调用 return 语句时,它会自动停止线程。

Expected result
Hello
Hello
Hello
Hello


Actual Result 

Hello 
Run Code Online (Sandbox Code Playgroud)

java multithreading amazon-web-services aws-lambda serverless

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

离线 DynamoDB + Serverless + Lambda ResourceNotFoundException

我正在尝试使用无服务器和 DynamoDB 组合一个非常简单的 AWS Lambda。

我创建项目的代码是:

    dynamoDb: DocumentClient

    constructor() {
        this.dynamoDb = new DynamoDB.DocumentClient({region: 'us-east-1'})
    }

    saveFiles(files: File[]): Promise<boolean> {
        return new Promise<boolean>((resolve, reject ) => {
            files.forEach(file => {
                const tableName = process.env.DYNAMODB_TABLE
                this.dynamoDb.put({
                    TableName: tableName,
                    Item: {
                        downloaded: {N : `${file.downloaded ? 1 : 0}`},
                        location: {S: `${file.location}`}
                    }
                }, (error, result) => {
                    if (!!error) {
                        reject(error)
                        return
                    }
                    console.debug(`DB Save result: ${JSON.stringify(result)}`)
                    resolve(true)
                })
            })
        })
    }
Run Code Online (Sandbox Code Playgroud)

错误是:

handler.ts:41
code:"ResourceNotFoundException"
message:"Requested resource not found"
name:"ResourceNotFoundException"
requestId:"2ST4DCE3NJ85UE32OAD6PUMTBJVV4KQNSO5AEMVJF66Q9ASUAAJG" …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-web-services node.js amazon-dynamodb serverless

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

从无服务器上的 Webpack 中排除节点模块

我正在阅读这篇 Medium 文章https://medium.com/@awesome1888/how-to-use-serverless-locally-with-webpack-and-docker-5e268f71715,其中一个项目设置了这些依赖项,

$ npm install serverless serverless-offline serverless-webpack webpack webpack-node-externals babel-loader @babel/core @babel/preset-env @babel/plugin-proposal-object-rest-spread --save-dev
Run Code Online (Sandbox Code Playgroud)

这个serverless.yml文件,

service: my-first-lambda

# enable required plugins, in order to make what we want
plugins:
  - serverless-webpack
  - serverless-offline

# serverless supports different cloud environments to run at.
# we will be deploying and running this project at AWS cloud with Node v8.10 environment
provider:
  name: aws
  runtime: nodejs8.10
  region: eu-central-1
  stage: dev

# here we describe our lambda function …
Run Code Online (Sandbox Code Playgroud)

webpack serverless

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

“消息”错误:“禁止”尝试查询 Apollo Serverless Lambda 服务器

我正在尝试遵循此示例,https://www.apollographql.com/docs/apollo-server/deployment/lambda/创建一个无服务器 GraphQL 服务器,该服务器返回“Hello world”。

根目录基本上只包含两个文件,graphql.js以及serverless.yml

> tree . -I node_modules
.
??? graphql.js
??? package-lock.json
??? package.json
??? serverless.yml
Run Code Online (Sandbox Code Playgroud)

其中,如示例中所示,graphql.js读取

const { ApolloServer, gql } = require('apollo-server-lambda');

const typeDefs = gql`
  type Query {
    hello: String
  }
`;

const resolvers = {
  Query: {
    hello: () => 'Hello world!',
  },
}

const server = new ApolloServer({ typeDefs, resolvers });

exports.graphqlHandler = server.createHandler();
Run Code Online (Sandbox Code Playgroud)

serverless.yml阅读

service: apollo-lambda

provider:
  name: aws
  runtime: nodejs8.10 …
Run Code Online (Sandbox Code Playgroud)

javascript node.js apollo graphql serverless

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

如何在 AWS SAM Cloud-Formation 中使用 Route53 设置自定义域名

原始问题:如何从 SAM Cloud-formation 中的 AWS APIGateway 域名中获取区域域名

编辑:我改变了这个问题,希望能获得更多流量到这个答案,因为它回答了几个问题,而不仅仅是我原来的问题。


当我尝试部署我的堆栈时出现以下错误:

resource DomainName does not support attribute type regionalDomainName in Fn::GetAtt

我的 yml 文件如下所示:

  PublicApi:
    Type: AWS::Serverless::Api
    Properties:
      Name: PublicApi
      ...
      EndpointConfiguration: REGIONAL

  DomainName:
    Type: AWS::ApiGateway::DomainName
    Properties:
      RegionalCertificateArn: "arn:aws:acm:${Region}:XXXXXXXXXXX:certificate/XXXXXXXXXXXXX"
      DomainName: !Sub ${Stage}.${name}
      EndpointConfiguration:
        Types:
          - REGIONAL

  myDNSRecord:
    Type: AWS::Route53::RecordSet
    Properties:
      HostedZoneId : Z1UJRXOUMOOFQ8
      Name: !Sub ${Stage}.${name}
      AliasTarget:
        HostedZoneId: Z1UJRXOUMOOFQ8 
        DNSName: !GetAtt DomainName.regionalDomainName
      Type: A

  UrlMapping:
    Type: AWS::ApiGateway::BasePathMapping
    DependsOn:
      - PublicApi
    Properties:
      DomainName: !Ref DomainName
      RestApiId: !Ref PublicApi
      Stage: !Ref Stage

Run Code Online (Sandbox Code Playgroud)

以下内容来自域名文档 …

yaml amazon-web-services aws-cloudformation serverless aws-sam

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

使用无服务器,如何在 AWS lambda 函数中添加密钥作为环境变量?

我需要使用无服务器和密钥将 AWS lambda 函数部署到文件中的环境变量中。我不想使用 AWS 机密/系统管理器。如何在 serverless.yml 文件中隐藏环境变量?

当我手动上传和部署我的 nodejs AWS lambda 函数时,它能够从环境变量中读取数据并运行。我想使用无服务器而不是手动部署来处理这个问题。

我的无服务器 yml 文件如下:

service: sample-lambda

provider:
  name: aws
  runtime: nodejs10.x

  stage: dev
  region: us-east-2
  apiName: getData
  profile: MYAWS
  timeout: 300
  memorySize: 512

functions:
  getData:
    handler: handler.getData
    name: getData
    description:  API to get data from server
    environment:
      key1: 12345
      key2: abcdef
      server: sample

    events:
     - http:  
         path: getData
         method: post
         cors: true
Run Code Online (Sandbox Code Playgroud)

node.js aws-lambda serverless

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

不同端口上的多个无服务器进程

我有多个无服务器应用程序我使用无服务器离线插件在本地运行它

我正在设置端口

custom:
  serverless-offline:
    httpPort: 4000
Run Code Online (Sandbox Code Playgroud)

另一个无服务器

custom:
  serverless-offline:
    httpPort: 3000
Run Code Online (Sandbox Code Playgroud)

在任何时候,我只能运行其他节目的一项服务:

在端口 3002 上启动无服务器离线 lambda 服务器时出现意外错误:{ 错误:侦听 EADDRINUSE:地址已在使用中

但我没有在任何地方使用 3002 但它显示 3002

这是什么错误?

127.0.0.1:3002

serverless

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

AWS lambda python 多文件应用程序无法从另一个文件导入

我的 AWS lambda 项目具有以下结构:

module
  app.py
  b.py
Run Code Online (Sandbox Code Playgroud)

app.py是我的默认 aws lambda 函数lambda_handler,它工作正常。我决定将所有繁重的计算从它中提取出来以calc实现b.py.

然后,我将它导入到app.py

from module.b import calc
Run Code Online (Sandbox Code Playgroud)

现在,当我在本地运行它时sam local invoke Function --event events/event.json,它会引发一个错误:

{"errorType":"Runtime.ImportModuleError","errorMessage":"无法导入模块'app':没有名为'module'的模块"}

在我看来,当它准备运行代码时,它将文件移动到其他目录,因此导入中断。为了解决这个问题,我尝试使用相对导入:

from .b import calc
Run Code Online (Sandbox Code Playgroud)

但它也引发了一个错误:

{"errorType":"Runtime.ImportModuleError","errorMessage":"无法导入模块'app':尝试相对导入,没有已知的父包"}

如何在 aws lambda 上设置多文件 python 应用程序?

python amazon-web-services aws-lambda serverless

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

错误:未知的对象类型“asyncfunction”

我对 AWS 的无服务器部署有疑问。我对它相当陌生,所以我不确定问题是什么。

我在网上找到了一些解决方案,但都没有奏效,因此任何想法都会被极大地接受。我也知道这里有一个非常相似的问题,但该解决方案不起作用,在询问更多细节后没有人回答,所以我提出了一个新问题。请帮忙!

Error: Unknown object type "asyncfunction"
          at Object._object (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:218:17)
          at Object._function (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:319:14)
          at Object.dispatch (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:185:30)
          at /Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:246:18
          at Array.forEach (<anonymous>)
          at Object._object (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:242:21)
          at Object._function (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:319:14)
          at Object.dispatch (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:185:30)
          at /Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:246:18
          at Array.forEach (<anonymous>)
          at Object._object (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:242:21)
          at Object.dispatch (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:185:30)
          at /Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:246:18
          at Array.forEach (<anonymous>)
          at Object._object (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:242:21)
          at Object.dispatch (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:185:30)
          at /Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:246:18
          at Array.forEach (<anonymous>)
          at Object._object (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:242:21)
          at Object.dispatch (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:185:30)
          at /Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:246:18
          at Array.forEach (<anonymous>)
          at Object._object (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:242:21)
          at Object.dispatch (/Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:185:30)
          at /Users/mick/Desktop/service/api-user-service/node_modules/object-hash/index.js:246:18
          at Array.forEach …
Run Code Online (Sandbox Code Playgroud)

serverless aws-serverless

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