我正在使用API Gateway和Lambda(无服务器框架)构建无服务器应用程序,并试图找到一种方法来提供应用程序API的多个版本。
这是我能想到的方式。
无服务器
handler: list.handler
events:
- http:
path: {ver}/list
method: get
cors: true
authorizer: aws_iam
Run Code Online (Sandbox Code Playgroud)
list.js
export async function handler(event, context, callback) {
const ver = event.pathParameters.ver;
if (ver >= '1.0') {
return fooUtil.getNo(ver);
} else {
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
fooUtil.js
export function getNo(ver) {
if (ver >= 1.3) {
return 3;
} else {
return 2;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我需要以这种方式将“ ver”参数传递给所有函数。
有什么方法可以更容易(并且可以测试)从如下所示的请求中获取版本号?
fooUtil.js
export function getNo() {
if (session.getValue('ver') >= 1.3) {
}
}
Run Code Online (Sandbox Code Playgroud)
我不希望划分存储库或git分支来管理多个版本。
amazon-web-services aws-lambda aws-api-gateway serverless-framework serverless-architecture
我目前正在使用 SendGrid 从许多无服务器 Node.js Lambda 函数发送电子邮件,并计划从 SendGrid 转移到 SES(因为价格合理)。
SendGrid 的速率限制如此之高,以至于通过某些 lambda 函数同时使用 for 循环向用户发送电子邮件永远不会造成问题。但SES的速率限制较低(我的例子是每秒50封电子邮件),并且会出现超出最大发送速率限制的错误。
如何才能在不超过速率限制的情况下尽可能快地发送电子邮件?
我当前的计划是通过许多 lambda 函数向 SQS 队列发送电子邮件请求,并通过 1 个不停运行的 Lambda 函数接收 SQS 消息以发送电子邮件。但我不知道如何控制向SES发送请求的速度。
我正在使用 Laravel 5.2 并希望缓存 eloquent 结果,但它不会在缓存中存储空结果(= null)。有什么办法吗?
return Cache::remember("cacheKey_{$id}", 120, function () use ($id) {
return FooModel::where(...)->first();
});
Run Code Online (Sandbox Code Playgroud)
当结果不为空时,缓存工作正常。
我正在使用 API Gateway 和 Lambda 构建一个无服务器 Web 应用程序,它限制 Cognito 和 IAM 对注册用户的 API 调用。我们有个人/企业用户,希望对特定企业用户设置额外的访问限制。
所以就有了如下的用户组。
控制这种访问限制的有效方法是什么?
我正在使用 Laravel 5.2,当我插入模型时,主键 id 列以某种方式重置为 0。发生的事情如下。
$fooModel = new FooModel();
$fooModel->foo_id = 123;
$fooModel->foo_title = 'foo';
echo($fooModel->foo_id); //123
$fooModel->save();
echo($fooModel->foo_id); //0
Run Code Online (Sandbox Code Playgroud)
数据成功插入到 MySQL 数据库,但 foo_id 列在 PHP 中重置为 0。如果它是一个自动增量列,我知道它会被下一个序列值更新,但这个列不是。有什么我想念的吗?
class FooModel extends Model
{
protected $table = 'foo_table';
protected $primaryKey = 'foo_id';
protected $guarded = ['foo_id'];
protected $casts = [
'foo_id' => 'integer'
];
}
Run Code Online (Sandbox Code Playgroud) aws-lambda ×2
eloquent ×2
laravel ×2
laravel-5 ×2
amazon-iam ×1
amazon-ses ×1
aws-sdk ×1
caching ×1
email ×1
node.js ×1