标签: serverless-framework

如何在无服务器 yaml 配置中转义 $ 登录?

我想在为 api 网关使用阶段变量时转义 $ 符号。

当我尝试部署时出现以下错误。

变量 stageVariables.capabilitySecurityUrl 的变量引用语法无效。您只能引用环境变量、选项和文件。您可以查看我们的文档以获取更多信息。

我尝试了以下选项,但不起作用

1) 使用不带引号的 Uri:https://${stageVariables.capabilitySecurityUrl}

2) 使用引号 Uri: "https://${stageVariables.capabilitySecurityUrl}"

3) 从文件访问变量

./stageVariables.json
{
   "capabilitySecurityUrl":"https://${stageVariables.capabilitySecurityUrl}"
}

./serverless.yml
${file(./stageVariables.json):capabilitySecurityUrl}
Run Code Online (Sandbox Code Playgroud)

有什么帮助吗?

yaml amazon-web-services aws-api-gateway serverless-framework

6
推荐指数
1
解决办法
1194
查看次数

如何调试无服务器部署 - 在打包期间挂起

在执行时sls deploy -s MY_STAGE -v,无服务器在打包期间停止:

...
Serverless: Invoke deploy
Serverless: Invoke package
Serverless: Invoke aws:common:validate
Serverless: Invoke aws:common:cleanupTempDir
Serverless: Packaging service...
Run Code Online (Sandbox Code Playgroud)

我使用verbose,并设置SLS_DEBUG=*为获取更多信息。但是,这并没有显示包装发生了什么以及它为什么等待/挂起......

我还能做些什么来检查导致包装挂起的原因?

更多细节:

实际导致问题的包是puppeteer. 如果我在代码中注释掉:

// const puppeteer = require('puppeteer');
Run Code Online (Sandbox Code Playgroud)

这有帮助并且sls deploy有效。但是,我想使用puppeteer.

此外,我还设置了PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1- 这没有任何区别。

.serverless文件夹中,除了使用puppeteer.

如果我这样做,sls package -s MY_STAGE它会挂在同一个地方。

我的环境:

Your Environment Information -----------------------------
   OS:                     win32
   Node Version:           8.9.4
   Serverless Version:     1.26.1
Run Code Online (Sandbox Code Playgroud)

node.js aws-lambda serverless-framework puppeteer

6
推荐指数
0
解决办法
1772
查看次数

如何设置要通过 HTTP/API 网关异步调用的 AWS Lambda?

我正在编写一个通过 HTTP(即 API 网关集成)调用的 AWS Lambda。

我希望将该 API 用作 GitHub 网络钩子。当 webhook/lambda 被调用时,我希望立即发送 HTTP 响应,并且 lambda 继续执行(因为它可能需要一些时间)。

这类似于调用 lambda 时的 Event调用类型

  • 事件:开火即忘
  • RequestResponse:等待响应

是否可以将该调用类型与 HTTP 集成一起使用?

注意:我使用的是serverless.com框架。

amazon-web-services aws-lambda serverless-framework

6
推荐指数
1
解决办法
1219
查看次数

使用无服务器框架在 Python AWS Lambda 函数上安装 Latex

我有一个应该创建 PDF 报告的 Python Lambda 函数。我尝试添加一个自定义 Dockerfile 以在 Lambda 上安装 Latex 类似于https://github.com/samoconnor/lambdalatex 1

但该功能无法找到已安装的 Latex 文件。(Dockerfile末尾复制的文件template.tex就在那里)

我的 serverless.yaml:

plugins:
    - serverless-python-requirements

custom:
    pythonRequirements:
   dockerizePip: non-linux
   dockerFile: Dockerfile
Run Code Online (Sandbox Code Playgroud)

Dockerfile:

FROM lambci/lambda:build-python3.6
# The TeXLive installer needs md5 and wget.
RUN yum -y install perl-Digest-MD5 && \
    yum -y install wget \
    yum -y install latexmk

RUN mkdir /var/src
WORKDIR /var/src

# Download TeXLive installer.
ADD http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz /var/src/
#COPY install-tl-unx.tar.gz /var/src/

# Minimal TeXLive configuration profile.
COPY texlive.profile /var/src/

# Intstall …
Run Code Online (Sandbox Code Playgroud)

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

6
推荐指数
0
解决办法
436
查看次数

无服务器应用程序中的缓存失效

我正在尝试使用 AWS lambda、API 网关和 Dynamo 作为数据存储来实现具有 GET 和 PUT API 的用户服务

