标签: serverless

无服务器框架 WarmUp 插件未被调用

我尝试将 WarmUp 无服务器插件集成到我的项目中。但是,我相信它不起作用。我在 lambda\xe2\x80\x99s CloudWatch 日志组中没有看到 WarmUp 的调用,并且 lambda 在空闲一段时间后确实需要预热时间。

\n

我的配置如下:

\n
service: ${file(./${env:DEPLOY_FILE_NAME}):service}\n\nprovider:\n  name: aws\n  custom:\n    roleName: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):roleName}\n    profileName: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):profileName}\n    bundle:\n      ignorePackages:\n        - pg-native\n    warmup:\n      enabled: true\n      events:\n        - schedule: rate(5 minutes)\n      prewarm: true\n  plugins:\n    - pluginHandler\n    - serverless-plugin-warmup\n  runtime: nodejs12.x\n  iamRoleStatements:\n    - Effect: 'Allow'\n      Action:\n        - 'lambda:InvokeFunction'\n      Resource:\n      - Fn::Join:\n        - ':'\n        - - arn:aws:lambda\n          - Ref: AWS::Region\n          - Ref: AWS::AccountId\n          - function:${self:service}-${opt:stage, self:provider.stage}-*\n  cfLogs: true\n  stage: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):stage}\n  region: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):region}\n  memorySize: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):memorySize}\n  timeout: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):timeout}\n  keepWarm: false\n  useApigateway: …
Run Code Online (Sandbox Code Playgroud)

aws-lambda serverless-framework serverless

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

我应该在无服务器应用程序中使用 Express.js 吗?

我想知道在无服务器应用程序 (AWS Lambdas) 中使用 Express.js 作为中间件是否是一个好主意?我的担忧来自这样一个事实:在 Express.js 中存在单一功能设置,将来如果有大量请求进来,它将开始限制。我的担忧是否合理,或者我什么都没有动摇。

express aws-lambda serverless

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

在 Cloudflare Workers KV 等分布式数据存储中存储 ReadableStream 的用例有哪些?

Cloudflare 自己的全球分布式数据存储 \xe2\x80\x93 Workers KV \xe2\x80\x93可以接受三种“类型”的数据stringArrayBufferReadableStream

\n

虽然前两者的用例足够清楚,但我正在努力弄清楚存储如何ReadableStream有用。我熟悉这个概念:使用它,您可以随着时间的推移“流式传输”不同的值,但是将其放入数据存储中有何意义?典型场景有哪些?

\n

distributed-computing cloudflare serverless cloudflare-workers

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

AWS CDK - 无法在 Lambda 中承担细粒度授权的角色

我对 AWS 的具体情况相当陌生,所以请原谅我提出一个愚蠢的问题。我一直在寻找答案,但没有找到任何可以回答我的问题的问题。

我正在构建一个项目,并尝试使用此 AWS 教程正确获得权限:https://aws.amazon.com/blogs/apn/partitioning-pooled-multi-tenant-saas-data-with-amazon-动态数据库/

我创建了角色和策略:

const tenantUserRole = new Role(this, "TenantUserRole", {
      assumedBy: new ServicePrincipal("lambda.amazonaws.com"),
    });
table.grantReadWriteData(tenantUserRole);
Run Code Online (Sandbox Code Playgroud)

然后,在我的 Lambda 中,我尝试:

const role = await stsClient.send(
    new AssumeRoleCommand({
      Policy: getPolicy("tenant"),
      RoleArn: process.env.TENANT_ROLE_ARN,
      RoleSessionName: "foo",
    })
  );
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为我在 Lambda 中收到错误:

