我使用以下NPM命令安装了无服务器框架
npm install -g serverless
Run Code Online (Sandbox Code Playgroud)
当我尝试sls在Powershell中运行无服务器命令时,我得到一个奇怪的结果,提到"cmdlet Select-string".
sls --version
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决这个问题吗?
我一直在使用AWS Lambda通过打包依赖项(CRAN包)并将其与AWS Lambda一起部署来执行一些R代码.与在实例上运行相比,这有助于我在大量数据集上运行一小部分R代码.我在AWS LAMBDA上引用了这篇文章GENOMICS Lambda在Python上使用RPY2执行.
我正在探索在Google Cloud Functions上运行R代码的可能性,因为我使用Big Query来查询某些数据.
我看到Google Cloud Functions现在仅支持NodeJS.从NodeJS执行R脚本的方法很少. NPM Stackoverflow
但我需要打包所有必要的包来运行我的R代码.在AWS上,我通过使用AWS AMI来安装所有R软件包,然后创建一个将部署的Zip.
我想知道是否有人尝试使用Google Cloud功能包运行R代码.
r google-cloud-platform serverless-framework google-cloud-functions
部署 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
在 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
我写了一个 lambda 如下。
处理程序.js
const aws = require('aws-sdk');
const dynamoDb = new aws.DynamoDB.DocumentClient();
const testHandler = async event => {
// some code
// ...
const user = await getUser(userId)
// ...
// some code
}
const promisify = foo => new Promise((resolve, reject) => {
foo((error, result) => {
if (error) {
reject(error)
} else {
resolve(result)
}
})
})
const getUser = (userId) => promisify(callback =>
dynamoDb.get({
TableName: 'test-table',
Key: {
"PK": `${userId}`,
"SK": `${userId}`
}
}, callback)) …Run Code Online (Sandbox Code Playgroud) 我们有一个无服务器框架项目,在单一存储库中包含不同的微服务。该项目的结构如下所示:
project-root/
|-services/
|-service1/
|-handler.py
|-serverless.yml
|-service2/
...
|-serviceN/
...
|-bitbucket-pipelines.yml
Run Code Online (Sandbox Code Playgroud)
如您所见,每个服务都有自己的部署文件(serverless.yml)。
我们只想部署在推送/合并中已修改的服务,并且由于我们使用的是 bitbucket-pipelines,所以我们更喜欢使用其功能来实现此目标。
经过一些研究后,我们发现了changesets可以限制目录中已更改文件的步骤的属性。因此,对于每项服务,我们可以在 bitbucket-pipelines.yml 中添加如下内容:
- step:
name: step1
script:
- echo "Deploy service 1"
- ./deploy service1
condition:
changesets:
includePaths:
# only files directly under service1 directory
- "service1/**"
Run Code Online (Sandbox Code Playgroud)
这看起来是一个完美的匹配,但这种方法的问题是我们必须为存储库中的每个服务编写一个步骤,并且如果我们添加更多服务,我们将不得不添加更多步骤,这会影响可维护性和可读性。
有什么方法可以for使用参数化步骤进行循环,其中输入参数是服务名称?
另一方面,我们可以制作一个自定义脚本来处理条件并让部署本身检测更改。即使我们更喜欢 bitbucket-native 方法,我们也愿意接受其他选择;在脚本中执行此操作的最佳方法是什么?
continuous-integration bitbucket continuous-deployment serverless-framework bitbucket-pipelines
使用无服务器框架,我定义了一个 lambda,可以每小时触发一次或通过 SNS 触发
...
functions: {
fooAction: {
handler: 'handler.fooAction',
events: [
{
schedule: 'rate(1 hour)',
},
{
sns: {
topicName: 'fooTopic',
},
},
],
},
...
}
...
Run Code Online (Sandbox Code Playgroud)
定义函数时正确的打字稿语法是什么fooAction?
我努力了
import { SNSHandler, ScheduledHandler} from 'aws-lambda';
...
export const fooAction: ScheduledHandler | SNSHandler = async (evt) => { ... };
Run Code Online (Sandbox Code Playgroud)
但evt决心any。
amazon-sns typescript aws-lambda serverless-framework aws-event-bridge
当我使用 Serverless Framework 2 时,我定义了授权者,如下所示。
sample:
handler: sample.handler
events:
- http:
path: sample
method: get
cors: true
authorizer: verify-token
Run Code Online (Sandbox Code Playgroud)
但无服务器框架 3 不支持它。现在,我收到以下错误。
Incorrect type. Expected "Aws.HttpAuthorizer".yaml-schema: Serverless Framework Configuration
Run Code Online (Sandbox Code Playgroud)
我查看了他们已弃用的文档但我找不到解决方案。如何解决这个问题?
我正在使用无服务器来部署我使用自定义资源迁移RDS数据库的应用程序.
我部署时一切正常,但是当我删除堆栈后一小时后自定义资源超时,并显示消息"自定义资源无法在预期时间内稳定".对预先签名的AWS S3 URL的请求将返回403错误代码AccessDenied.
我的第一个发送的,成功的响应主体到预先签名的URL(在创建时):
{
"Status": "SUCCESS",
"RequestId": "bd487606-8017-49f2-99af-b29b2bbad40b",
"LogicalResourceId": "SheltersDBMigrationTrigger",
"StackId": "arn:aws:cloudformation:us-east-1:848139458219:stack/update-shelters-dev/c08a80e0-2e4e-11e9-87a6-124d1eab42ba",
"PhysicalResourceId": "DB_MIGRATION"
}
Run Code Online (Sandbox Code Playgroud)
我的第二个发送,失败的响应正文到预先签名的URL(删除时):
{
"Status": "SUCCESS",
"RequestId": "2d166d36-7c0c-4848-9eb5-aedaf5e9172c",
"LogicalResourceId": "SheltersDBMigrationTrigger",
"StackId": "arn:aws:cloudformation:us-east-1:848139458219:stack/update-shelters-dev/c08a80e0-2e4e-11e9-87a6-124d1eab42ba",
"PhysicalResourceId": "DB_MIGRATION"
}
Run Code Online (Sandbox Code Playgroud)
lambda.go:
func handler(ctx context.Context, event cfn.Event) (rid string, data map[string]interface{}, err error) {
rid = "DB_MIGRATION"
if event.RequestType != cfn.RequestCreate {
return
}
db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@(%s)/", os.Getenv("DB_MASTER_USER"), os.Getenv("DB_MASTER_PASSWORD"), os.Getenv("DB_ADDRESS")))
if err != nil {
panic(err)
}
defer db.Close()
defer func() …Run Code Online (Sandbox Code Playgroud) amazon-s3 amazon-web-services aws-cloudformation aws-lambda serverless-framework
aws-lambda ×4
node.js ×4
serverless ×2
amazon-s3 ×1
amazon-sns ×1
bitbucket ×1
jestjs ×1
mocking ×1
powershell ×1
r ×1
terraform ×1
typescript ×1
webpack ×1