GET API 将获取给定 userId 的数据,PUT 将更新给定 userId 的用户详细信息

我的要求是

  • 由于 GET API 的吞吐量很大,我需要缓存 API 响应,以便减少后续请求中的响应时间。缓存还需要有一个 TTL。

  • 对同一个 userId 的任何成功 put 请求都会使缓存无效,随后的 GET 请求将从 DB 中获取并再次缓存它

  • 我可能会使用 redis 集群进行缓存。但这可能会增加额外的 VPC 调用开销

题:

  • 我正在使用 AWS lambda 使用无服务器框架进行实现。我应该如何设计缓存层?
  • 可能的解决方案包括 API 网关缓存 - 但在这种方法中,我将如何在更新请求的情况下使缓存无效

amazon-dynamodb aws-lambda aws-api-gateway serverless-framework serverless

6
推荐指数
1
解决办法
2072
查看次数

在 api 网关前端的无服务器部署 lambda 中获取原始标头的正确方法是什么?

我正在使用无服务器框架在 api 网关后面部署一个简单的 lambda(用 node/express 编写)...

GET我可以看到origin标题,但在POST我不能 - 它没有传递到我的 lambda 函数中!

任何人都知道为什么不这样做以及如何让它通过?

背景:

我确实注意到在POST原点中似乎附加到日志中的查询字符串:

originalUrl: '/dev/endpoint?Origin=MY%20ORIGIN%20HERE',
Run Code Online (Sandbox Code Playgroud)

因此,我可以从查询字符串值中提取源,但我想知道这是否是在无服务器框架上执行操作的正确方法,还是应该设置一些内容以允许 API 网关通过POST类似方式发送源它GET呢?为什么这两个动词的行为不同?

我的代码/配置:

serverless.yml 中的函数定义如下所示:

myGetFunction:
  handler: lambda/index.handler
  events:
    - http:
        path: /endpoint
        method: get
        cors: true
myPostFunction:
  handler: lambda/index.handler
  events:
    - http:
        path: /endpoint
        method: post
        cors: true
Run Code Online (Sandbox Code Playgroud)

如果我只是将以下内容放入我的 index.handler 中:

app.use((req, res) => {
  console.log('LOG REQUEST', req)
  res.send('interesting')
})
Run Code Online (Sandbox Code Playgroud)

在我的处理程序函数中,我只想获取发送的原始请求标头。在GET它的方便:CloudWatch的日志显示,它是在头对象中的GET请求提供:

headers: 
  {
    accept: '*/*',
    'accept-encoding': 'gzip, deflate', …
Run Code Online (Sandbox Code Playgroud)

aws-lambda aws-api-gateway serverless-framework

6
推荐指数
1
解决办法
2582
查看次数

PolicyDocument 与 AssumeRolePolicyDocument

我正在尝试配置一个由无服务器生成的 s3 存储桶,以限制putIP 访问。

查看 AWS 的此文档,我假设我想要的是,PolicyDocument但我也看到AssumeRolePolicyDocument. 有时它们似乎结合使用。

这两个属性有什么区别?

aws-lambda serverless-framework

6
推荐指数
1
解决办法
1792
查看次数

在无服务器 yml 中从同一文件夹中包含排除包

我有一个 node_modules 文件夹,我只想排除几个模块,但在打包时应该添加其他模块。我该怎么做。还有如何使用正则表达式排除某些模块。就像在我的 node_modules 中,我创建了以 md-request、md-models 等开头的自定义模块,所以我只想从打包中排除这些模块。提前致谢。

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

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

无服务器框架:输出编译的 CloudFormation

我正在为 lambda 项目使用无服务器框架。我们需要能够直接访问 cloudformation 以满足我们对其他项目的标准。如何查看从 编译的完整 CloudFormation serverless.yml

aws-cloudformation serverless-framework serverless

6
推荐指数
1
解决办法
1491
查看次数

无服务器框架 - 使用 AWS SSM Parameter Store 需要什么权限?

我打开这个问题是因为似乎没有关于此的文档,所以我想在反复试验中浪费大量时间后提供答案。

作为背景,无服务器框架 [允许从 AWS SSM Parameter Store 加载纯文本和 SecureString 值]。1

执行无服务器部署时,访问和加载这些 SSM Parameter Store 值需要什么权限?

amazon-iam aws-lambda serverless-framework serverless aws-serverless

6
推荐指数
1
解决办法
3682
查看次数