{ "errorType": "AccessDenied", "errorMessage": "用户:arn:aws:sts::xxx:assumed-role/ProjectStack-createUserServiceRoleB9D8AADE-GRDI6MWXA5MY/ProjectStack-createUserC6ED88E6-K0S95UXTN9MH 无权执行: sts:AssumeRole on资源:arn:aws:iam::xxx:role/ProjectStack-TenantUserRoleB79B8D3A-11N644X7UF0SR","trace":["AccessDenied:用户:arn:aws:sts::xxx:assumed-role/ProjectStack-createUserServiceRoleB9D8AADE-GRDI6MWXA5MY/ProjectStack -createUserC6ED88E6-K0S95UXTN9MH 无权对资源执行:sts:AssumeRole:arn:aws:iam::xxx:role/ProjectStack-TenantUserRoleB79B8D3A-11N644X7UF0SR",

目标是始终根据用户上下文解析权限,那么我应该在 CDK 堆栈中做什么才能使我的所有 Lambda 能够执行必须执行的操作?

amazon-web-services amazon-iam serverless aws-serverless aws-cdk

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

AWS SAM 构建时出现“构建失败”错误

当我运行时出现构建失败错误sam build

错误: PythonPipBuilder:ResolveDependencies - {future==0.18.2(sdist), wrapt==1.12.1(sdist)}

sam amazon-web-services serverless

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

Waiter ChangeSetCreateComplete 失败: Waiter 遇到终端故障状态

我正在学习 CloudFormation 教程,这是我的 AWS CloudFormation 模板:

AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: A starter AWS Lambda function.
Resources:
  helloworldpython3:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: app.lambda_handler
      Runtime: python3.6
      CodeUri: src/
      Description: A starter AWS Lambda function.
      MemorySize: 128
      Timeout: 3
      Environment:
        Variables:
          TABLE_NAME: !Ref Table
          REGION_NAME: !Ref AWS::Region
      Events:
        HelloWorldSAMAPI:
          Type: Api
          Properties:
            Path: /hello
            Method: GET
      Policies:
        - DynamoDBCrudPolicy:
            TableName: !Ref Table

Table:
  Type: AWS::Serverless::SimpleTable
  Properties:
    PrimaryKey:
      Name: greeting
      Type: String
    ProvisionedThroughput:
      ReadCapacityUnits: 1
      WriteCapacityUnits: 1
Run Code Online (Sandbox Code Playgroud)

我可以使用 生成最终模板aws cloudformation package。但是当我尝试使用 …

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

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

我想将 Serverless 版本从 2.41.2 降级到 2.35.0

我错误地在我的电脑上安装了更高版本的无服务器。v2.41.2现在由于v2.35.0一些项目需求,我想将我的无服务器框架版本从 降级到。

我曾尝试做的事情:

我使用 卸载了当前的无服务器框架npm uninstall -g serverless

然后运行这个命令npm install -g serverless@2.35.0

但是当我运行此命令时,serverless --version它仍然在我的电脑上显示版本 2.41.2。

node.js serverless-framework serverless aws-serverless serverless-offline

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

ConflictException:无服务器 AWS 中该域名的基本路径已存在

我使用 AWS lambda 和 NodeJS 环境构建了应用程序。对于部署目的,我使用无服务器框架。现在,当我尝试使用带有 Nodejs 模板的无服务器框架将我的服务部署到 AWS 时。它已部署到服务器,但未将自定义域名映射到我的服务。之前我映射了它,之后自动映射了我的域名。现在,当我尝试重新部署服务时,它会抛出无法映射客户域的错误。我已附上下面的错误日志。你可以检查一下。您能帮我解决这个问题吗?

以下是我的命令的输出sls deploy -s local

Serverless: Running "serverless" installed locally (in service node_modules)
Serverless: Load command interactiveCli
Serverless: Load command config
Serverless: Load command config:credentials
Serverless: Load command config:tabcompletion
Serverless: Load command config:tabcompletion:install
Serverless: Load command config:tabcompletion:uninstall
Serverless: Load command create
Serverless: Load command install
Serverless: Load command package
Serverless: Load command deploy
Serverless: Load command deploy:function
Serverless: Load command deploy:list
Serverless: Load command deploy:list:functions
Serverless: Load command invoke …
Run Code Online (Sandbox Code Playgroud)

node.js serverless-framework serverless-architecture serverless aws-serverless

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

无服务器 lambda 全局环境变量

我正在使用无服务器,并且试图弄清楚如何重写此 serverless.yml 文件,这样我就不会重复每个函数的环境变量。有没有办法全局设置环境变量?

service: test-api
frameworkVersion: ">=1.2.0 <2.0.0"
provider:
  name: aws
  runtime: nodejs12.x
  timeout: 30
  stage: dev
  memorysize: 2048
  region: us-east-2
  logRetentionInDays: 21

functions:
  doCreate:
    handler: functions/do-create.handler
    environment:
      DB_PORT: ${ssm:/${self:custom.stage}/db_port}
      DB_URL: ${ssm:/${self:custom.stage}/db_url}
      API_KEY: ${ssm:/${self:custom.stage}/api_key}
      ENV: "${self:custom.stage}"
      SEARCH_ARN: ${ssm:/${self:custom.stage}/search_arn}
  doUpdate:
    handler: functions/do-update.handler
    environment:
      DB_PORT: ${ssm:/${self:custom.stage}/db_port}
      DB_URL: ${ssm:/${self:custom.stage}/db_url}
      API_KEY: ${ssm:/${self:custom.stage}/api_key}
      ENV: "${self:custom.stage}"
      SEARCH_ARN: ${ssm:/${self:custom.stage}/search_arn}
Run Code Online (Sandbox Code Playgroud)

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

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

HTTP API 网关中是否有等效的 REST API 密钥?

使用 REST API(AWS API Gateway v1),我们可以X-API-Key在请求中使用标头并维护 API 密钥来控制对给定端点的访问。

在 AWS 中,如果我转到 API Gateway 并选择 REST API (v1),则在资源下我会看到:API Key Required在 API 密钥下我可以找到我的密钥。

使用serverless它可以像这样配置:

provider:
  apiKeys:
    - my-api-key

functions:
  hello:
    handler: handler.hello
    events:
      - http:
          path: /hello
          method: get
          private: true
Run Code Online (Sandbox Code Playgroud)

但如果我切换到httpApi然后我得到:

Configuration warning at 'functions.hello.events[0].httpApi': unrecognized property 'private'
Run Code Online (Sandbox Code Playgroud)

此外,在 API Gateway 中,在 HTTP API (v2) 下,任何地方都没有 API 密钥。

当我检查文档时,REST API 下有很大一部分关于 API 密钥:https: //www.serverless.com/framework/docs/providers/aws/events/apigateway 但 API Gateway HTTP API 没有任何关于 API 密钥的内容: https: …

rest amazon-web-services aws-api-gateway serverless aws-http-api

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