我试图让无服务器与Elasticache一起工作.我写了一个基于无服务器示例/无服务器基础设施仓库的自定义CloudFormation文件.我设法将Elasticache和Lambda放在一个子网中(使用cli检查).我从输出中检索主机和端口,但每当我尝试连接node-redis时,连接超时.以下是相关部分:
amazon-web-services amazon-elasticache aws-lambda serverless-framework
我使用以下NPM命令安装了无服务器框架
npm install -g serverless
Run Code Online (Sandbox Code Playgroud)
当我尝试sls在Powershell中运行无服务器命令时,我得到一个奇怪的结果,提到"cmdlet Select-string".
sls --version
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决这个问题吗?
部署 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) 我遵循了一个出色的指南(无服务器堆栈),它创建了一个带有反应前端的典型CRUD无服务器基础架构.它正在使用AWS 的无服务器框架.
我不喜欢的是,为了引导设置,有很多手动点击GUI(主要是亚马逊的控制台界面).即,设置不受版本控制,并且不易重现.使用CI/CD进程等扩展它并不容易.在此示例中,需要手动设置以下资源:
从代码构建的唯一资源是无服务器函数(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
我有以下错误.
无服务器:操作失败!
Serverless Error ---------------------------------------
An error occurred: phoneNumberTable - CloudFormation cannot update a stack when a custom-named resource requires replacing. Rename mysite-api-phonenumber-dev and update the stack again…
Run Code Online (Sandbox Code Playgroud)
我尝试删除数据库,看看它是否可以重新创建它,但它仍然给出相同的错误,不会重制数据库?我该怎么办?
我所做的最近在我的serverless.yml文件中更改了以下资源.
phoneNumberTable: #This table is used to track phone numbers used in the system
Type: AWS::DynamoDB::Table
Properties:
TableName: ${self:custom.phoneNumberTable}
AttributeDefinitions: #UserID in this case will be created once and constantly updated as it changes with status regarding the user.
- AttributeName: phoneNumber
AttributeType: S
KeySchema:
- AttributeName: phoneNumber
KeyType: HASH …Run Code Online (Sandbox Code Playgroud) amazon-web-services aws-cloudformation amazon-dynamodb serverless-framework serverless
所以我试图在亚马逊上运行lambda并最终通过测试amazons测试控制台中的lambda来缩小错误.
我得到的错误就是这个.
{
"errorMessage": "Please install mysql2 package manually",
"errorType": "Error",
"stackTrace": [
"new MysqlDialect (/var/task/node_modules/sequelize/lib/dialects/mysql/index.js:14:30)",
"new Sequelize (/var/task/node_modules/sequelize/lib/sequelize.js:234:20)",
"Object.exports.getSequelizeConnection (/var/task/src/twilio/twilio.js:858:20)",
"Object.<anonymous> (/var/task/src/twilio/twilio.js:679:25)",
"__webpack_require__ (/var/task/src/twilio/twilio.js:20:30)",
"/var/task/src/twilio/twilio.js:63:18",
"Object.<anonymous> (/var/task/src/twilio/twilio.js:66:10)",
"Module._compile (module.js:570:32)",
"Object.Module._extensions..js (module.js:579:10)",
"Module.load (module.js:487:32)",
"tryModuleLoad (module.js:446:12)",
"Function.Module._load (module.js:438:3)",
"Module.require (module.js:497:17)",
"require (internal/module.js:20:19)"
]
}
Run Code Online (Sandbox Code Playgroud)
很容易,所以我必须安装mysql2.所以我把它添加到我的package.json文件中.
{
"name": "test-api",
"version": "1.0.0",
"description": "",
"main": "handler.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 0"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"aws-sdk": "^2.153.0",
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2", …Run Code Online (Sandbox Code Playgroud) amazon-web-services amazon-rds aws-lambda serverless-framework node-mysql2
我在后端使用无服务器框架.如何实现请求验证?(不想在lambda函数中编写验证).
validation amazon-web-services aws-lambda aws-api-gateway serverless-framework
我正在尝试使用无服务器创建一个 S3 存储桶,它可以工作,但是为了操作其中的文件,我需要一个存储桶策略。我很难理解在何处以及如何添加使用在第一次无服务器部署时创建的生成的 S3bucket 名称的策略
## serverless.yml##
service: vcc-nametags-api
# Use the serverless-webpack plugin to transpile ES6
plugins:
- serverless-webpack
- serverless-offline
- serverless-ding
# serverless-webpack configuration
# Enable auto-packing of external modules
custom:
# Our stage is based on what is passed in when running serverless
# commands. Or fallsback to what we have set in the provider section.
stage: ${opt:stage, self:provider.stage}
# Set our DynamoDB throughput for prod and all other non-prod stages.
# Load our webpack …Run Code Online (Sandbox Code Playgroud) 在 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)
我检查过:
/opt./opt/nodejs/node_modules/puppeteer确实存在。NODE_PATH 正确包括 /opt/nodejs/node_modulesnode.js webpack aws-lambda serverless-framework serverless-webpack-plugin
我正在构建一个无服务器应用程序,它在资源中定义了一个 SQS 队列,如下所示:
resources:
Resources:
TheQueue:
Type: "AWS:SQS:Queue"
Properties:
QueueName: "TheQueue"
Run Code Online (Sandbox Code Playgroud)
我想从其中一个函数中向这个队列发送消息。如何从函数内部访问 URL?我想把它放在这里:
const params = {
MessageBody: 'message body here',
QueueUrl: 'WHATS_THE_URL_HERE',
DelaySeconds: 5
};
Run Code Online (Sandbox Code Playgroud) aws-lambda ×4
serverless ×3
node.js ×2
amazon-rds ×1
amazon-s3 ×1
amazon-sqs ×1
node-mysql2 ×1
powershell ×1
terraform ×1
validation ×1
webpack ×1