我想在为 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
在执行时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) 我正在编写一个通过 HTTP(即 API 网关集成)调用的 AWS Lambda。
我希望将该 API 用作 GitHub 网络钩子。当 webhook/lambda 被调用时,我希望立即发送 HTTP 响应,并且 lambda 继续执行(因为它可能需要一些时间)。
这类似于调用 lambda 时的 Event调用类型:
是否可以将该调用类型与 HTTP 集成一起使用?
注意:我使用的是serverless.com框架。
我有一个应该创建 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
我正在尝试使用 AWS lambda、API 网关和 Dynamo 作为数据存储来实现具有 GET 和 PUT API 的用户服务
GET API 将获取给定 userId 的数据,PUT 将更新给定 userId 的用户详细信息
我的要求是
由于 GET API 的吞吐量很大,我需要缓存 API 响应,以便减少后续请求中的响应时间。缓存还需要有一个 TTL。
对同一个 userId 的任何成功 put 请求都会使缓存无效,随后的 GET 请求将从 DB 中获取并再次缓存它
我可能会使用 redis 集群进行缓存。但这可能会增加额外的 VPC 调用开销
题:
amazon-dynamodb aws-lambda aws-api-gateway serverless-framework serverless
我正在使用无服务器框架在 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) 我正在尝试配置一个由无服务器生成的 s3 存储桶,以限制putIP 访问。
查看 AWS 的此文档,我假设我想要的是,PolicyDocument但我也看到AssumeRolePolicyDocument. 有时它们似乎结合使用。
这两个属性有什么区别?
我有一个 node_modules 文件夹,我只想排除几个模块,但在打包时应该添加其他模块。我该怎么做。还有如何使用正则表达式排除某些模块。就像在我的 node_modules 中,我创建了以 md-request、md-models 等开头的自定义模块,所以我只想从打包中排除这些模块。提前致谢。
amazon-web-services node.js aws-lambda serverless-framework serverless
我正在为 lambda 项目使用无服务器框架。我们需要能够直接访问 cloudformation 以满足我们对其他项目的标准。如何查看从 编译的完整 CloudFormation serverless.yml?
我打开这个问题是因为似乎没有关于此的文档,所以我想在反复试验中浪费大量时间后提供答案。
作为背景,无服务器框架 [允许从 AWS SSM Parameter Store 加载纯文本和 SecureString 值]。1
执行无服务器部署时,访问和加载这些 SSM Parameter Store 值需要什么权限?
amazon-iam aws-lambda serverless-framework serverless aws-serverless